MySQL에서
ALTER TABLE
문을 사용하여 테이블을 수정합니다.
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
grade CHAR(1)
);
INSERT INTO students (name, grade)
VALUES
('Alice', 'A'),
('Bob', 'B'),
('Charlie', 'C');
id | name | grade | |
---|---|---|---|
1 | Alice | A | |
2 | Bob | B | |
3 | Charlie | C |
구문
ALTER TABLE 테이블명 ADD 열이름 데이터타입;
예시 코드
ALTER TABLE students ADD birthdate DATE;
students
테이블에 birthdate
라는 이름의 DATE
형식의 열을 추가합니다.
id | name | grade | birthdate | |
---|---|---|---|---|
1 | Alice | A | NULL | |
2 | Bob | B | NULL | |
3 | Charlie | C | NULL |
birthdate
열이 추가되었지만, 아직 데이터가 없으므로 값은 모두 NULL
로 표시됩니다.
구문
ALTER TABLE 테이블명 DROP COLUMN 열이름;
예시 코드
ALTER TABLE students DROP COLUMN birthdate;
students
테이블에서 birthdate
열을 삭제하는 명령입니다.
id | name | grade | |
---|---|---|---|
1 | Alice | A | |
2 | Bob | B | |
3 | Charlie | C |
birthdate
열이 삭제되고 원래의 테이블로 돌아갑니다.
열의 이름을 변경하거나 데이터 타입을 수정할 수 있습니다.
구문
ALTER TABLE 테이블명 CHANGE COLUMN 기존열이름 새열이름 새데이터타입;
예시 코드
ALTER TABLE students CHANGE COLUMN grade student_grade VARCHAR(2)
grade
열의 이름을 student_grade
로 변경하고, 데이터 타입을 VARCHAR(2)
로 수정합니다.
테이블 구조 출력시 student_grade type이 VARCHAR(2)
로 변경된 것을 볼 수 있습니다.
DESC students;
Field | Type | Null | Key | Default | Extra | |
---|---|---|---|---|---|---|
id | int | NO | PRI | auto_increment | ||
name | varchar(50) | YES | ||||
student_grade | varchar(2) | YES |
열 이름은 그대로 유지하면서 데이터 타입만 변경하고 싶을 때는 MODIFY
를 사용합니다.
구문
ALTER TABLE 테이블명 MODIFY COLUMN 열이름 새데이터타입;
예시 코드
ALTER TABLE students MODIFY COLUMN student_grade CHAR(2);
student_grade
열의 데이터 타입을 CHAR(2)
로 변경합니다.
테이블 구조 출력시 student_grade type이 CHAR(2)
로 변경된 것을 볼 수 있습니다.
DESC students;
Field | Type | Null | Key | Default | Extra | |
---|---|---|---|---|---|---|
id | int | NO | PRI | auto_increment | ||
name | varchar(50) | YES | ||||
student_grade | char(2) | YES |
기존 열에 기본값을 설정할 때는 ALTER TABLE
과 SET DEFAULT
를 사용합니다.
구문
ALTER TABLE 테이블명 ALTER COLUMN 열이름 SET DEFAULT 기본값;
예시 코드
ALTER TABLE students ALTER COLUMN grade SET DEFAULT 'A';
grade
열의 기본값을 'A'로 설정합니다.
INSERT INTO students (name) VALUES ('David');
id | name | student_grade | |
---|---|---|---|
1 | Alice | A | |
2 | Bob | B | |
3 | Charlie | C | |
4 | David | A |
David
학생은 student_grade
값이 지정되지 않았으므로 기본값으로 'A'가 자동으로 삽입되었습니다.
기본값을 제거하고 싶다면 DROP DEFAULT
를 사용합니다.
구문
ALTER TABLE 테이블명 ALTER COLUMN 열이름 DROP DEFAULT;
예시 코드
ALTER TABLE students ALTER COLUMN student_grade DROP DEFAULT;
INSERT INTO students (name) VALUES ('Eve');
id | name | student_grade | |
---|---|---|---|
1 | Alice | A | |
2 | Bob | B | |
3 | Charlie | C | |
4 | David | A | |
5 | Eve | NULL |
기본값이 제거되었기 때문에, Eve
의 student_grade
값이 NULL
로 설정됩니다.
구문
ALTER TABLE 기존테이블명 RENAME TO 새테이블명;
예시 코드
ALTER TABLE students RENAME TO learners;
아래 SELECT 문 실행 시 수정된 테이블명이 적용되었음을 알 수 있습니다.
SELECT * FROM students; -- table명 수정으로 존재 x
SELECT * FROM learners;