공부 기록/MySQL

SQL 기본 문법 (2)

도도히히 2025. 11. 12. 10:40

1. 데이터 조작 (INSERT, UPDATE, DELETE)

  • INSERT (삽입): 테이블에 새 데이터를 삽입
    • 기본: INSERT INTO 테이블 VALUES (값1, 값2, ...);
    • 열 지정: INSERT INTO 테이블 (열1, 열2) VALUES (값1, 값2);
    • 대량 삽입: INSERT INTO 테이블 SELECT ... 구문을 사용하여 다른 테이블의 데이터를 한 번에 삽입할 수 있음
    • 테이블 생성 + 삽입: CREATE TABLE 새테이블 (SELECT ...)을 사용하면 SELECT 결과로 새 테이블을 바로 생성할 수 있음
  • UPDATE (수정): 기존 데이터를 수정
    • 구문: UPDATE 테이블 SET 열1=값1, 열2=값2 WHERE 조건;
    • WHERE 절을 생략하면 테이블의 모든 행이 수정됨
  • DELETE (삭제): 데이터를 행 단위로 삭제
    • 구문: DELETE FROM 테이블 WHERE 조건;
    • WHERE 절을 생략하면 테이블의 모든 데이터가 삭제됨
    • LIMIT 절을 사용해 삭제할 행 수를 제한할 수 있음

2. MySQL 데이터 형식

  • 숫자 형식:
    • 정수: TINYINT(1바이트), SMALLINT(2바이트), INT(4바이트), BIGINT(8바이트)
    • 실수: FLOAT(4바이트), DOUBLE(8바이트)
    • 정밀 소수: DECIMAL(m, d) (전체 m자리 중 소수점 이하 d자리)
  • 문자 형식:
    • CHAR(n): 고정 길이 문자열 (1~255)
    • VARCHAR(n): 가변 길이 문자열 (1~65535)
    • TEXT / BLOB: 매우 긴 텍스트(문자) 또는 바이너리 데이터(이미지, 파일 등)를 저장

3. 내장 함수

  • 형 변환 함수:
    • CAST(expression AS 데이터형식)
    • CONVERT(expression, 데이터형식)
    • 예: SELECT CAST(AVG(amount) AS SIGNED INTEGER) ... (평균값을 정수로 변환)
  • 문자열 함수:
    • ASCII(문자) , CHAR(숫자): 아스키코드 변환
    • LENGTH(문자열): 바이트 수 (UTF-8에서 한글은 3바이트)
    • CHAR_LENGTH(문자열): 문자 수
    • CONCAT(...) , CONCAT_WS(구분자, ...): 문자열 연결
    • LOWER() , UPPER(): 대소문자 변환
    • LEFT(문자열, 길이) , RIGHT(문자열, 길이): 문자열 자르기
  • 수학 함수:
    • ABS(숫자): 절댓값
    • CEILING(숫자): 올림
    • FLOOR(숫자): 내림
    • ROUND(숫자): 반올림
    • RAND(): 0 이상 1 미만의 난수
    • TRUNCATE(숫자, 정수): 소수점 기준 버림
  • 시스템 함수:
    • SLEEP(초): 지정된 시간(초) 동안 실행을 멈춤
    • VERSION(): MySQL 버전을 반환

4. 조인 (JOIN)

두 개 이상의 테이블을 묶어 하나의 결과 테이블로 만드는 기능

cookDB의 userTBL (회원)과 buyTBL (구매)처럼 '일대다' 관계 테이블을 연결할 때 유용

  • INNER JOIN (내부 조인): 두 테이블에 모두 공통으로 존재하는 데이터만 결합
    • 구문: ... FROM 테이블1 INNER JOIN 테이블2 ON 테이블1.열 = 테이블2.열
    • 테이블 이름이 길 경우 userTBL U, buyTBL B와 같이 별칭(Alias)을 사용하면 쿼리가 간결해짐
    • DISTINCT와 함께 사용하면 '구매 이력이 있는 회원 목록'을 중복 없이 조회할 수 있음
  • OUTER JOIN (외부 조인): 조인 조건을 만족하지 않는(짝이 없는) 행까지 포함하여 출력
    • LEFT OUTER JOIN: 왼쪽 테이블(먼저 쓴 테이블)의 모든 행을 포함 (오른쪽 테이블에 짝이 없으면 NULL로 표시됨)
    • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 포함
    • 외부 조인과 WHERE ... IS NULL 조건을 조합하면 '구매 이력이 없는 회원'을 찾을 수 있음
  • CROSS JOIN (상호 조인): 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 결합 (카티션곱) (결과 행 수 = A테이블 행 수 × B테이블 행 수) 
  • UNION / UNION ALL: 두 SELECT 문의 결과를 위아래로 합침
    • UNION: 중복된 행은 제거하고 합침
    • UNION ALL: 중복 여부와 상관없이 모두 합침
  • NOT IN / IN: 서브쿼리와 함께 사용하여 특정 조건을 제외하거나 포함
    • 예: ... WHERE userName NOT IN (SELECT ... WHERE mobile1 IS NULL) (휴대폰 번호가 없는 회원을 제외)

'공부 기록 > MySQL' 카테고리의 다른 글

SQL 기본 문법 (1)  (0) 2025.11.09