1. DDL 이란?
- 데이터 구조를 정의하는 SQL
- 테이블, 컬럼, 제약조건, 인덱스 등을 만들고 수정하고 삭제
- 데이터가 아닌 구조(Schema)를 다룸
- 실행 시 대부분 자동 Commit (롤백 불가)
| 분류 |
역할 |
CREATE |
생성 |
ALTER |
변경 |
DROP |
삭제 |
TRUNCATE |
전체 데이터 초기화(구조 유지) |
2. CREATE TABLE
1) 기본 문법
CREATE TABLE 테이블명 (
컬럼명 타입 옵션,
컬럼명 타입 옵션
);
2) 타입(Data Type) 기초
| 대분류 |
타입 |
설명 |
| 숫자 |
TINYINT |
1 Byte 정수 |
|
SMALLINT |
2 Byte 정수 |
|
INT |
4 Byte 정수 |
|
BIGINT |
8 Byte 정수 |
|
DOUBLE |
실수 |
| 실수 |
FLOAT |
4 Byte / 소수점 8 자리 |
|
DOUBLE |
8 byte / 소수점 17 자리 |
|
DECIMAL |
소수점을 문자로 처리하여 소수점 누락 없음 |
| 문자 |
CHAR(n) |
고정 길이, 최대 255 글자 |
|
VARCHAR(n) |
가변 길이, 최대 255 글자 |
|
TEXT |
최대 6만자 |
|
LONGTEXT |
최대 42억 자, 4GB 정도의 대용량 문자열 |
| 날짜·시간 |
DATE |
날짜 / yyyy-MM-dd |
|
TIME |
시간 / hh:mm:ss |
|
DATETIME |
날짜+시간 / yyyy-MM-dd hh:mm:ss |
|
TIMESTAMP |
시간 + 지동 갱신 |
| 논리 |
BOOL |
TRUE / FALSE |
3) rentals 테이블 예제
CREATE TABLE rentals (
id INT AUTO_INCREMENT,
book_id INT NOT NULL,
member VARCHAR(100) NOT NULL,
rent_date DATETIME DEFAULT NOW(),
return_date DATETIME NULL,
PRIMARY KEY (id)
);
AUTO_INCREMENT
→ 자동 증가 PK
NOT NULL
→ 반드시 값이 필요
DEFAULT NOW( )
→ INSERT 시, 값이 없으면 현재 시간을 입력
3. 제약조건