[MySQL] DDL, 데이터 정의어(Data Definition Language)
DDL ( Data Definition Language )
- CREATE, DROP, ALTER, RENAME
- 데이터베이스 객체(Table)의 구조를 정의
- 테이블 생성, 수정, 삭제, 제약조건 지정, 타입 변경 등
제약 사항
- 컬럼에 저장될 데이터의 조건을 설정하는 것
- 제약조건을 설정하면 이에 위반하는 데이터는 삽입 불가
- 테이블 생성시 직접 지정하거나 constraint로 지정, 혹은 alter로 지정
1. NOT NULL
- 컬럼에 NULL값을 지정할 수 없고 반드시 쿼리문을 이용하여 값을 지정
2. UNIQUE
- 컬럼에 중복된 값을 저장할 수 없음 NULL값은 허용
3. PRIMARY KEY
- 컬럼에 중복된 값을 저장할 수 없고, NULL도 허용하지 않음
- 주로 ROW를 구분하기 위한 유일한 값을 지정할때 사용하는 기본키
4. FOREIGN KEY
- 특정 테이블의 PK 컬럼에 저장된 값만 저장하며 참조키, 외래키가 불리며 NULL을 허용
- references를 이용하여 반드시 어느 테이블의 어느 컬럼을 가져오는지 명시
5. DEFAULT
6. CHECK
- 값의 종류나 범위를 지정
- c char(1) check ( c in ( 'M' ,'F' ) ) 이러면 m이나 f만 들어갈 수 있음
- b int check ( b >= 10 ) 이러면 10보다 큰 애만 들어갈 수 있음
제약 조건 | 설명 | 예시 |
Not Null | 컬럼에 Null값을 지정할 수 없고 반드시 Query 문을 이용하여 값을 지정 |
user_id varchar(30) NOT NULL |
Unique | 컬럼에 중복된 값을 저장할 수 없음 Null값은 허용 |
user_id varchar(30) UNIQUE constraint user_id_ukey UNIQUE(user_id) |
Primary Key | 컬럼에 중복된 값을 지정할 수 없고 Null도 불가 주로 Row를 구분하기 위한 유일값을 저장 |
user_id varchar(30) PRIMARY KEY constraint user_id_pk PRIMARY KEY(user_id) |
Foreign Key | 특정 테이블의 PK 컬럼에 저장된 값을 참조 참조키, 외래키라 불리며 Null을 허용 References를 이용해 어느 테이블의 어느 컬럼인지를 명시해야함 |
constraint user_id_fk FOREGIN KEY (user_id) REFERENCES USER(user_id) |
Deafult | Null이 들어올 경우의 기본 설정값을 설정 | regist_date timestamp default current_timestamp |
Check | 값의 종류나 범위를 지정 | age int check ( age>=1 ) |
1. CREATE
- 테이블을 생성할때 사용
- 기본적인 문법은
CREATE TABLE [테이블명] (
컬럼 이름 컬럼 타입 제약 조건
컬럼 이름2 컬럼 타입 제약 조건
)
2. Alter
- 테이블을 변경할떄 사용하는 DDL
기능 | 문법 |
컬럼 추가 | alter table [테이블명] add column [컬럼명] [데이터타입] [제약조건]; |
컬럼 변경 | alter table [테이블명] modify column [컬럼명] [데이터타입] [제약조건]; |
컬럼 이름 변경 | alter table [테이블명] change column [이전 컬럼명] [변경 컬럼명] [데이터타입] [제약조건]; |
컬럼 삭제 | alter table [테이블명] drop column [컬럼명]; |
테이블 이름 변경 | alter table [이전 테이블명] rename [변경 테이블명] |