본문 바로가기

IT/Mysql & MariaDB

[Mysql] 데이터 정의어 (DDL)

1. 데이터 정의어(DDL) 이란

테이블을 생성, 삭제하거나 컬럼을 추가, 수정, 삭제할 때 사용하는 명령어입니다.
크게 CREATE, ALTER, DROP, TRUNCATE로 구분됩니다.

 

2. 데이터 정의어 명령어 정리

1) CREATE

데이터베이스 또는 테이블을 생성할 때 사용합니다. 
create database 데이터베이스명;

show databases;

use 데이터베이스명;
create table 테이블명 (
       컬럼명 자료형 [제약조건 및 옵션],
       [키 제약조건 선언]
)
CREATE TABLE department (
	id INT(11) NOT NULL AUTO_INCREMENT,
	name VARCHAR(50) NULL DEFAULT NULL,
	PRIMARY KEY (id)
)

create table member(
  id int auto_increment not null,
  name varchar(50) not null,
  dept_id int null,
  primary key(id),
  constraint fk_department foreign key (dept_id) references department (id)
);
department 테이블과 member 테이블을 생성했습니다. member 테이블은 department의 id를 참조하고 있습니다.

 

2) 컬럼 옵션

auto_increment : 숫자 형에 사용가능 하며 자동으로 숫자가 증가하는 속성을 부여합니다. 
not null : null 값을 가질 수 없습니다.
unique : unique key 속성을 부여합니다. 해당 컬럼은 중복된 값을 가질 수 없습니다. 
default : 기본 값을 지정합니다.
check :  특정 값만 가질 수 있게 지정합니다.
primary key : 기본키로 지정합니다.
foreign key : 외래키로 지정합니다.
#컬럼 옵션 예제
create table member (
	id int auto_increment primary key,
	name varchar(50) not null,
	code char(1) not null default 'A',
	email varchar(100) unique,
	class char(1) check(class in (1,2,3,4)),
	dept_id int null,
	constraint fk_department foreign key (dept_id) references department (id)
)

3) ALTER

테이블을 수정할 때 사용하는 명령어 입니다.

3-1) 컬럼 추가

alter table 테이블명 add 컬럼명 컬럼타입 [옵션]

alter table member add column age int not null; 

3-2) 컬럼 수정

alter table 테이블명 modify 컬럼명 변경할데이터타입 [옵션]

alter table member modify name varchar(300) null

3-3) 컬럼 삭제

alter table 테이블명 drop 삭제할컬럼명

alter table member drop age;

3-4) 컬럼명 변경

alter table 테이블명 change 변경할컬럼명 새로운컬럼명 컬럼타입

alter table member change name title varchar(100);

3-5) 제약 조건 추가

alter table 테이블명 add constraint 제약조건명 제약조건(컬럼명..)

#유니크 제약조건 추가
alter table member add constraint uk_code_name unique key (code, name);

#기본키 제약조건 추가
alter table member add constraint pk_id_code primary key (id, code)

#외래키 제약조건 추가
#외래키를 지정할 경우 해당 컬럼에 index key가 함께 선언된다.
alter table member add constraint fk_dept_id foreign key (dept_id) references department (id)

3-6) 제약 조건 삭제

alter table 테이블명 drop constraint 제약조건명

#유니크 키 제거
alter table member drop constraint uk_code_name;

#외래키 제거
alter table member drop foreign key fk_dept_id

#인덱스 제거
alter table member drop constraint fk_dept_id

#제약조건명 조회방법
select * 
from information_schema.table_constraints
where TABLE_SCHEMA = '데이터베이스명' and TABLE_NAME = '테이블명'

3-7) 테이블 명 변경

alter table 테이블명 rename 새로운테이블명

alter table member rename customer;

 

4) DROP

데이터베이스 또는 테이블을 삭제할 때 사용합니다. 
drop database 데이터베이스명

drop database my_db;
drop table 테이블명

drop table member

 

5) TRUNCATE

테이블의 모든 내용을 지울 때 사용합니다.
truncate table 테이블명;

truncate table member;

 

'IT > Mysql & MariaDB' 카테고리의 다른 글

[Mysql] 조인 (JOIN) 이란?  (0) 2021.04.03
[Mysql] distinct와 group by의 차이  (0) 2021.03.28
[Mysql] group by와 having  (1) 2021.03.28
[Mysql] group by 시 가장 큰 값을 가진 row 조회하기  (0) 2021.03.27
[Mysql] delete join  (0) 2021.02.25