Contents
1. CREATE TABLE1️⃣ DDL 명령어 기초 개념2️⃣ DDL 명령어의 특징3️⃣ CREATE TABLE4️⃣ 참조 무결성 유지를 위한 CREATE TABLE 옵션2. ALTER TABLE1️⃣ ALTER TABLE 명령어 기초 개념2️⃣ ALTER TABLE 명령어의 종류3. RENAME TABLE1️⃣ RENAME TABLE 기초 개념2️⃣ RENAME TABLE 사용법4. DROP TABLE1️⃣ DROP TABLE 기초 개념2️⃣ DROP TABLE 사용법5. TRUNCATE TABLE1️⃣ TRUNCATE TABLE 기초 개념2️⃣ TRUNCATE TABLE 사용법DDL (데이터 정의어, Data Definition Language)
1. CREATE TABLE
1️⃣ DDL 명령어 기초 개념
1) DDL (Data Definition Language)
- 데이터베이스에서 테이블, 인덱스, 뷰, 스키마 등 데이터베이스 객체를 정의하고 관리하기 위한 SQL 명령어들의 집합
- DDL을 통해 데이터베이스의 구조를 생성, 수정, 삭제할 수 있음
- 주로 데이터베이스 관리자(DBA)나 개발자가 데이터베이스의 구조 설계하고 관리할 때 사용
2️⃣ DDL 명령어의 특징
1) 자동 커밋
- 대부분의 DDL 명령어는 실행 후 자동 커밋
→ ROLLBACK 불가능
즉, 실행된 DDL 명령어는 취소할 수 없음
2) 데이터 정의
- DDL 명령어는 데이터 자체가 아닌 데이터 구조를 정의하고 변경
- 데이터베이스의 스키마를 설계하거나 유지 보수하는 데 주로 사용됨
3) 데이터 무결성 보장
- DDL 명령어 통해 테이블과 데이터베이스 객체를 정의할 때 제약 조건을 설정하여 데이터 무결성 보장 가능
- 예) PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL 등의 제약 조건을 사용하여 데이터의 일관성 유지할 수 있음
3️⃣ CREATE TABLE
1) CREATE TABLE
- 데이터베이스에 새로운 테이블을 생성하는 SQL 명령어
- 테이블의 이름, 칼럼(column), 데이터 타입, 제약 조건 등 정의할 수 있음
2) CREATE TABLE 형식
CREATE TABLE 테이블명
(
칼럼1 데이터타입 [제약조건],
칼럼2 데이터타입 [제약조건],
...
);3) CREATE TABLE 예
CREATE TABLE STUDENT
(
STUDENT_ID NUMBER(5) PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL,
AGE NUMBER(3),
ENROLL_DATE DATE DEFAULT SYSDATE,
DEPT_ID NUMBER(3) REFERENCES DEPARTMENT(DEPT_ID)
);4️⃣ 참조 무결성 유지를 위한 CREATE TABLE 옵션
1) 참조 무결성(Referential Integrity)
- 데이터베이스에서 두 테이블 간의 관계를 정의하고, 데이터의 일관성을 유지하기 위해 사용하는 제약 조건
- 외래 키(Foreign Key)를 통해 정의됨
- 한 테이블의 칼럼이 다른 테이블의 기본 키(Primary Key)나 고유 키(Unique Key)를 참조하도록 함
2) CREATE TABLE 옵션
- CASCADE
- 부모 테이블의 행이 삭제되거나 업데이트될 때 자식 테이블의 해당 외래 키를 참조하는 행들도 자동으로 삭제되거나 업데이트 됨
- 이 옵션은 외래 키에 ON DELETE CASCADE 또는 ON UPDATE CASCADE와 함께 사용됨
CREATE TABLE CHILD_TABLE_CASCADE
(
CHILD_ID NUMBER PRIMARY KEY,
PARENT_ID NUMBER,
CONSTRAINT FK_PARENT_CASCADE FOREIGN KEY (PARENT_ID)
REFERENCES PARENT_TABLE (PARENT_ID) ON DELETE CASCADE
);- SET NULL
- 부모 테이블에서 행이 삭제되면 자식 테이블의 해당 외래 키가 NULL로 설정됨
CREATE TABLE CHILD_TABLE_CASCADE
(
CHILD_ID NUMBER PRIMARY KEY,
PARENT_ID NUMBER,
CONSTRAINT FK_PARENT_CASCADE FOREIGN KEY (PARENT_ID)
REFERENCES PARENT_TABLE (PARENT_ID) ON DELETE SET NULL
);- SET DEFAULT
- 부모 테이블에서 행이 삭제되면 자식 테이블의 해당 외래 키가 기본값으로 설정됨
CREATE TABLE CHILD_TABLE_CASCADE
(
CHILD_ID NUMBER PRIMARY KEY,
PARENT_ID NUMBER,
CONSTRAINT FK_PARENT_CASCADE FOREIGN KEY (PARENT_ID)
REFERENCES PARENT_TABLE (PARENT_ID) ON DELETE SET DEFAULT
);- NO ACTION
- 부모 테이블에서 행이 삭제되거나 업데이트될 때 자식 테이블의 외래 키는 아무런 작업도 수행되지 않음
- 자식 테이블에서 참조 중인 부모 테이블의 행을 삭제하려고 하면 오류 발생
CREATE TABLE CHILD_TABLE_CASCADE
(
CHILD_ID NUMBER PRIMARY KEY,
PARENT_ID NUMBER,
CONSTRAINT FK_PARENT_CASCADE FOREIGN KEY (PARENT_ID)
REFERENCES PARENT_TABLE (PARENT_ID) ON DELETE NO ACTION
);- RESTRICT
- 부모 테이블에서 행이 삭제되거나 업데이트될 때 자식 테이블의 외래 키는 아무런 작업도 수행되지 않음
- 부모 테이블의 행이 참조 중이면 삭제할 수 없음
- NO ACTION과 유사
CREATE TABLE CHILD_TABLE_CASCADE
(
CHILD_ID NUMBER PRIMARY KEY,
PARENT_ID NUMBER,
CONSTRAINT FK_PARENT_CASCADE FOREIGN KEY (PARENT_ID)
REFERENCES PARENT_TABLE (PARENT_ID) ON DELETE RESTRICT
);2. ALTER TABLE
1️⃣ ALTER TABLE 명령어 기초 개념
1) ALTER TABLE 명령어
- 데이터베이스에서 기존 테이블의 구조를 수정할 때 사용하는 SQL 명령어
- 테이블에 칼럼을 추가하거나 삭제하고, 칼럼의 데이터 타입을 변경하거나, 제약 조건을 추가 또는 제거하는 작업 가능
2️⃣ ALTER TABLE 명령어의 종류
1) 칼럼 추가(ADD COLUMN)
- 기능
- 테이블에 새로운 칼럼을 추가할 대 사용
- 새로 추가된 칼럼은 기본적으로 NULL값을 가짐 (기본값 지정 가능)
- 제약 조건 생략 가능
- NULL값이 오면 안 되는 경우 제약 조건에 ‘NOT NULL’을 지정할 수 있으며,
NULL 값이 와도 되는 경우에는 생략 가능
- 형식
ALTER TABLE 테이블명
ADD 칼럼명 데이터타입 [제약조건];- 예시
ALTER TABLE EMPLOYEE
ADD PHONE_NUMBER VARCHAR(15) NOT NULL;2) 칼럼 삭제(DROP COLUMN)
- 기능
- 테이블에서 특정 칼럼 삭제할 때 사용
- 칼럼 삭제 → 칼럼에 저장된 모든 데이터 삭제 → 복구 불가
- 형식
ALTER TABLE 테이블명
DROP COLUMN 칼럼명;- 예시
ALTER TABLE EMPLOYEE
DROP COLUMN PHONE_NUMBER;3) 칼럼명 변경(RENAME COLUMN)
- 기능
- 테이블에서 특정 칼럼의 이름 변경할 때 사용
- 일부 DBMS에서만 지원
- 형식
ALTER TABLE 테이블명
RENAME COLUMN 기존칼럼명 TO 새로운칼럼명;- 예시
ALTER TABLE EMPLOYEE
RENAME COLUMN NAME TO FULL_NAME;4) 칼럼 데이터 타입 변경(MODIFY COLUMN)
- 기능
- 테이블에서 특정 칼럼의 데이터 타입을 변경할 때 사용
- 데이터가 새로운 데이터 타입으로 변환될 수 있는 경우에만 성공
- 형식
ALTER TABLE 테이블명
MODIFY 칼럼명 새로운데이터타입;- 예시
ALTER TABLE EMPLOYEE
MODIFY SALARY NUMBER(10,2);5) 제약 조건 추가(ADD CONSTRAINT)
- 기능
- 테이블에 새로운 제약 조건을 추가할 때 사용
- 제약 조건 추가 → 데이터 무결성 보장 가능
- 형식
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);- 예시
ALTER TABLE EMPLOYEE
ADD CONSTRAINT CHK_SALARY CHECK (SALARY > 0);6) 제약 조건 삭제(DROP CONSTRAINT)
- 기능
- 테이블에서 기존에 정의된 제약 조건을 제거할 때 사용
- 제약 조건 제거 → 해당 제약 조건에 의해 보호되던 데이터 무결성이 더 이상 보장되지 않음
- 형식
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;- 예시
ALTER TABLE EMPLOYEE
DROP CONSTRAINT CHK_SALARY;7) 기본값 설정/변경(SET DEFAULT)
- 기능
- 테이블에서 특정 칼럼의 기본값을 설정하거나 변경할 때 사용
- 형식
ALTER TABLE 테이블명
MODIFT 칼럼명 데이터타입 DEFAULT 기본값;- 예시
ALTER TABLE EMPLOYEE
MODIFY JOIN_DATE DATE DEFAULT SYSDATE;3. RENAME TABLE
1️⃣ RENAME TABLE 기초 개념
1) RENAME TABLE 명령어
- 데이터베이스에서 기존 테이블의 이름을 변경할 때 사용하는 SQL 명령어
- 테이블의 이름만 변경
- 테이블의 구조나 데이터는 그대로 유지
2) RENAME TABLE 시 주의사항
- 제약 조건 및 인덱스
- 테이블 이름 변경 → 테이블에 관련된 제약 조건, 인덱스, 뷰, 트리거 등도 영향 받음
- 이들을 참조하는 다른 객체들의 이름이나 참조도 확인해야 함
- 종속성 관리
- 테이블 이름 변경 → 이를 참조하는 모든 SQL 쿼리, 저장 프로시저, 함수 등에서 새로운 이름을 사용해야 하므로 종속성 관리에 주의 필요
- 권한
- 테이블의 이름 변경되더라도 기존의 권한 설정은 유지되지만, 이를 관리하는 데 주의 필요
2️⃣ RENAME TABLE 사용법
1) 오라클에서 RENAME TABLE 명령어 사용
- 형식
RENAME 기존테이블명 TO 변경테이블명;- 예시
RENAME EMP TO EMP_BACKUP;2) SQL Server에서 sp_rename 명령어 사용
- 형식
sp_rename '기존테이블명', '새테이블명';- 예시
sp_rename 'EMP', 'EMP_BACKUP';4. DROP TABLE
1️⃣ DROP TABLE 기초 개념
1) DROP TABLE 명령어
- 데이터베이스에서 테이블을 삭제할 때 사용하는 SQL 명령어
- 테이블에 저장된 모든 데이터 뿐만 아니라, 테이블 자체와 관련된 모든 제약 조건, 인덱스, 트리거 등도 함께 삭제
- 삭제된 테이블은 복구 불가
- 이를 사용하려면 다시 생성해야 함
2) DROP TABLE 시 주의사항
- 데이터 손실
- DROP TABLE 명령어 실행 → 테이블과 그 안의 데이터 영구적으로 삭제
- 삭제된 테이블은 복구 불가, 다시 사용하려면 새로 생성해야 함
- 관련 객체 삭제
- 테이블에 연결된 제약 조건, 인덱스, 트리거, 뷰 등도 함께 삭제
- 데이터베이스의 다른 부분에서 문제가 발생할 수 있으므로 주의
- 종속성 관리
- 테이블이 삭제되면 이 테이블을 참조하는 모든 객체(예: 외래 키가 있는 다른 테이블, 뷰, 저장 프로시저 등)도 영향 받음
- 이러한 종속성 고려하여 삭제 진행
2️⃣ DROP TABLE 사용법
1) 오라클에서 DROP TABLE 명령어 사용
- 형식
DROP TABLE 테이블명;- 예시
DROP TABLE EMP_BACKUP;5. TRUNCATE TABLE
1️⃣ TRUNCATE TABLE 기초 개념
1) TRUNCATE TABLE 명령어
- 테이블의 모든 데이터를 빠르게 삭제할 때 사용하는 SQL 명령어
- 테이블 구조는 그대로 유지하면서 테이블의 모든 행 삭제
- 일반적으로 DELETE 명령어보다 빠름
- DELETE와 달리 각 행의 삭제 작업이 개별적으로 기록되지 않음 → 성능 향상
- 데이터 삭제 후 ROLLBACK 불가 (자동 커밋)
2️⃣ TRUNCATE TABLE 사용법
1) 형식
TRUNCATE TABLE 테이블명;2) 예시
TRUNCATE TABLE EMP_BACKUP;Share article