MySQL 테이블에 기본 키 추가
이 문서에서는 CREATE TABLE
및 ALTER TABLE
문을 사용하여 MySQL 테이블에 기본 키를 추가하는 방법을 설명합니다.
MySQL 테이블에 기본 키 추가
primary key를 추가하기 전에 다음 규칙을 지키는 것이 중요합니다.
- 기본 키 필드 값은 고유해야 합니다.
- 기본 키 생성에 사용되는 열은 비어 있거나
NULL
일 수 없습니다. - MySQL Server는 이미 존재하는 기본 키로 새 레코드를 삽입하지 않습니다.
- 테이블에는 하나의 기본 키만 허용됩니다.
CREATE TABLE
문 또는 ALTER TABLE
문을 사용하여 기본 키를 생성할 수 있습니다. 아래에서 둘 다 보자.
CREATE TABLE
을 사용하여 MySQL에서 기본 키 추가
일반적으로 테이블을 생성하는 동안 기본 키를 생성합니다. 기본 키에 단일 열이 있는 경우 다음 방법이 선호됩니다.
기본 키 제약 조건을 필드(열) 제약 조건으로 사용합니다.
예제 코드:
CREATE TABLE students(
ID INT NOT NULL PRIMARY KEY,
STUDENT_NAME VARCHAR(50) NOT NULL
);
다음 명령문을 사용하여 기본 키가 생성되었는지 확인합니다.
DESCRIBE students;
# Alternatively, we can write as given below
DESC students;
출력:
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| ID | int | NO | PRI | NULL | |
| STUDENT_NAME | varchar(50) | NO | | NULL | |
+--------------+-------------+------+-----+---------+-------+
2 rows in set (0.04 sec)
위의 출력에서 Key
열 아래의 PRI
는 Field
열의 해당 값이 기본 키 생성에 사용됨을 보여줍니다.
여러 열을 사용하여 기본 키를 생성한다고 가정합니다. 그러면 아래와 같이 할 수 있습니다.
예제 코드:
CREATE TABLE courses(
COURSE_ID INT NOT NULL,
STUDENT_ID INT NOT NULL,
COURSE_NAME VARCHAR(50) NOT NULL,
CONSTRAINT PK_STUDENT_COURSE
PRIMARY KEY (COURSE_ID,STUDENT_ID)
);
DESCRIBE
문을 사용하여 기본 키가 생성되었는지 확인합니다.
DESCRIBE courses
출력:
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| COURSE_ID | int | NO | PRI | NULL | |
| STUDENT_ID | int | NO | PRI | NULL | |
| COURSE_NAME | varchar(50) | NO | | NULL | |
+-------------+-------------+------+-----+---------+-------+
3 rows in set (0.43 sec)
Key
열에 두 개의 PRI
값이 표시되는데, 이는 COURSE_ID
및 STUDENT_ID
가 기본 키로 사용됨을 의미합니다.
쉼표(,
)로 구분된 여러 열을 포함할 때 테이블(관계) 제약 조건으로 기본 키 제약을 사용해야 하지만 단일 열로도 수행할 수 있습니다. 다음 쿼리를 참조하세요.
예제 코드:
CREATE TABLE students(
ID INT NOT NULL,
STUDENT_NAME VARCHAR(50) NOT NULL,
PRIMARY KEY(ID)
);
기본 키에는 열이 하나만 있지만 기본 키 제약 조건을 테이블 제약 조건으로 사용합니다. 테이블 수준 제약 조건과 열 수준 제약 조건의 차이점은 여기에서 확인할 수 있습니다.
ALTER TABLE
을 사용하여 MySQL에서 기본 키 추가
우리는 테이블을 생성한 후 중복을 피하기 위해 테이블 내의 특정 열이 기본 키여야 한다는 것을 깨달았습니다. 이 경우 ALTER TABLE
문을 사용합니다.
테이블에 기본 키가 포함되어 있지 않은 경우 이 명령문을 사용하면 기존 테이블의 열에 대한 기본 키를 수정하고 만들 수 있습니다. 열로 ID
및 FULLNAME
이 있는 person
테이블이 있다고 가정합니다.
예제 코드:
# Create a table without a primary key
CREATE TABLE person(
ID INT NOT NULL,
FULLNAME VARCHAR(50) NOT NULL
);
# Describe `person` table
DESCRIBE person;
출력:
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID | int | NO | | NULL | |
| FULLNAME | varchar(50) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.07 sec)
위의 출력에는 기본 키가 없습니다. 이제 아래와 같이 ALTER TABLE
문을 사용하여 원하는 열에 기본 키를 생성할 수 있습니다.
예제 코드:
ALTER TABLE person ADD PRIMARY KEY(ID);
기본 키 생성에 사용되는 필드는 고유한 값을 가져야 하며 NULL
을 포함하거나 비어 있지 않아야 합니다. 이제 DESCRIBE
문을 사용하여 기본 키가 성공적으로 생성되었는지 확인합니다.
예제 코드:
DESCRIBE person;
출력:
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID | int | NO | PRI | NULL | |
| FULLNAME | varchar(50) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.07 sec)