SQL 테이블 수정
테이블을 수정할 때는 ALTER TABLE이라는 식을 사용한다. 테이블의 이름이나 테이블 안에 있는 여러 필드를 변경한다던지, 컬럼을 더하거나 삭제할 때도 유용하게 사용할 수 있다. ALTER TABLE은 사용 목적에 따라서 ADD, DROP, MODIFY 코멘드랑 항상 함께 쓰이는데 지금부터 하나씩 알아보도록 하자.
테이블에 컬럼 추가하기 - add
ALTER TABLE 테이블 이름
ADD 추가할 컬럼명 데이터타입
[ FIRST | AFTER 컬럼명];
- ALTER TABLE 뒤에 수정할 테이블 이름을 알려주고, 컬럼을 추가하겠다는 의미의 ADD를 넣어준다.
이어서 추가할 컬럼명과 그 컬럼의 데이터 타입을 넣어준다. - 뒤이어 나오는 FIRST 또는 AFTER 코멘트는 옵션이므로 넣어도 되고 안넣어도 된다.
- 특정 컬럼 뒤에 넣고 싶다면 AFTER 뒤에 그 특정 컬럼명을 넣어주면 된다.
이 값을 넣지 않으면 새로 만들어진 컬럼은 테이블의 가장 마지막에 위치하게 된다.
예시로 members라는 테이블에 varchar 타입의 Email이라는 컬럼을 address 컬럼 뒤에 넣어 보자.
> desc members;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| memberID | int(11) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| address | varchar(255) | YES | | NULL | |
| phone | varchar(20) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
4 rows in set (0.053 sec)
> ALTER TABLE members
ADD Email varchar(50)
AFTER address;
Query OK, 0 rows affected (0.074 sec)
Records: 0 Duplicates: 0 Warnings: 0
> desc members;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| memberID | int(11) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| address | varchar(255) | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
| phone | varchar(20) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
5 rows in set (0.024 sec)
테이블에서 컬럼 수정하기 - modify
이미 만들어진 컬럼을 수정할 때는 ALTER TABLE과 함께 modify 코멘트를 사용하는데, 먼저 만드는 방법을 알아보자.
SQL Server / MS Access
ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 데이터타입;
MySQL, Oracle (10g 이전 버전)
ALTER TABLE 테이블명
MODIFY COLUMN 컬럼명 데이터타입;
Oracle (10g 이후 버전)
ALTER TABLE 테이블 이름
MODIFY 수정할 컬럼명 컬럼정의
[ FIRST | AFTER 컬럼명];
바로 예시를 통해서 사용법을 알아보자.
members 테이블의 name 컬럼의 varchar 크기를 100으로 만들고 null값을 허용하지 않도록 변경해 보았다.
> desc members;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| memberID | int(11) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| address | varchar(255) | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
| phone | varchar(20) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
5 rows in set (0.024 sec)
> ALTER TABLE members
-> MODIFY name varchar(100) NOT NULL;
Query OK, 0 rows affected (0.149 sec)
Records: 0 Duplicates: 0 Warnings: 0
> DESC members;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| memberID | int(11) | YES | | NULL | |
| name | varchar(100) | NO | | NULL | |
| address | varchar(255) | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
| phone | varchar(20) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
5 rows in set (0.052 sec)
name 컬럼의 varchar 타입 크기가 255에서 100으로 변경되었고, null값은 허용하지 않는다는 의미로 null은 yes에서 no로 변경된 것을 확인할 수 있다.
테이블에서 컬럼 삭제하기
컬럼을 삭제할 때는 DROP COLUMN 코멘트를 함께 사용한다.
ALTER TABLE 테이블명
DROP COLUMN 컬럼명;
바로 예문을 통해 members 테이블에 있는 email 컬럼을 삭제 해보자.
> DESC members;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| memberID | int(11) | YES | | NULL | |
| name | varchar(100) | NO | | NULL | |
| address | varchar(255) | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
| phone | varchar(20) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
5 rows in set (0.052 sec)
> ALTER TABLE members
-> DROP COLUMN email;
Query OK, 0 rows affected (0.038 sec)
Records: 0 Duplicates: 0 Warnings: 0
> desc members;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| memberID | int(11) | YES | | NULL | |
| name | varchar(100) | NO | | NULL | |
| address | varchar(255) | YES | | NULL | |
| phone | varchar(20) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
4 rows in set (0.054 sec)
쿼리를 실행한 후, email 컬럼이 삭제된 것을 확인할 수 있다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'IT > SQL' 카테고리의 다른 글
[sql] 제약조건 constraints - NOT NULL (0) | 2021.09.02 |
---|---|
[sql] alter table, 테이블의 컬럼명 변경하기 (0) | 2021.08.31 |
SQL 테이블 삭제하기, 데이터만 삭제하기 drop, delete, truncate (0) | 2021.08.19 |
[SQL] 테이블 만들기-create table (0) | 2021.08.17 |
SQL 데이터베이스 생성, 조회, 삭제 (0) | 2021.08.16 |