[SQL] 1_2. DDL(ALTER TABLE)

Programming/데이터베이스|2022. 8. 30. 10:58
반응형

안녕하세요. Playground입니다.

저번 포스팅에서는 DDL언어 중에 CREATE TABLE과 제약조건에 대해 알아봤는데요.

이어서 이번에는 ALTER TABLE에 대해 알아보겠습니다.

ALTER TABLE

SQL Alter Table


  • ALTER TABLE

컬럼을 추가, 삭제하거나 제약조건을 추가, 삭제하는 명령어입니다.

 

아래와 같은 명령문을 추가해서 씁니다.

1. ADD COLUMN
2. DROP COLUMN
3. MODIFY COLUMN
4. RENAME COLUMN
5. ADD CONSTRAINT
6. DROP CONSTRAINT

 

 


1. ADD COLUMN

: 컬럼을 추가합니다.

 

추가된 컬럼은 테이블의 마지막 컬럼이 되며 컬럼의 위치는 지정할 수 없습니다.

ALTER TABLE [테이블명] ADD ( [추가할 컬럼명] [데이터형] );

 

예) TB_OS테이블에 데이터 형이 CHAR(10)인 컬럼명 OS_Name을 추가하시오.

ALTER TABLE TB_OS ADD (OS_NAME CHAR(10));

 

반응형

2. DROP COLUMN

: 컬럼을 삭제합니다.

 

한 번 삭제된 컬럼은 복구가 안되니 잘 확인하셔야됩니다.

ALTER TABLE [테이블명] DROP COLUMN [컬럼명];

 

예) TB_OS 테이블에서 OS_NAME 컬럼을 삭제하시오.

ALTER TABLE TB_OS DROP COLUMN OS_NAME;

 


3. MODIFY COLUMN

: 컬럼을 수정하는 명령어입니다.

ALTER TABLE [테이블명] MODIFY ( [컬럼명] [데이터명(생략가능)] [속성명] );

 

 

예) TB_OS 테이블의 컬럼 OS_NAME의 속성 값을 NULL도 허용하게 수정하시오.

CREATE TABLE TB_OS
(
     OS_NAME CHAR(10) NOT NULL, -- 기존에는 NOT NULL 속성
     OS_NUM NUMBER
);

INSERT INTO TB_OS VALUES('w', 1);
INSERT INTO TB_OS VALUES('', 2);

null값이라 오류라고 나타난 결과값

 

기존에 OS_NAME의 속성은 NOT NULL이기 때문에

INSERT INTO에서 ''값을 넣으려고 하니까 NULL값이라 오류를 뱉어냅니다.

 

ALTER TABLE TB_OS MODIFY( OS_NAME NULL );

INSERT INTO TB_OS VALUES('w', 1);
INSERT INTO TB_OS VALUES('', 2);

SELECT* FROM TB_OS;

결과값

OS_NAME의 속성을 NULL로 변경하니까 NULL값도 입력할 수 있게 변경되었습니다.

 


4. RENAME COLUMN

: 컬럼의 이름을 변경합니다.

ALTER TABLE [테이블명] RENAME COLUMN [바꿀 기존 컬럼명] TO [바뀌어질 컬럼명];

 

예) TB_OS에 있는 OS_NUM 컬럼의 이름을 OS_NO로 변경하시오.

CREATE TABLE TB_OS
(
     OS_NAME CHAR(10),
     OS_NUM   NUMBER
);

INSERT INTO TB_OS VALUES('windows', 1);

SELECT* FROM TB_OS;

 

먼저 TB_OS테이블을 생성하고 INSERT INTO로 windows와 1이란 데이터를 넣어줍니다.

SELECT문으로 확인해보면 아래와 같이 정보가 들어가 있습니다.

 

컬럼인 OS_NUM을 바꾸기 위해 아래와 같은 SQL문을 적어주고 빌드합니다.

ALTER TABLE TB_OS RENAME COLUMN OS_NUM TO OS_NO;

 

아래와 같이 컬럼명이 바뀐 걸 확인할 수 있습니다.


5. ADD CONSTRAINT

: 제약 조건명 지정 SQL입니다.

ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] [제약조건] (컬럼명)

 

예) TB_OS에 있는 OS_NUM의 속성을 기본키로 바꾸시오.

CREATE TABLE TB_OS
(
     OS_NAME CHAR(10),
     OS_NUM   NUMBER
);

ALTER TABLE TB_OS ADD CONSTRAINT PK_TB_OS PRIMARY KEY(OS_NUM);

 


6. DROP CONSTRAINT

: 제약 조건 삭제 SQL입니다.

 

ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건명]

 

예) TB_OS 테이블에 있는 기본키 OS_NUM의 PK(기본키)속성을 삭제하시오.

CREATE TABLE TB_OS
(
     OS_NAME CHAR(10),
     OS_NUM   NUMBER
);

ALTER TABLE TB_OS ADD CONSTRAINT PK_TB_OS PRIMARY KEY(OS_NUM);
ALTER TABLE 
TB_OS DROP CONSTRAINTPK_TB_OS;
반응형

'Programming > 데이터베이스' 카테고리의 다른 글

[SQL] 2_3. DML(DELETE)  (0) 2022.09.13
[SQL] 2_2. DML(UPDATE)  (0) 2022.09.05
[SQL] 2_1. DML(INSERT INTO)  (0) 2022.08.31
[SQL] 1_1. DDL(CREATE TABLE/제약조건)  (0) 2022.08.12

댓글()