Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 단일 쿼리로 컬럼과 인덱스 동시에 추가하는 방법

MySQL에서 기존 테이블에 새로운 컬럼과 해당 컬럼의 인덱스를 한 번의 쿼리로 동시에 추가하려면 ALTER TABLE 문과 ADD 절을 활용하면 됩니다.

기본 문법

ALTER TABLE yourTableName
ADD yourColumnName DATETIME DEFAULT NOW(),
ADD INDEX(yourColumnName);

위 문법처럼 ADD 절을 여러 번 사용해 컬럼 추가와 인덱스 생성 작업을 하나의 쿼리로 처리할 수 있습니다.

예제 테이블 생성

먼저 실습용 테이블을 만들어 보겠습니다.

mysql> CREATE TABLE DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(100),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.69 sec)

테이블 구조 확인

DESC 명령으로 테이블 구조를 확인해 보겠습니다.

mysql> DESC DemoTable;

출력 결과

+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)

현재 테이블에는 Id와 Name 두 개의 컬럼만 존재합니다.

컬럼과 인덱스 동시 추가하기

이제 단일 쿼리로 ArrivalDate라는 DATETIME 타입의 컬럼과 그에 대한 인덱스를 동시에 추가해 보겠습니다.

mysql> ALTER TABLE DemoTable
-> ADD ArrivalDate DATETIME DEFAULT NOW(),
-> ADD INDEX(ArrivalDate);
Query OK, 0 rows affected (2.05 sec)
Records: 0 Duplicates: 0 Warnings: 0

쿼리가 성공적으로 실행되었습니다. 이제 변경된 테이블 구조를 다시 확인해 보겠습니다.

mysql> DESC DemoTable;

출력 결과

+-------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+-------------------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(100) | YES | | NULL | |
| ArrivalDate | datetime | YES | MUL | CURRENT_TIMESTAMP | |
+-------------+--------------+------+-----+-------------------+----------------+
3 rows in set (0.01 sec)

결과 분석

출력 결과를 보면 다음과 같은 변화를 확인할 수 있습니다.

1. 새 컬럼 추가: ArrivalDate 컬럼이 datetime 타입으로 추가되었으며, 기본값(Default)이 CURRENT_TIMESTAMP로 설정되어 있습니다. 즉, 별도의 값을 지정하지 않으면 레코드가 삽입되는 시점의 현재 시간이 자동으로 저장됩니다.

2. 인덱스 생성: Key 항목이 MUL로 표시된 것을 알 수 있습니다. MUL은 해당 컬럼이 인덱스의 첫 번째 컬럼이거나 유니크하지 않은 인덱스로 지정되었음을 의미합니다.

이처럼 ALTER TABLE 문 하나만으로 컬럼 추가와 인덱스 생성을 동시에 처리할 수 있어, 데이터베이스 스키마 변경 작업을 더욱 효율적으로 수행할 수 있습니다.