서론
지금까지 배워온 SELECT, INSERT, DELETE, UPDATE
는 SQL 명령 중에서도 DML
로 분류된다.
DML은 데이터를 조작
하는 명령이다.
한편 DDL
은 데이터를 정의
하는 명령으로, 스키마 내의 객체를 관리할 때 사용한다.
그럼 이제부터 DDL을 사용해 스키마를 정의해보겠다.
1. 테이블 작성
DDL은 모두 같은 문법을 사용한다.
CREATE
로 작성, DROP
으로 삭제, ALTER
로 변경할 수 있다.
뒤이어 어떤 종류의 객체
를 작성, 삭제, 변경할지를 지정한다.
예를 들어 테이블을 작성한다면 CREATE TABLE
, 뷰를 작성한다면 CREATE VIEW
와 같이 지정하면 된다.
다음은 sample_table 테이블을 작성하는 예제이다.
CREATE TABLE sample_table(
id INTEGER NOT NULL,
name VARCHAR(30),
...
)
2. 테이블 삭제
필요 없는 테이블은 삭제
할 수 있다.
이때 DROP TABLE
명령을 사용한다.
DROP TABLE 테이블명
DROP TABLE에서 지정하는 것은 테이블명
뿐이다.
이때 주의할 점은 많은 데이터베이스가 SQL 명령을 실행할 때 확인을 요구하지 않는다는 것이다.
OS의 경우 삭제 명령으로 파일을 삭제하려 하면 '정말 삭제하겠습니까?'
라는 메시지가 표시된다.
하지만 SQL 명령의 경우 사용자에게 이와 같은 확인은 하지 않는다.
따라서 DROP TABLE 명령을 실행해야 할 일이 생긴다면 실수로 다른 테이블을 삭제하지 않게 매우 신중해야 한다.
DROP TABLE 명령은 데이터베이스에서 테이블을 삭제한다.
이때 테이블에 저장된 데이터도 함께 삭제된다.
한편 테이블 정의는 그대로 둔 채 데이터만 삭제할 때는 DELETE
명령을 사용한다.
이때 DELETE 명령에 WHERE 조건을 지정하지 않으면 테이블의 모든 행을 삭제할 수 있다.
하지만 DELETE 명령은 행 단위
로 여러 가지 내부처리가 일어나므로 삭제할 행이 많으면 처리속도가 상당히 늦어진다.
이런 경우에는 DDL
로 분류되는 TRUNCATE TABLE
명령을 사용한다.
TRUNCATE TABLE 명령은 삭제할 행을 지정할 수 없고 WHERE 구를 지정할 수도 없지만, 모든 행을 삭제해야 할 때 빠른 속도
로 삭제할 수 있다.
TRUNCATE TABLE 테이블명
3. 테이블 변경
테이블을 작성해버린 뒤에도 열 구성
은 얼마든지 변경할 수 있다.
이때 테이블 변경은 ALTER TABLE
명령을 통해 이루어진다.
ALTER TABLE로 할 수 있는 일은 크게 다음과 같이 두 가지로 분류할 수 있다.
그럼 먼저 열 추가
, 삭제
, 변경
에 대해 알아보자.
제약에 관해서는 다음 챕터에서 자세히 설명하겠다.
1. 열 추가
열을 추가
할 때는 ADD
하부명령을 통해 실행할 수 있다.
ALTER TABLE sample_table ADD new_column INTEGER;
2. 열 속성 변경
열 속성
을 변경할 경우에는 다음과 같이 MODIFY
하부명령을 실행한다.
ALTER TABLE sample_table MODIFY new_column VARCHAR(20);
3. 열 이름 변경
열 이름
을 변경할 때는 CHANGE
하부명령으로 시행할 수 있다.
참고로 CHANGE는 열 이름뿐만 아니라 열 속성
도 변경할 수 있다.
ALTER TABLE sample_table CHANGE new_column updated_column VARCHAR(20);
4. 열 삭제
열을 삭제
할 때는 DROP
하부명령을 사용한다.
ALTER TABLE sample_table DROP updated_column;