DDL은 Data Definition Language로 데이터베이스를 정의하는 언어이다.
데이터베이스를 생성 / 수정 / 삭제하는 명령들로 이루어져 있다.
이번에 알아볼 명령어들은 CREATE, ALTER, DROP, TRUNCATE이다.
데이터베이스는 테이블들의 집합으로 이루어져있고, 테이블들은 열과 행이 존재하는 모델로 데이터 값들이 실제로 저장되는 집합체이다.
이번에 볼 DDL의 경우 테이블의 구조를 설정하는 명령어들 이라고 정리할 수 있다.
예시로 학교 데이터베이스를 만들고 학생 정보를 담은 테이블을 만들어 보자
테이블을 만들기 전에 테이블을 담을 데이터베이스를 만들어주자
CREATE DATABASE School;
USE School;
만든 School 데이터베이스를 사용하는 설정까지 마친 후, CREATE TABLE 명령어로 학생 테이블을 만든다.
테이블 제작 (CREATE TABLE)
CREATE TABLE 테이블명 (
필드명 타입 옵션
...
);
CREATE TABLE문을 토대로 학생들의 정보를 담을 Student 테이블을 만들자
CREATE TABLE Student (
id int not null auto_increment primary key,
name varchar(30) not null,
age int not null,
grade int not null
);
MySQL에서는 명령어 단에서는 대소문자를 구별하지 않으므로 소문자 명령어로 적어도 무방하다
desc 명령어로 제작된 테이블 구조를 볼 수 있다.
- id : int 타입의 기본키(Primary Key)로 auto_increment 옵션으로 값이 자동으로 증가하도록 설정
- name : varchar 타입으로 최대 30byte의 문자열로 NULL값을 허용하지 않도록 설정
- age, grade : int 타입의 NULL값을 허용하지 않도록 설정
테이블 수정 (ALTER)
# 칼럼 추가
ALTER TABLE Student ADD COLUMN major varchar(40) not null AFTER grade;
# 칼럼 수정
ALTER TABLE Student MODIFY COLUMN name varchar(40) not null;
# 칼럼 수정 (+ 칼럼명까지)
ALTER TABLE Student CHANGE COLUMN id idx int not null auto_increment;
# 칼럼 삭제
ALTER TABLE Student DROP COLUMN grade;
먼저 major 칼럼을 추가해보자
ALTER TABLE 테이블명 으로 수정할 테이블명을 적고, ADD COLUMN 명령어 뒤에 추가할 칼럼의 내용을 적는다.
뒤에 적힌 AFTER 명령어는 추가될 칼럼의 위치를 지정해주는 것으로 생략해도 무방하다.
다음은 name 칼럼의 자료형 부분을 수정해보자
MODIFY COLUMN 명령어 뒤로 수정할 칼럼명과 옵션을 적는다.
칼럼의 이름까지 변경하고자 하는 경우 CHANGE COLUMN을 사용한다
바꾸고 싶은 기존 칼럼명 뒤에 새로운 칼럼명과 옵션 등을 적는다.
마지막으로 grade 칼럼을 삭제해보자
DROP COLUMN 명령어 뒤로 삭제할 칼럼명을 적는다.
테이블 삭제 (TRUNCATE / DROP)
# 테이블 내용만 모두 삭제
TRUNCATE TABLE Student;
# 테이블 구조까지 모두 삭제
DROP TABLE Student;
테이블을 삭제하는 명령어는 TRUNCATE와 DROP이 있다.
TRUNCATE의 경우 테이블의 구조는 남기고 테이블 내용만 모두 삭제한다
그리고 DROP은 테이블의 내용들을 포함해 테이블 구조까지 모두 삭제한다.