SQL : ALTER TABLE 문
이 SQL 튜토리얼에서는 명확하고 간결한 예제와 함께 SQL ALTER TABLE 문을 사용하여 열 추가, 열 수정, 열 삭제, 열 이름 바꾸기 또는 테이블 이름 바꾸기를 수행하는 방법을 설명합니다. 또한 직접 해볼 수 있는 몇 가지 연습 문제도 추가했습니다.
설명
SQL ALTER TABLE 문은 테이블의 열을 추가, 수정 또는 삭제하는 데 사용됩니다. SQL ALTER TABLE 문은 테이블 이름을 변경하는 데도 사용됩니다.
테이블에 열 추가
구문
테이블에 열을 추가하려면 SQL의 ALTER TABLE 구문을 사용합니다.
ALTER TABLE table_name
ADD column_name column_definition;
예제
열을 추가하는 SQL ALTER TABLE 예제를 살펴보겠습니다.
예를 들어
ALTER TABLE supplier
ADD supplier_name char(50);
이 SQL ALTER TABLE 예제에서는 supplier 테이블에 supplier_name이라는 열을 추가합니다.
테이블에 여러 열 추가
구문
기존 테이블에 여러 열을 추가하려면 SQL ALTER TABLE 구문을 사용합니다.
ALTER TABLE table_name
ADD (column_1 column_definition,
column_2 column_definition,
...
column_n column_definition);
예제
둘 이상의 열을 추가하는 SQL ALTER TABLE 예제를 살펴보겠습니다.
예를 들어
ALTER TABLE supplier
ADD (supplier_name char(50),
city char(45));
이 SQL ALTER TABLE 예제에서는 supplier 테이블에 char(50) 필드인 supplier_name과 char(45) 필드인 city라는 두 열을 추가합니다.
테이블의 열 수정
구문
기존 테이블의 열을 수정하려면 SQL ALTER TABLE 구문을 사용합니다.
Oracle, MySQL, MariaDB의 경우
ALTER TABLE table_name
MODIFY column_name column_type;
SQL Server의 경우
ALTER TABLE table_name
ALTER COLUMN column_name column_type;
PostgreSQL의 경우
ALTER TABLE table_name
ALTER COLUMN column_name TYPE column_definition;
예제
ALTER TABLE 문을 사용하여 supplier_name이라는 열을 수정하는 방법의 예를 살펴보겠습니다. 대부분의 데이터베이스에는 약간 다른 구문이 있다는 점에 유의하세요.
Oracle의 경우
ALTER TABLE supplier
MODIFY supplier_name char(100) NOT NULL;
MySQL 및 MariaDB의 경우
ALTER TABLE supplier
MODIFY supplier_name VARCHAR(100) NOT NULL;
SQL Server의 경우
ALTER TABLE supplier
ALTER COLUMN supplier_name VARCHAR(100) NOT NULL;
PostgreSQL의 경우
ALTER TABLE supplier
ALTER COLUMN supplier_name TYPE CHAR(100),
ALTER COLUMN supplier_name SET NOT NULL;
테이블에서 여러 열 수정
구문
기존 테이블의 여러 열을 수정하려면 SQL ALTER TABLE 구문을 사용합니다.
Oracle의 경우
ALTER TABLE table_name
MODIFY (column_1 column_type,
column_2 column_type,
...
column_n column_type);
MySQL 및 MariaDB의 경우
ALTER TABLE table_name
MODIFY column_1 column_definition
[ FIRST | AFTER column_name ],
MODIFY column_2 column_definition
[ FIRST | AFTER column_name ],
...
;
PostgreSQL의 경우
ALTER TABLE table_name
ALTER COLUMN column_name TYPE column_definition,
ALTER COLUMN column_name TYPE column_definition,
...
;
예제
ALTER TABLE 문을 사용하여 둘 이상의 열을 수정하는 예제를 살펴보겠습니다. 이 예제에서는 supplier_name 및 city라는 두 열을 수정합니다.
Oracle의 경우
ALTER TABLE supplier
MODIFY (supplier_name char(100) NOT NULL,
city char(75));
MySQL 및 MariaDB의 경우
ALTER TABLE supplier
MODIFY supplier_name VARCHAR(100) NOT NULL,
MODIFY city VARCHAR(75);
PostgreSQL의 경우
ALTER TABLE supplier
ALTER COLUMN supplier_name TYPE CHAR(100),
ALTER COLUMN supplier_name SET NOT NULL,
ALTER COLUMN city TYPE CHAR(75);
테이블에서 열 제거
구문
기존 테이블에서 열을 삭제하려면 SQL ALTER TABLE 구문을 사용합니다.
ALTER TABLE table_name
DROP COLUMN column_name;
예제
테이블에서 열을 삭제하는 예제를 살펴보겠습니다.
예를 들어
ALTER TABLE supplier
DROP COLUMN supplier_name;
이 SQL ALTER TABLE 예제는 supplier라는 테이블에서 supplier_name이라는 열을 삭제합니다.
테이블에서 열 이름 바꾸기
구문
기존 테이블의 열 이름을 바꾸려면 SQL ALTER TABLE 구문을 사용합니다.
Oracle 및 PostgreSQL의 경우
ALTER TABLE table_name
RENAME COLUMN old_name TO new_name;
SQL Server의 경우(sp_rename이라는 저장 프로시저를 사용하여)
sp_rename 'table_name.old_column', 'new_name', 'COLUMN';
MySQL 및 MariaDB의 경우
ALTER TABLE table_name
CHANGE COLUMN old_name TO new_name;
예제
supplier 테이블의 열 이름을 supplier_name에서 sname으로 변경하는 예제를 살펴보겠습니다.
Oracle(9i Rel2 이상) 및 PostgreSQL의 경우
ALTER TABLE supplier
RENAME COLUMN supplier_name TO sname;
SQL Server의 경우(sp_rename이라는 저장 프로시저를 사용하여)
sp_rename 'supplier.supplier_name', 'sname', 'COLUMN';
MySQL 및 MariaDB의 경우
ALTER TABLE supplier
CHANGE COLUMN supplier_name sname VARCHAR(100);
MySQL 및 MariaDB에서는 열 이름을 변경할 때 열의 데이터 유형을 지정해야 합니다.
테이블 이름 바꾸기
구문
테이블 이름을 바꾸려면 SQL ALTER TABLE 구문을 사용합니다.
Oracle, MySQL, MariaDB, PostgreSQL, SQLite의 경우
ALTER TABLE table_name
RENAME TO new_table_name;
SQL Server의 경우(sp_rename이라는 저장 프로시저 사용)
sp_rename 'table_name', 'new_table_name';
예제
supplier라는 테이블의 이름을 새 이름인 vendor로 변경하는 예를 살펴보겠습니다.
Oracle, MySQL, MariaDB, PostgreSQL, SQLite의 경우
ALTER TABLE supplier
RENAME TO vendor;
SQL Server의 경우(sp_rename이라는 저장 프로시저 사용)
sp_rename 'supplier', 'vendor';
연습 문제 #1
아래 departments 테이블을 기준으로 departments 테이블의 이름을 depts로 바꿉니다.
CREATE TABLE departments
( department_id int NOT NULL,
department_name char(50) NOT NULL,
CONSTRAINT departments_pk PRIMARY KEY (department_id)
);
연습 문제 풀이 #1
다음 SQL ALTER TABLE 문은 departments 테이블의 이름을 depts로 변경합니다.
ALTER TABLE departments
RENAME TO depts;
연습 문제 #2
아래 employees 테이블을 기반으로 int 데이터 유형인 salary라는 열을 추가합니다.
CREATE TABLE employees
( employee_number int NOT NULL,
employee_name char(50) NOT NULL,
department_id int,
CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);
연습 문제 풀이 #2
다음 SQL ALTER TABLE 문은 employees 테이블에 salary 열을 추가합니다.
ALTER TABLE employees
ADD salary int;
연습 문제 #3
아래 customers 테이블을 기반으로 두 개의 열을 추가합니다. 하나는 char(50) 데이터 유형인 contact_name이라는 열이고 다른 하나는 날짜 데이터 유형인 last_contacted라는 열입니다.
CREATE TABLE customers
( customer_id int NOT NULL,
customer_name char(50) NOT NULL,
address char(50),
city char(50),
state char(25),
zip_code char(10),
CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);
연습 문제 풀이 #3
다음 SQL ALTER TABLE 문은 customers 테이블에 contact_name 및 last_contacted 열을 추가합니다:
ALTER TABLE customers
ADD (contact_name char(50),
last_contacted date);
연습 문제 #4
아래 employees 테이블을 기반으로 employee_name 열을 char(75) 데이터 유형으로 변경합니다.
CREATE TABLE employees
( employee_number int NOT NULL,
employee_name char(50) NOT NULL,
department_id int,
CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);
연습 문제 풀이 #4
다음 SQL ALTER TABLE 문은 employee_name 열의 데이터 유형을 char(75)로 변경합니다.
ALTER TABLE employees
MODIFY employee_name char(75);
연습 문제 #5
아래 customers 테이블을 기반으로 customer_name 열을 null 값 허용 안 함으로 변경하고 state 열을 char(2) 데이터 유형으로 변경합니다.
CREATE TABLE customers
( customer_id int NOT NULL,
customer_name char(50),
address char(50),
city char(50),
state char(25),
zip_code char(10),
CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);
연습 문제 풀이 #5
다음 SQL ALTER TABLE 문은 customers 테이블에서 customer_name 및 state 열을 적절하게 수정합니다.
ALTER TABLE customers
MODIFY (customer_name char(50) NOT NULL,
state char(2));
연습 문제 #6
아래 employees 표를 기준으로 salary 열을 삭제합니다.
CREATE TABLE employees
( employee_number int NOT NULL,
employee_name char(50) NOT NULL,
department_id int,
salary int,
CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);
연습 문제 풀이 #6
다음 SQL ALTER TABLE 문은 employees 테이블에서 salary 열을 삭제합니다:
ALTER TABLE employees
DROP COLUMN salary;
연습 문제 #7
아래 departments 표에 따라 department_name 열의 이름을 dept_name으로 바꿉니다.
CREATE TABLE departments
( department_id int NOT NULL,
department_name char(50) NOT NULL,
CONSTRAINT departments_pk PRIMARY KEY (department_id)
);
연습 문제 풀이 #7
다음 SQL ALTER TABLE 문은 departments 테이블에서 department_name 열의 이름을 dept_name으로 변경합니다.
ALTER TABLE departments
RENAME COLUMN department_name to dept_name;
'Database > SQL' 카테고리의 다른 글
VIEWS (0) | 2023.03.28 |
---|---|
DROP TABLE (0) | 2023.03.28 |
Primary Keys (0) | 2023.03.27 |
CREATE TABLE AS (0) | 2023.03.26 |
CREATE TABLE (0) | 2023.03.26 |