Alter table - 테이블 변경하기
가끔 우리는 테이블을 수정해야 합니다.
- 새로운 컬럼 추가
- 기존 항목을 삭제하거나, 컬럼 타입을 변경하기
우리는 이 모든 변경 사항을 포함하는 새로운 테이블을 만들고, 이전의 테이블은 삭제할 수 있습니다.
그러나, 이 과정 중 데이터를 잃기가 매우 쉬워집니다.
운이 좋게도, SQL은 이미 존재하는 테이블을 조정할 수 있는 문법을 제공합니다.
이 문법은 ALTER TABLE
문법입니다.
이 것은 컬럼의 타입을 만들거나, 삭제하거나, 변경 할 때 쓰일 수 있습니다.
Adding a new column - 새로운 컬럼 추가하기
전 세계의 직원을 가지고 있는 새로운 국제 회사가 있다고 가정 해 보겠습니다.
그리고, 당신은 그들의 레코드들을 유지하는 것을 도울려고 합니다.
employees
테이블은 밑과 같이 생겼습니다. :
first name | last_name | native_city |
---|---|---|
John | Tomas | York |
Lora | Palmer | Tallinn |
Davis | Smith | New York |
지금으로선, 테이블은 어떠한 연락 정보를 저장하지 않았습니다.
하지만, 모두의 연락처 이메일을 가지게 된다면, 매우 좋을 것 입니다.
이 정보에 대한 컬럼을 가지고 있지 않으므로, 열 하나를 추가해야 합니다.
ALTER TABLE
과 ADD COLUMN
간단한 쿼리를 사용하여 테이블의 새로운 컬럼을 추가할 수 있습니다.
밑의 쿼리는 employees 테이블에 employee_email 컬럼을 추가 할 것 입니다.
ALTER TABLE employees
ADD COLUMN employee_email VARCHAR(10);
보시다시피, 우리는 쿼리 내부에 컬럼 타입을 표기하였는데,
이는 테이블과 새로운 컬럼들을 만들 때와 동일한 방식입니다.
이 경우, employee_email
컬럼은 VARCHAR(10)
데이터 타입을 가집니다.
쿼리 실행 이후, employees
테이블에는 텅 빈 연락 이메일 컬럼을 가집니다.
first_name | last_name | native_city | employee_email |
---|---|---|---|
John | Tomas | York | |
Lora | Palmer | Tallinn | |
Davis | Smith | New York |
Changing the data type - 데이터 타입 바꾸기
우리는 VARCHAR(10)
데이터 타입을 가지는 employee_email
컬럼을 만들었습니다.
하지만, 종종 사람들은 아주 긴 이메일을 가지고 있습니다, 'johntomasyork@emailservice.com' 같이 말이죠.
이 이메일은 제한 길이에 맞지 않기 때문에, 컬럼의 데이터 타입을 변경할 때 까지 이메일을 추가할 수 없습니다.
데이터 타입을 바꾸기 위해서, ALTER TABLE
, MODIFY COLUMN
문법을 사용하여 쿼리를 만들어야 합니다.
ALTER TABLE employees
MODIFY COLUMN employee_email VARCHAR(45);
쿼리의 실행 결과로, employee_email
컬럼은 VARCHAR(45)
타입을 가지게 됩니다.
이제 우리는 테이블에 긴 이메일을 추가 할 수 있습니다.
first_name | last_name | native_city | employee_email |
---|---|---|---|
John | Tomas | York | johntomasyork@emailservice.com |
Lora | Palmer | Tallinn | |
Davis | Smith | New York |
당신이 컬럼 타입을 변경하기로 결정했다면, 변경하기 전 컬럼의 내용을 비우거나,
새로운 데이터 타입이 이전의 값과 호환 가능해야 합니다.
그렇게 하지 않는다면, 에러가 뜰 것 입니다.
참고로 여기서는 데이터 타입을 변경하기 위해 MySQL 예제를 제공합니다.
다른 SQL 용어에서는 이 쿼리가 약간 다르게 보일 수 있습니다.
Dropping an existing column - 기존 컬럼 없애기
우리의 테이블 emplyees
에서는, 고향 도시에 대한 정보를 가지고 있습니다.
간결함을 위해, 이 컬럼을 제거 해 봅시다.
테이블에서 이 컬럼을 제거하기 위해서, ALTER TABLE
, DROP COLUMN
을 사용한 밑의 쿼리를 사용합니다.
ALTER TABLE employees
DROP COLUMN native_city;
한 번 이 쿼리를 실행한다면, 테이블 employees
는 밑과 같이 생기게 됩니다. :
first_name | last_name | employee_email |
---|---|---|
John | Tomas | johntomasyork@emailservice.com |
Lora | Palmer | |
Davis | Smith |
이 쿼리가 내부에 저장되어 있는 모든 정보에 대한 컬럼을 삭제한다는 것을 기억하세요.
Renaming a column - 컬럼 이름 바꾸기 (개명)
간결하게 말하자면, 우리는 컬럼 이름 (employee_email) 을 변경할 수 있는데,
이 컬럼이 employees에 속한 이메일이 저장되었다는 것이 명확할 때 변경할 수 있습니다.
이메일 컬럼의 이름을 변경 해 봅시다.
ALTER TABLE
, CHANGE
구문을 이용한 간단한 쿼리로 이를 수행 할 수 있습니다.
ALTER TABLE employees
CHANGE employee_email email VARCHAR(45);
이제 이메일에 대한 컬럼이 더 짧은 이름을 가집니다. :
first_name | last_name | |
---|---|---|
John | Tomas | johntomasyork@emailservice.com |
Lora | Palmer | |
Davis | Smith |
보시다시피, 쿼리 내부에 타입 선언이 있습니다.
이름과 타입을 바꾸고 싶다면, 동시에 이를 수행 할 수 있습니다.
그렇지 않다면, 위의 쿼리 예제처럼 이전 컬럼 타입을 추가하면 됩니다.
우리는 컬럼 이름을 바꾸기 위해 MySQL 구문을 제공합니다.
제발, 기억하세요. 모든 SQL 용어들이 컬럼의 이름을 바꾸기 위해서 같은 구문을 가지고 있지 않습니다.
게다가 그들 중 일부는 이런 기능을 가지고 있지 않습니다.
SQL 을 사용하는 RDBMS 을 대상으로 하는 말이다.
Summary - 요약
이미 존재하는 테이블에 새로운 컬럼을 추가하고 싶다면, 이 간단한 쿼리 템플릿을 사용하세요 :
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE;
밑의 쿼리 템플릿은 테이블의 컬럼을 제거할 수 있습니다 :
ALTER TABLE table_name
DROP COLUMN column_name;
컬럼의 타입을 바꾸기 위해, 이 템플릿을 사용 할 수 있습니다 :
ALTER TABLE table_name
MODIFY COLUMN column_name NEWDATATYPE;
컬럼의 이름을 바꾸기 위해서 (데이터 타입도 가능합니다.), 밑의 템플릿을 사용 할 수 있습니다 :
ALTER TABLE table_name
CHANGE old_column_name new_column_name NEWDATATYPE;
서로 다른 환경의 SQL 용어들은 다를 수도 있다는 것을 기억 해 주세요.
이제 당신은 컬럼을 추가하고, 개명하고, 삭제하며, 데이터 타입을 바꾸는 법에 대해 알고 있습니다.
이것이 ALTER TABLE
이 할 수 있는 전부는 아닙니다.
추후 이 유용한 구문에 대해서 더 배우게 됩니다.
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introducing to SQL' 카테고리의 다른 글
FOREIGN KEY constraint - 외래 키 제약 조건 (2) | 2024.04.21 |
---|---|
PRIMARY KEY constraint - 기본 키 제약 조건 (0) | 2024.04.20 |
Intro to MySQL - MySQL에 대한 소개 (0) | 2024.04.17 |
Basic DELETE statement - 기초적인 DELETE 문법 (0) | 2024.04.16 |
Basic INSERT statement - 기초적인 INSERT 문법 (0) | 2024.04.15 |