데이터베이스/MySQL

[MySQL] DDL 활용 - 테이블 생성, 수정, 삭제하기

webvillain 2021. 5. 31. 12:10

▶ DDL(Data Definition Language)  - 데이터 정의어

데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어입니다.

 

종류 역할
CREATE SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하고 생성하는 역할을 합니다.
ALTER TABLE에 대한 정의를 수정하는 역할을 합니다.
DROP SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제하는 역할을 합니다.
TRUNCATE 테이블을 초기화 시키는 역할을 합니다.

 

1. CREATE  :  테이블 생성하기

 

  CREATE TABLE  테이블명  (
      속성명  데이터타입](길이)  제약조건,
      속성명  데이터타입](길이)  제약조건,
      속성명  데이터타입](길이)  제약조건,
      속성명  데이터타입](길이)  제약조건
    );

 

 

▶ 자주쓰는 데이터 타입 자료형

 

데이터 타입 내용
int 정수
char(n) 고정길이 문자형. n을 1부터 255까지 지정.
CHARACTER의 약자이며, CHAR 이라고만 하면 CHAR(1)과 동일
* CHAR(100) 인 경우 세 자리만 사용해도 나머지 97 자리를 할당. (성능은 CHAR이 VARCHAR보다 더 좋음.)
varchar(n) 가변길이 문자형. n을 사용하면 1부터 65535까지 지정
Variable Character의 약자.
* VARCHAR(100) 인 경우 3글자를 저장하는 경우 3자리의 데이터 공간만 사용
text (1 ~ 65535) N 크기의 TEXT 데이터 값
date 날짜는 1001-01-01 ~ 9999-12-31까지 저장되며 날짜 형식만 사용
'YYYY-MM-DD' 형식으로 사용됨

> 더 많은 데이터타입 보러 가기

 

 

▶ 제약조건

 

제약조건 내용
PRIMARY KEY 테이블의 기본키를 정의함. 기본으로 NOT NULL, UNIQUE 제약이 포함됨.
FOREIGN KEY 외래키를 정의함. 참조 대상을 테이블이름(열이름)으로 명시해야 함.
FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정되어 있어야 함.

* 참조 무결성 위배 상황 발생 시 처리 방법으로 옵션 지정 가능 - NO ACTION, SET DEFAULT, SET NULL, CASCADE
UNIQUE 테이블 내에서 해당 필드는 유일한 값을 가져야 함. (중복된 값 지정 불가)
NOT NULL 테이블 내에서 해당 필드의 값은 NULL일 수 없음. (필수 입력 항목)
CHECK 개발자가 정의하는 제약 조건. 상황에 따라 다양한 조건 설정 가능

 

-- 'members' 테이블 생성
create table members (
  idx int auto_increment primary key, 
  mem_nm varchar(10) not null, 
  mem_id varchar(12) not null, 
  pwd varchar(20) not null, 
  birth_dt date, 
  male_flg varchar(1) not null, 
  tel_no varchar(11) not null
);

 


 

2. ALTER~ ADD~  :  테이블에 컬럼 추가

 

  ALTER TABLE  테이블명  ADD  속성명  데이터타입(길이);
  ALTER TABLE  테이블명  ADD  속성명  데이터타입(길이)  after  속성명;
  ALTER TABLE  테이블명  ADD  속성명  데이터타입(길이)  before  속성명;

 

-- 'members'테이블에 'mem_reg_date'컬럼 추가
alter table members add mem_reg_date date not null after tel_no;

 


 

3. ALTER~ MODIFY(CHANGE)~  :  테이블의 컬럼 수정

 

  ALTER TABLE  테이블명  modify  속성명  데이터타입(길이);
  ALTER TABLE  테이블명  change  기존속성명  새로운속성명  데이터타입(길이);

 

-- 'members'테이블의 'tel_no'컬럼 데이터 타입 수정
alter table members modify tel_no int;

 


 

4. ALTER~ DROP~  :  테이블의 컬럼 삭제

 

  ALTER TABLE  테이블명  DROP  속성명;

 ※ drop 이 먼저 나오지 않도록 주의하자!

 

# 'members'테이블의 'birth_dt'컬럼 삭제
alter table members drop birth_dt;

 


 

5. 테이블 제약 조건 변경

 

제약 조건 변경 내용 SQL 명령문
제약 조건 추가 ALTER TABLE  [테이블명]
ADD [CONSTRAINT 제약조건명]  [제약조건(속성명)]
제약 조건 삭제 ALTER TABLE  [테이블명]  CONSTRAINT  [제약조건명 | 테이블명]
[PRIMARY KEY  |  FOREIGN KEY(속성명)  |  UNIQUE(속성명)]
제약 조건 비활성화 ALTER TABLE  [테이블명]
DISABLE CONSTRAINT  [제약조건명]
제약 조건 활성화 ALTER TABLE  [테이블이름]
ENABLE CONSTRAINT  [제약조건명]