데이터 정의어 DDL
DDL; Data Definition Language
생성, 변경, 삭제 등 데이터베이스 구조를 정의한다.
ALTER TABLE
테이블의 구조를 변경할 때 사용하는 ALTER TABLE
명령어. ADD, DROP, MODIFY, CHANGE, RENAME
속성을 추가, 삭제, 수정을 할 수 있다. add와 drop을 통해서 속성와 제약조건을 추가, 삭제하는 방법을 알아보고자 한다.
ADD 속성 추가
ALTER TABLE 테이블 ADD 속성 타입 [NOT NULL] [DEFAULT 기본값];
add와 함께 추가할 속성을 지정한다.
alter table guest add phone int;
<< guest테이블에 int타입의 phone이라는 속성을 추가한다.
DROP 속성 삭제
ALTER TABLE 테이블 DROP COLUMN 속성;
속성은 하나의 열 → Column으로 속성 삭제 시 column을 작성해야 한다. 참조하는 다른 속성이 있으면 참조 속성을 먼저 제거하고, 관련된 제약조건이 있는 경우에도 제약조건을 먼저 제거해줘야 한다.
alter table guest drop column visit;
<< guest테이블에서 visit를 삭제한다.
ADD CONSTRAINT 제약조건 추가
ALTER TABLE 테이블 ADD CONSTRAINT 제약조건 내용;
제약조건을 추가한다. 추가할 제약조건의 이름과 해당 제약조건 내용을 작성한다.
alter table guest add constraint phone_number check (length(phone) = 8);
alter table guest add constraint age_check check (age >= 19);
<< guest테이블에서 phone의 길이는 11로 제한하고, 성인만 입력 가능하도록 age에 조건을 둔다.
DROP CONSTRAINT 제약조건 삭제
ALTER TABLE 테이블 DROP CONSTRAINT 제약조건;
명시한 제약조건 이름을 통해 테이블에서 제약조건을 삭제한다. 제약조건 이름을 명시해두면 이처럼 삭제에 도움이 된다.
alter table guest drop constraint age_check;
<< 성인 확인을 위한 age_check를 삭제한다.
DROP TABLE
DROP TABLE 테이블;
테이블을 삭제한다.
예시
create database hotel;
use hotel;
create table guest(
name varchar(10) not null primary key,
age int not null,
visit date
);
create table을 통해 guest를 만들었다. name과 age, visit 속성을 추가한 테이블의 구조는 이와 같다.
위에서 작성해본 예시 코드를 이 테이블에 적용시키면 아래와 같다.
1. 속성과 제약조건 추가
alter table guest add phone int;
alter table guest add constraint phone_number check (length(phone) = 8);
2. 제약조건 삭제
alter table guest add constraint age_check check (age >= 19);
alter table guest drop constraint age_check;
성인 고객만 받기 위해 나이를 확인하는 제약조건을 두었지만(age_check), 모든 가족이 사용할 수 있도록 해당 제약조건을 삭제하였다.
3. column 삭제
alter table guest drop column visit;
고객의 방문 날짜는 고객 관리 테이블이 아닌 방문 테이블에서 관리하기 위해 삭제하였다.
'Database > MySQL' 카테고리의 다른 글
[MySQL] 데이터 조작어 DML의 SELECT 기본 사용법 (0) | 2025.01.09 |
---|---|
[MySQL] 데이터 정의어 DDL의 CREATE (1) | 2024.12.03 |