MySQL에서 KEY 키워드란?
MySQL 공식 문서에서는 KEY 키워드에 대해 다음과 같이 설명하고 있습니다.
KEY는 일반적으로 INDEX의 동의어(synonym)입니다. 또한 컬럼 정의(column definition) 시 PRIMARY KEY 속성은 단순히 KEY라고만 지정할 수도 있으며, 이는 다른 데이터베이스 시스템과의 호환성을 위해 구현된 기능입니다.
즉, KEY와 INDEX는 MySQL에서 사실상 같은 의미로 사용되므로, 상황에 맞게 편한 쪽을 선택해 사용하면 됩니다.
예제 테이블 생성하기
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(50),
Age int
);
Query OK, 0 rows affected (0.69 sec)
위 쿼리에서 Id 컬럼은 AUTO_INCREMENT 속성과 함께 PRIMARY KEY로 지정되었습니다. 참고로 여기서 PRIMARY KEY 대신 단순히 KEY라고만 작성해도 동일하게 동작합니다.
INDEX 생성하기 (KEY의 동의어)
다음은 KEY의 동의어인 INDEX를 생성하는 쿼리입니다.
mysql> create index Name_Age_Index on DemoTable(Name,Age); Query OK, 0 rows affected (0.65 sec) Records: 0 Duplicates: 0 Warnings: 0
Name과 Age 두 컬럼을 묶어 복합 인덱스(composite index)를 생성했습니다. 이렇게 하면 이름과 나이를 함께 조건으로 검색하는 쿼리의 성능이 향상됩니다.
테이블 구조 확인하기
DESC 명령으로 테이블 구조를 다시 한번 확인해 보겠습니다.
mysql> desc DemoTable;
실행 결과는 다음과 같습니다.
+-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(50) | YES | MUL | NULL | | | Age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 3 rows in set (0.01 sec)
출력 결과를 보면 Id 컬럼의 Key 값은 PRI(Primary Key)로 표시되고, 인덱스가 걸린 Name 컬럼은 MUL(Multiple)로 표시되는 것을 확인할 수 있습니다.
데이터 삽입 및 조회하기
INSERT 명령을 사용해 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable(Name,Age) values('Robert',21);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Name,Age) values('Bob',23);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Name,Age) values('David',22);
Query OK, 1 row affected (0.39 sec)
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+--------+------+ | Id | Name | Age | +----+--------+------+ | 2 | Bob | 23 | | 3 | David | 22 | | 1 | Robert | 21 | +----+--------+------+ 3 rows in set (0.00 sec)
정리
MySQL에서 KEY는 INDEX의 동의어이며, 컬럼 정의 시에는 PRIMARY KEY를 KEY로 축약해 사용할 수 있습니다. 이는 다른 DBMS와의 호환성을 고려한 설계입니다. 다만 실무에서는 코드의 명확성을 위해 PRIMARY KEY와 INDEX라는 용어를 그대로 사용하는 것이 좋습니다.