
SQLD DDL CREATE TABLE·ALTER TABLE(ADD·MODIFY·DROP COLUMN·RENAME COLUMN)·RENAME·DROP·TRUNCATE, CTAS로 복사되는 제약조건, DELETE·TRUNCATE·DROP 비교 핵심 정리
테이블 구조를 만들고 바꾸고 지우는 DDL을 정리할 차례야
60 · 62회에 ALTER 문법과 DELETE · TRUNCATE · DROP 비교 문제가 나왔어
SQLD 기초이론 정리 시리즈 45탄!!!
과목 : 2과목 SQL 기본 및 활용
세부 영역 : 관리 구문 - DDL
1. CREATE TABLE
CREATE TABLE 회원 (
회원ID NUMBER PRIMARY KEY,
이름 VARCHAR2(20) NOT NULL,
가입일 DATE DEFAULT SYSDATE
);
| 규칙 | 설명 |
| 테이블 · 칼럼명 | 문자로 시작, 예약어 X (이론 14) |
| DEFAULT | 값을 안 넣었을 때 들어갈 기본값 |
| 데이터 타입 | CHAR(고정 길이), VARCHAR2(가변 길이), NUMBER, DATE 등 |
2. ALTER TABLE (Oracle vs SQL Server)
| 작업 | Oracle | SQL Server |
| 칼럼 추가 | ALTER TABLE 회원 ADD (전화 VARCHAR2(20)); | ALTER TABLE 회원 ADD 전화 VARCHAR(20); |
| 칼럼 타입 변경 | ALTER TABLE 회원 MODIFY (이름 VARCHAR2(50)); | ALTER TABLE 회원 ALTER COLUMN 이름 VARCHAR(50); |
| 칼럼 삭제 | ALTER TABLE 회원 DROP COLUMN 전화; | ALTER TABLE 회원 DROP COLUMN 전화; |
| 칼럼 이름 변경 | ALTER TABLE 회원 RENAME COLUMN 이름 TO 성명; | sp_rename 사용 |
| 테이블 이름 변경 | RENAME 회원 TO 고객; | sp_rename 사용 |
MODIFY 주의 : 이미 들어 있는 데이터보다 크기를 줄일 수 없고, NULL이 있으면 NOT NULL로 바꿀 수 없어
DEFAULT 변경은 이후 입력되는 행부터 적용돼
60 · 62회 출제 포인트 : Oracle과 SQL Server의 ALTER 문법 차이
3. CTAS (CREATE TABLE AS SELECT)
CREATE TABLE 회원_백업 AS SELECT * FROM 회원;
| 복사되는 것 | 복사되지 않는 것 |
| 칼럼 구조와 데이터 | PRIMARY KEY |
| NOT NULL 제약조건 | UNIQUE · CHECK · FOREIGN KEY |
| DEFAULT 값 · 인덱스 |
구조만 복사하려면 WHERE 1 = 2 처럼 항상 거짓인 조건을 붙여
SQL Server는 SELECT * INTO 회원_백업 FROM 회원; 으로 복사해
4. DELETE vs TRUNCATE vs DROP
| 구분 | DELETE | TRUNCATE | DROP |
| 분류 | DML | DDL | DDL |
| 삭제 범위 | WHERE로 일부 · 전체 행 | 전체 행 | 테이블 구조까지 |
| 테이블 구조 | 남음 | 남음 | 사라짐 |
| ROLLBACK (Oracle) | 가능 (COMMIT 전) | 불가 (자동 COMMIT) | 불가 |
| 저장 공간 | 유지 | 초기화 | 해제 |
[ 최근 기출 출제 포인트 ]
| 회차 | 출제 포인트 |
| 60회 | ALTER TABLE 문법, CTAS 제약조건 |
| 62회 | DELETE · TRUNCATE · DROP 비교 |
[ 자주 묻는 질문 ]
Q. ALTER로 여러 칼럼을 한 번에 추가할 수 있어?
A. Oracle은 ADD (칼럼1 타입, 칼럼2 타입) 처럼 괄호 안에 여러 개를 쓸 수 있어
Q. 칼럼을 삭제하면 되돌릴 수 있어?
A. DDL이라 자동 COMMIT돼서 ROLLBACK으로는 안 돼
[ 시험 포인트 정리 ]
| 키워드 | 핵심 |
| Oracle 타입 변경 | ALTER TABLE … MODIFY |
| SQL Server 타입 변경 | ALTER TABLE … ALTER COLUMN |
| 테이블 이름 변경 | RENAME 옛이름 TO 새이름 |
| CTAS | NOT NULL만 복사 |
| TRUNCATE | DDL, 구조 유지, ROLLBACK X |
| DROP | 구조까지 삭제 |
[ 기출변형문제 ]
※ 60~62회 출제 포인트와 출제기준을 바탕으로 새로 만든 변형문제야
(Oracle 기준)
Q1. CREATE TABLE … AS SELECT 로 테이블을 복사할 때 함께 복사되는 제약조건은?
① PRIMARY KEY
② FOREIGN KEY
③ NOT NULL
④ UNIQUE
Q2. Oracle에서 회원 테이블 이름 칼럼의 길이를 50으로 바꾸는 SQL은?
① ALTER TABLE 회원 MODIFY (이름 VARCHAR2(50));
② ALTER TABLE 회원 ALTER COLUMN 이름 VARCHAR2(50);
③ UPDATE TABLE 회원 SET 이름 VARCHAR2(50);
④ MODIFY TABLE 회원 (이름 VARCHAR2(50));
Q3. 테이블 구조는 남기고 모든 행을 삭제하며, ROLLBACK할 수 없는 명령어는?
① DELETE
② TRUNCATE
③ DROP
④ ALTER
Q4. DELETE · TRUNCATE · DROP에 대한 설명으로 옳지 않은 것은?
① DELETE는 WHERE로 일부 행만 삭제할 수 있다
② TRUNCATE는 테이블 구조를 남긴다
③ DROP은 테이블 구조까지 삭제한다
④ TRUNCATE는 DML이라 ROLLBACK할 수 있다
Q5. Oracle에서 회원 테이블 이름을 고객으로 바꾸는 SQL은?
① ALTER 회원 NAME 고객;
② RENAME 회원 TO 고객;
③ UPDATE TABLE 회원 TO 고객;
④ MODIFY 회원 TO 고객;
[ 정답 & 해설 ]
| 문항 | 정답 및 해설 |
| Q1 | ③ CTAS는 NOT NULL만 복사하고 PK · FK · UNIQUE 등은 빠져 (60회 출제 포인트) |
| Q2 | ① Oracle은 MODIFY, ②는 SQL Server 방식 |
| Q3 | ② TRUNCATE는 DDL이라 자동 COMMIT, 구조는 남아 |
| Q4 | ④ TRUNCATE는 DDL이고 ROLLBACK 불가 (62회 출제 포인트) |
| Q5 | ② RENAME 옛이름 TO 새이름 |
다음 글에서는 데이터 무결성을 지키는
[이론 46] 제약조건
을 PK · UNIQUE · CHECK · FK로 정리해볼게!
▶ SQLD · AI 자격증 스터디 자료 보러가기 (AI DATA 자격증 스터디 클럽)
SQLD 준비하시는 분들 모두 화이팅입니다~~~~~ ^^