SQL(3) DDL (Data Definition Language)

hyeeun·2025년 8월 15일

bootcamp

목록 보기
20/22
post-thumbnail

1. DDL

(1) DDL이란?

  • DDL은 데이터 정의 언어로, 데이터베이스의 구조(스키마)를 생성·변경·삭제하는 명령어 집합이다.
  • 즉, 데이터 그 자체가 아니라 데이터를 담는 틀(테이블, 뷰, 인덱스 등) 을 정의하거나 수정하는 작업에 사용된다.

(2) DDL의 주요 특징

  1. 구조 변경: 데이터 추가/수정이 아닌 테이블·DB의 구조 자체를 변경

  2. 자동 커밋: 실행 즉시 변경 사항이 DB에 반영되고 ROLLBACK 불가

  3. 트랜잭션과 무관: DDL 실행 후에는 이전 상태로 되돌릴 수 없으므로 주의 필요

  4. 대표 명령어:

    • CREATE : 새로운 객체 생성
    • ALTER : 기존 객체 구조 변경
    • DROP : 객체 삭제
    • TRUNCATE : 데이터 초기화
    • RENAME : 객체 이름 변경
    • (SHOW는 표준 SQL에는 없지만 MySQL에서는 메타정보 조회용으로 사용)

2. ALTER

  • 테이블 및 필드 조작
ALTER TABLE table_name 

# 칼럼 추가
ADD[COLUMN] col_name col difinition; 

# 칼럼명 변경
RENAME COLUMN con_name TO new_col_name; 

# 테이블명 변경
RENAME TO new_table_name; 

# 칼럼 삭제
DROP [COLUMN] col_name; 

# 제약조건 추가
ADD CONSTRAINT constraint_name constraints;

1. examples 테이블에 Country 필드 추가 (varchar(100) NOT NULL)

ALTER TABLE examples 
ADD COLUMN Country VARCHAR(100) NOT NULL DEFAULT 'default value'; # NULL이 아닌 기본값 설정    

2. examples 테이블에 Age, Address 필드 추가

- Age : int, not null, 기본값은 0

  • Address : 가변길이문자(100), not null, 기본값은 'default value'
ALTER TABLE examples 
ADD COLUMN (Age INT NOT NULL DEFAULT 0,
            Address VARCHAR(100) NOT NULL DEFAULT 'default value'); 

3. 컬럼의 이름 변경(Address를 PostCode로 변경)

ALTER TABLE examples 
RENAME COLUMN Address TO PostCode;

4. 테이블 이름 변경 (examples를 new_examples로 변경)

ALTER TABLE examples 
RENAME TO new_examples;

5. 컬럼 삭제 (age 컬럼 삭제)

ALTER TABLE examples 
DROP COLUMN Age;

6. 제약조건 추가 (employee 테이블의 store_id를 FK로 추가 설정)

ALTER TABLE examples 
ADD CONSTRAINT FOREIGN KEY (store_id) REFERENCES store(store_id);

3. DROP

  • 테이블 삭제
  • FOREIGN KEY 설정되어 있는 경우, 해당 조건 해제 후 삭제 가능
DROP TABLE table_name;
  • DB 삭제
DROP DATABASE database_name; 
DROP DATABASE IF EXISTS database_name;

1. CONTSTRAINT 이름 찾기

SELECT CONSTRAINT_NAME 
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'table_name' AND TABLE_SCHEMA = 'database_name';  

2. 외래 키 제약 조건 삭제

ALTER TABLE table_name 
DROP FOREIGN KEY fk_constraint_name;

3. new_examples 테이블 삭제

DROP TABLE new_examples;

4. TRUNCATE

  • 테이블의 모든 데이터 비우는 작업
  • DELETE와 유사하지만 TRUNCATE는 Table을 DROP후 재생성하기 때문에 ID(PK)값이 초기화됨
TRUNCATE [TABLE] table_name;

5. SHOW

  • DB 목록 확인
SHOW DATABAES;
  • 테이블 목록 확인
SHOW TABLES; 
SHOW FROM db_name;

6. 데이터 Import/Export

  • CSV 파일
    - 불러오기 : Table Data Import Wizard 메뉴 사용
    • 내보내기 : Table Data Export Wizard 메뉴 사용
  • SQL 파일
    - 불러오기 : Server - Data Import 메뉴 사용
    • 내보내기 : Server - Data Export 메뉴 사용
profile
hyeeun-techlog

0개의 댓글