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 |