MySQL 테이블에 기본 키 추가

Mehvish Ashiq 2023년6월20일
  1. MySQL 테이블에 기본 키 추가
  2. CREATE TABLE을 사용하여 MySQL에서 기본 키 추가
  3. ALTER TABLE을 사용하여 MySQL에서 기본 키 추가
MySQL 테이블에 기본 키 추가

이 문서에서는 CREATE TABLEALTER TABLE 문을 사용하여 MySQL 테이블에 기본 키를 추가하는 방법을 설명합니다.

MySQL 테이블에 기본 키 추가

primary key를 추가하기 전에 다음 규칙을 지키는 것이 중요합니다.

  1. 기본 키 필드 값은 고유해야 합니다.
  2. 기본 키 생성에 사용되는 열은 비어 있거나 NULL일 수 없습니다.
  3. MySQL Server는 이미 존재하는 기본 키로 새 레코드를 삽입하지 않습니다.
  4. 테이블에는 하나의 기본 키만 허용됩니다.

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 열 아래의 PRIField 열의 해당 값이 기본 키 생성에 사용됨을 보여줍니다.

여러 열을 사용하여 기본 키를 생성한다고 가정합니다. 그러면 아래와 같이 할 수 있습니다.

예제 코드:

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_IDSTUDENT_ID가 기본 키로 사용됨을 의미합니다.

쉼표(,)로 구분된 여러 열을 포함할 때 테이블(관계) 제약 조건으로 기본 키 제약을 사용해야 하지만 단일 열로도 수행할 수 있습니다. 다음 쿼리를 참조하세요.

예제 코드:

CREATE TABLE students(
	ID INT NOT NULL,
    STUDENT_NAME VARCHAR(50) NOT NULL,
    PRIMARY KEY(ID)
);

기본 키에는 열이 하나만 있지만 기본 키 제약 조건을 테이블 제약 조건으로 사용합니다. 테이블 수준 제약 조건과 열 수준 제약 조건의 차이점은 여기에서 확인할 수 있습니다.

ALTER TABLE을 사용하여 MySQL에서 기본 키 추가

우리는 테이블을 생성한 후 중복을 피하기 위해 테이블 내의 특정 열이 기본 키여야 한다는 것을 깨달았습니다. 이 경우 ALTER TABLE 문을 사용합니다.

테이블에 기본 키가 포함되어 있지 않은 경우 이 명령문을 사용하면 기존 테이블의 열에 대한 기본 키를 수정하고 만들 수 있습니다. 열로 IDFULLNAME이 있는 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)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - MySQL Key