[DB]SQL 기초(2)

배창민·2025년 8월 20일
post-thumbnail

SQL 기초(2)

1. SET 연산자 (Set Operators)

  • UNION : 중복 제거 후 결합
  • UNION ALL : 중복 제거 없이 모두 결합
  • INTERSECT : 공통된 레코드만 (MySQL은 기본 미지원 → INNER JOIN 또는 IN 활용)
  • MINUS : 첫 SELECT - 두 번째 SELECT (MySQL 미지원 → LEFT JOIN ... IS NULL 활용)

2. DML (Data Manipulation Language)

  • INSERT

    INSERT INTO tbl_menu (menu_name, menu_price, category_code, orderable_status)
    VALUES ('초콜릿죽', 6500, 7, 'Y');

    컬럼 명시 가능, 여러 행(MULTI INSERT)도 삽입 가능

  • UPDATE

    UPDATE tbl_menu
       SET category_code = 7, menu_name = '딸기맛붕어빵'
     WHERE menu_code = 24;
  • DELETE

    DELETE FROM tbl_menu WHERE menu_code = 24;
    DELETE FROM tbl_menu;  -- 전체 삭제
  • REPLACE

    • PK/Unique 충돌 시 덮어쓰기
    • INSERT + UPDATE 혼합 기능

3. 트랜잭션 (Transaction)

  • 작업 단위(Commit / Rollback)

  • MySQL 기본 autocommit=ON → 직접 끄고 관리 가능

  • 사용 예:

    START TRANSACTION;
    INSERT INTO tbl_menu VALUES (...);
    UPDATE tbl_menu SET ...;
    ROLLBACK; -- 또는 COMMIT;

4. 데이터 타입 (Data Types)

  • 숫자: INT, BIGINT, FLOAT, DOUBLE, DECIMAL
  • 문자: CHAR(고정), VARCHAR(가변), TEXT, BLOB, ENUM, SET
  • 날짜/시간: DATE, TIME, DATETIME, TIMESTAMP, YEAR
  • 기타: JSON, GEOMETRY

형변환

  • 명시적: CAST(expr AS TYPE), CONVERT(expr, TYPE)
  • 암시적: MySQL 내부 자동 변환 ('1' + '2' → 3, '2023-5-30' → DATE)

5. DDL (Data Definition Language)

  • CREATE

    CREATE TABLE tb1 (
      pk INT PRIMARY KEY,
      col1 VARCHAR(255) CHECK(col1 IN ('Y','N'))
    );
  • AUTO_INCREMENT : PK 자동 증가

  • ALTER

    • ADD / DROP COLUMN
    • CHANGE COLUMN (이름/타입 변경)
    • 제약조건 추가/삭제
  • DROP : 테이블 삭제

  • TRUNCATE : 테이블 초기화 (AUTO_INCREMENT도 초기화)


6. 제약조건 (Constraints)

  • NOT NULL : NULL 불가

  • UNIQUE : 중복 불가

  • PRIMARY KEY : 행 식별자 (NOT NULL + UNIQUE)

  • FOREIGN KEY

    • 참조 무결성 보장
    • ON UPDATE / DELETE 룰 설정 가능 (SET NULL, CASCADE 등)
  • CHECK

    age INT CHECK(age >= 19),
    gender VARCHAR(3) CHECK(gender IN ('남','여'))
  • DEFAULT

    • 기본값 적용
    • DATE: current_date, DATETIME: now(), current_timestamp
profile
개발자 희망자

0개의 댓글