SQL 데이터 정의와 조작
설명 영상 SQL 데이터 정의와 조작 · 2:15
핵심 정리
SQL은 관계형 모델을 따르는 DBMS에서 쓰는 표준 데이터 언어다. 관계형 데이터베이스에서 검색과 갱신을 한 언어로 처리한다는 데 SQL의 의의가 있다. SQL 명령은 하는 일에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 나뉜다. 세 갈래를 가르는 기준은 명령이 다루는 대상이다. 객체의 구조를 다루는지, 행에 담긴 데이터를 다루는지, 권한과 무결성을 다루는지에 따라 소속이 정해진다.
데이터 정의어는 데이터베이스 스키마의 생성, 변경, 삭제 등에 사용되는 언어이다. 테이블, 인덱스, 뷰 같은 객체의 틀을 만들고 고치고 없애는 일이 여기에 속한다. 행 안의 값을 넣거나 바꾸는 일은 이 범주에 들어가지 않으며, 이 구분이 소속 판단의 출발점이 된다.
데이터 제어어는 데이터베이스의 보안, 무결성, 회복 등을 지원하기 위해 사용된다. 제어어는 접근을 허용하거나 막고, 데이터가 올바른 상태를 유지하도록 관리하는 역할을 맡는다. 그래서 권한이나 무결성에 관한 명령은 조작어가 아니라 제어어 쪽 개념으로 읽어야 한다.
이 개념의 한계는 명령 목록을 외워도 대상을 모르면 소속을 가를 수 없다는 점이다. 명령 이름만 보고 판단하지 말고, 대상이 객체인지 행인지를 먼저 묻고 그다음 명령 이름을 대조하는 순서가 안전하다. 아래 쟁점마다 명령의 요건과 헷갈리는 지점을 나눠 본다.
자세히
객체의 생성·변경·삭제
객체를 새로 만드는 명령은 CREATE다. CREATE는 데이터베이스 객체를 생성하는 DDL 명령이다. 기존 객체를 건드리지 않고 새 객체를 만든다는 점에서 뒤에서 볼 ALTER와 구별된다.
이미 있는 객체의 구조를 고치는 명령은 ALTER다. ALTER는 기존 객체의 구조를 바꾸는 DDL 명령이다. 흔히 이 명령으로 현재 테이블에 열을 추가하거나 제약 조건을 더한다. 객체를 새로 만드는 것이 아니라 이미 있는 것을 고친다는 점이 핵심이다. 이미 있는 객체를 고침
DROP은 객체를 지우는 명령이다. DROP은 데이터베이스 객체를 삭제하는 DDL 명령이다. 삭제 대상이 테이블·뷰 같은 객체 자체이므로, 테이블 안의 행만 지우는 명령과는 대상이 다르다. 보통 롤백으로 복원할 수 없으므로 실행 전 확인이 필요하다. 보통 롤백으로 복원 불가
세 명령은 모두 객체 단위로 작동하므로 실행 결과가 스키마에 그대로 남는다. TRUNCATE는 테이블에서 모든 데이터를 빠르게 지우되 테이블 자체는 남기는 명령으로, 객체를 없애는 DROP과 구별된다.
| 판별 질문 | 소속 |
|---|---|
| 틀(스키마)을 만들거나 고치는가 | DDL |
| 행의 값을 찾거나 넣거나 바꾸거나 지우는가 | DML |
| 권한·보안·무결성을 정하는가 | DCL |
데이터 조작과 삽입 제약
데이터 조작어에는 질의 대상과 접근 방법을 적는 방식이 있다. 절차적 데이터 조작어는 사용자가 원하는 데이터와 그 데이터로의 접근 방법을 명시해야 하는 언어이다. 원하는 결과만 적는 것이 아니라 접근 경로까지 기술해야 한다는 뜻이다. 이 구분은 질의문의 성격을 가르는 데 쓰인다.
이어지는 내용
- 질의 절의 필수 여부와 그룹 조건
- 결합과 정렬
- 자주 헷갈리는 것
- 기출에서는
로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.
앱에서 이 절 읽기