본문으로 바로 가기

SQL 개발자 (SQLD) 관리 구문 개념 정리

중요도 ★★★★☆ · 20% (추정)

개요

이 단원은 데이터와 테이블을 직접 바꾸고 관리하는 명령을 배웁니다. SQL 명령의 네 가지 종류를 먼저 구분하고, 데이터를 넣고 고치고 지우는 DML, 변경을 확정하거나 취소하는 TCL, 테이블 구조를 만드는 DDL 과 제약조건, 권한을 다루는 DCL 을 차례로 공부합니다.

DML 에는 INSERT·UPDATE·DELETE·MERGE 가 있습니다. INSERT 에서 컬럼을 빼면 기본값(DEFAULT)이, 기본값이 없으면 NULL 이 들어갑니다. MERGE 는 원본 데이터 가운데 대상에 있는 행은 고치고(WHEN MATCHED) 없는 행은 새로 넣습니다(WHEN NOT MATCHED).

트랜잭션은 원자성·일관성·고립성·지속성(ACID)을 가져야 합니다. COMMIT 은 변경을 확정하고, ROLLBACK 은 확정하지 않은 변경을 취소하며, ROLLBACK TO 저장점은 그 저장점 뒤의 변경만 취소합니다. Oracle 에서는 CREATE·ALTER·DROP·TRUNCATE 같은 DDL 을 실행하면 그 전까지의 변경이 자동으로 COMMIT 됩니다.

DDL 로 테이블을 만들 때 기본키·UNIQUE·NOT NULL·CHECK·외래키 같은 제약조건을 겁니다. 외래키에는 부모 행을 지울 때 자식 행도 지우는 ON DELETE CASCADE, 자식의 외래키를 NULL 로 바꾸는 ON DELETE SET NULL 옵션이 있습니다. DCL 의 GRANT 는 권한을 주고 REVOKE 는 빼앗으며, 여러 권한을 묶은 롤(ROLE)로 한꺼번에 관리할 수 있습니다.

핵심 개념

  • SQL 명령의 종류

    DML(데이터 조작)은 SELECT·INSERT·UPDATE·DELETE·MERGE, DDL(데이터 정의)은 CREATE·ALTER·DROP·RENAME·TRUNCATE, DCL(데이터 제어)은 GRANT·REVOKE, TCL(트랜잭션 제어)은 COMMIT·ROLLBACK·SAVEPOINT 입니다.

    외우는 요령TRUNCATE 는 행을 지우지만 DDL, MERGE 는 DML 이라는 점이 자주 나옵니다.

  • 트랜잭션 ACID

    원자성은 모두 실행되거나 모두 취소됨, 일관성은 실행 전후에 규칙에 맞는 상태 유지, 고립성은 실행 중인 트랜잭션끼리 서로 끼어들지 않음, 지속성은 COMMIT 한 결과가 영구히 남음을 뜻합니다.

    외우는 요령'All or Nothing'은 원자성입니다.

  • COMMIT·ROLLBACK·SAVEPOINT

    COMMIT 은 변경을 확정하고, ROLLBACK 은 마지막 COMMIT 이후의 변경을 취소합니다. SAVEPOINT 로 중간 저장점을 만들면 ROLLBACK TO 저장점으로 그 뒤의 변경만 취소할 수 있습니다.

    외우는 요령저장점 앞에 한 변경은 ROLLBACK TO 로 취소되지 않습니다.

  • DELETE·TRUNCATE·DROP

    DELETE 는 조건에 맞는 행을 지우는 DML 이라 COMMIT 전이면 되돌릴 수 있습니다. TRUNCATE 는 모든 행을 지우고 구조는 남기는 DDL, DROP 은 테이블 구조까지 없애는 DDL 입니다. Oracle 에서 두 DDL 은 자동 COMMIT 되어 되돌릴 수 없습니다.

    외우는 요령'행만 DELETE, 통째로 비움 TRUNCATE, 아예 없앰 DROP'.

  • 제약조건

    기본키는 중복과 NULL 을 모두 막고 테이블에 하나만 둘 수 있습니다(여러 컬럼을 묶을 수는 있음). UNIQUE 는 중복만 막고 NULL 은 허용하며, NOT NULL 은 값을 반드시 넣게 하고, CHECK 는 넣을 수 있는 값의 조건을 정합니다.

    외우는 요령PK 와 UNIQUE 의 차이는 NULL 허용 여부입니다.

  • 외래키 삭제 옵션

    ON DELETE CASCADE 는 부모 행을 지우면 자식 행도 함께 지우고, ON DELETE SET NULL 은 자식의 외래키를 NULL 로 바꿉니다. 옵션이 없으면 자식 행이 있는 부모 행은 지울 수 없습니다.

    외우는 요령CASCADE 는 '줄줄이 삭제'로 기억하세요.

  • GRANT·REVOKE·ROLE

    GRANT 권한 ON 객체 TO 사용자 로 권한을 주고, REVOKE 권한 ON 객체 FROM 사용자 로 빼앗습니다. WITH GRANT OPTION 을 붙이면 받은 사람이 그 권한을 다시 줄 수 있습니다. 롤(ROLE)은 여러 권한을 묶어 한꺼번에 관리합니다.

    외우는 요령주는 것은 TO, 빼앗는 것은 FROM.

