[SQL] SQL DDL 기초(3)

업데이트:     Updated:

카테고리:

태그:

🚀 1. 개요

(DDL: Data Definition Language)중 ALTER문에 대해 알아본다.

  • CREATE - 데이터베이스, 테이블 생성
  • ALTER - 테이블 변경
  • DROP - 테이터베이스, 테이블 삭제

2. ALTER

2.1 ALTER TABLE


ALTER TABLE문은 기존 테이블의 열을 추가, 삭제 또는 수정하는 데 사용됩니다.

2.1.1 열 추가

다음 SQL은 “Customers” 테이블에 “Email” 열을 추가합니다.

ALTER TABLE Customers
ADD Email varchar(255);
2.1.2 열 삭제

다음 SQL은 “Customers” 테이블에서 “Email” 열을 삭제합니다. (일부 데이터베이스 시스템에서는 열 삭제를 허용하지 않습니다.)

ALTER TABLE Customers
DROP COLUMN Email;
2.1.3 열 이름 바꾸기

테이블의 열 이름을 바꾸려면 다음 구문을 사용합니다.

ALTER TABLE table_name
RENAME COLUMN old_name to new_name;
2.1.4 데이터 유형 변경

테이블에서 열의 데이터 유형을 변경하려면 다음 구문을 사용합니다.

-- MySQL/Oracle(10G 이전버전)
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;
-- Oracle(10G 이후버전)
ALTER TABLE table_name
MODIFY column_name datatype;

2.2 제약 조건


ALTER TABLE문은 기존 테이블에 다양한 제약 조건을 추가하고 삭제하는 데에도 사용됩니다.

2.2.1 NOT NULL

이미 생성된 “Persons” 테이블의 “Age” 열에 NOT NULL 제약 조건을 생성하려면 다음 SQL을 사용합니다.

ALTER TABLE Persons
MODIFY COLUMN Age int NOT NULL;
-- Oracle(10G 이후버전)
ALTER TABLE table_name
MODIFY Age int NOT NULL;
2.2.2 UNIQUE
2.2.2.1 생성

테이블이 이미 생성된 경우 “ID” 열에 UNIQUE 제약 조건을 생성하려면 다음 SQL을 사용합니다.

ALTER TABLE Persons
ADD UNIQUE (ID);

제약 조건의 이름(UC_Person)을 지정하고 여러 열(ID,LastName)에 UNIQUE 제약 조건을 정의하려면 다음 SQL 문을 사용합니다.

ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);
2.2.2.2 삭제

UNIQUE 제약 조건을 삭제하려면 다음 SQL을 사용합니다.

-- MySQL
ALTER TABLE Persons
DROP INDEX UC_Person;
-- Oracle
ALTER TABLE Persons
DROP CONSTRAINT UC_Person;
2.2.3 PRIMARY KEY
2.2.3.1 생성

테이블이 이미 생성된 경우 “ID” 열에 PRIMARY KEY 제약 조건을 생성하려면 다음 SQL을 사용합니다.

ALTER TABLE Persons
ADD PRIMARY KEY (ID);

제약 조건의 이름(PK_Person)을 지정하고 여러 열(ID,LastName)에 PRIMARY KEY 제약 조건을 정의하려면 다음 SQL 문을 사용합니다.

ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);
2.2.3.2 삭제

PRIMARY KEY 제약 조건을 삭제하려면 다음 SQL을 사용합니다.

-- MySQL
ALTER TABLE Persons
DROP PRIMARY KEY;

-- Oracle
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
2.2.4 FOREIGN KEY
2.2.4.1 생성

“Orders” 테이블이 이미 생성된 경우 “PersonID” 열에 FOREIGN KEY 제약 조건을 생성하려면 다음 SQL을 사용합니다.

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)

제약 조건의 이름(FK_PersonOrder)을 지정하고 여러 열에 FOREIGN KEY 제약 조건을 정의하려면 다음 SQL을 사용합니다.

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
2.2.4.2 삭제

FOREIGN KEY 제약 조건을 삭제하려면 다음 SQL을 사용합니다.

-- MySQL
ALTER TABLE Persons
DROP FOREIGN KEY FK_PersonOrder;

-- Oracle
ALTER TABLE Persons
DROP CONSTRAINT FK_PersonOrder;
2.2.5 CHECK
2.2.5.1 생성

테이블이 이미 생성되었을 때 “Age” 열에 CHECK 제약 조건을 생성하려면 다음 SQL을 사용합니다.

ALTER TABLE Persons
ADD CHECK (Age>=18);

제약 조건의 이름(CHK_PersonAge)을 지정하고 여러 열에 대한 CHECK 제약 조건을 생성하려면 다음 SQL을 사용합니다.

ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
2.2.5.2 삭제

CHECK 제약 조건을 삭제하려면 다음 SQL을 사용합니다.

-- MySQL
ALTER TABLE Persons
DROP CHECK CHK_PersonAge

-- Oracle
ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;
2.2.6 DEFAULT
2.2.6.1 생성

테이블이 이미 생성된 경우 “City” 열에 DEFAULT 제약 조건을 생성하려면 다음 SQL을 사용합니다.

-- MySQL
ALTER TABLE Persons
ALTER City SET DEFAULT 'Sandnes';

-- Oracle
ALTER TABLE Persons
MODIFY City DEFAULT 'Sandnes';
2.2.6.2 삭제

DEFAULT 제약 조건을 삭제하려면 다음 SQL을 사용합니다.

-- MySQL
ALTER TABLE Persons
ALTER City DROP DEFAULT;

-- Oracle
ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;

📌 출처

W3schools-SQL 튜토리얼-SQL DATABASE


👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄

맨 위로 이동하기

SQL 카테고리 내 다른 글 보러가기

댓글남기기