자주 나오는 포인트

  • 명령어를 DML·DDL·DCL·TCL 로 바르게 짝짓는 문제가 자주 나옵니다.
  • SAVEPOINT 와 ROLLBACK TO 를 섞어 실행한 뒤 남는 데이터를 묻는 문제가 나옵니다.
  • Oracle 에서 DDL 을 실행하면 자동 COMMIT 된다는 점을 이용한 문제가 많습니다.
  • DELETE·TRUNCATE·DROP 의 차이(되돌릴 수 있는지, 구조가 남는지)를 정리하세요.
  • 기본키와 UNIQUE 의 NULL 허용 차이, 외래키 삭제 옵션의 동작을 묻습니다.

헷갈리는 것 비교: DELETE·TRUNCATE·DROP 비교 (Oracle)

구분DELETETRUNCATEDROP
종류DMLDDLDDL
지우는 것조건에 맞는 행모든 행테이블 자체
테이블 구조남음남음없어짐
ROLLBACKCOMMIT 전이면 가능불가(자동 COMMIT)불가(자동 COMMIT)

대표 문제 3개

검수를 마친 예상문제 가운데 이 단원의 대표 문제입니다.

예상문제검수 완료SQL 기본 및 활용 › 관리 구문★★★★☆

문제 1. 사용자에게 테이블 조회 권한을 주는 GRANT 문은 SQL 의 어느 종류에 속하는가?

  1. ① DCL
  2. ② DML
  3. ③ DDL
  4. ④ TCL
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ① DCL

핵심: DML=데이터, DDL=구조, DCL=권한, TCL=트랜잭션

SQL 문장은 하는 일에 따라 네 가지로 나뉩니다.

  • DML(데이터 조작어): SELECT, INSERT, UPDATE, DELETE, MERGE
  • DDL(데이터 정의어): CREATE, ALTER, DROP, RENAME, TRUNCATE
  • DCL(데이터 제어어): GRANT, REVOKE — 권한
  • TCL(트랜잭션 제어어): COMMIT, ROLLBACK, SAVEPOINT

틀린 선지

  • DML: 데이터를 조회·입력·수정·삭제하는 명령입니다.
  • DDL: 테이블 같은 객체의 구조를 만들고 바꾸는 명령입니다.
  • TCL: COMMIT·ROLLBACK 처럼 트랜잭션을 다루는 명령입니다.
예상문제검수 완료SQL 기본 및 활용 › 관리 구문★★★★☆

문제 2. 트랜잭션의 성질 가운데 '트랜잭션 안의 작업은 모두 성공하거나 모두 취소되어야 하며, 일부만 반영되어서는 안 된다'는 것은?

  1. ① 지속성(Durability)
  2. ② 일관성(Consistency)
  3. ③ 고립성(Isolation)
  4. ④ 원자성(Atomicity)
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ④ 원자성(Atomicity)

핵심: ACID: 원자성(전부 아니면 전무)·일관성·고립성·지속성

트랜잭션의 네 가지 성질(ACID)입니다.

  • 원자성: 전부 실행되거나 전부 취소됨 (All or Nothing)
  • 일관성: 실행 전후에 데이터베이스가 규칙에 맞는 상태를 유지
  • 고립성: 실행 중인 트랜잭션이 다른 트랜잭션의 영향을 받지 않음
  • 지속성: COMMIT 한 결과는 장애가 나도 영구히 남음

틀린 선지

  • 지속성(Durability): 확정된 결과가 영구히 남아야 한다는 뜻입니다.
  • 일관성(Consistency): 트랜잭션 전후에 데이터가 규칙(제약조건 등)에 맞아야 한다는 뜻입니다.
  • 고립성(Isolation): 동시에 실행되는 트랜잭션끼리 서로 끼어들지 않아야 한다는 뜻입니다.
예상문제검수 완료SQL 기본 및 활용 › 관리 구문★★★★☆

문제 3. 기본키(PRIMARY KEY)와 UNIQUE 제약조건을 비교한 설명으로 옳은 것은?

  1. ① 기본키는 중복 값을 허용하고, UNIQUE 는 허용하지 않는다.
  2. ② 기본키는 NULL 을 허용하지 않지만, UNIQUE 는 NULL 을 허용한다.
  3. ③ 기본키와 UNIQUE 모두 NULL 을 허용하지 않는다.
  4. ④ UNIQUE 는 NULL 을 허용하지 않지만, 기본키는 NULL 을 허용한다.
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ② 기본키는 NULL 을 허용하지 않지만, UNIQUE 는 NULL 을 허용한다.

핵심: PK = 중복 X + NULL X, UNIQUE = 중복 X, NULL 허용

  • 기본키(PRIMARY KEY): 중복 불가 + NULL 불가. 테이블에 하나만 만들 수 있음
  • UNIQUE: 중복 불가, 하지만 NULL 은 넣을 수 있음

둘 다 중복을 막지만 NULL 을 허용하는지가 다릅니다.

틀린 선지

  • 기본키는 중복 값을 허용하고, UNIQUE 는 허용하지 않는다: 기본키도 중복을 허용하지 않습니다.
  • 기본키와 UNIQUE 모두 NULL 을 허용하지 않는다: UNIQUE 컬럼에는 NULL 을 넣을 수 있습니다.
  • UNIQUE 는 NULL 을 허용하지 않지만, 기본키는 NULL 을 허용한다: 반대로 적은 설명입니다.
이 단원 5문제 풀기 →

AI 작성 · 검수 완료 · AI가 새로 쓴 글 가운데, 작성과 분리된 AI 검증(다시 읽고 사실·수치 확인)을 통과한 단원만 싣습니다. 틀린 곳을 발견하면 알려 주세요.