저번에 사용한 dogs3 테이블의 정보를 확인하면 다음과 같습니다.

이번에 저희가 볼 부분은 Key 컬럼 입니다. 이에 대해 알아보기전 dogs 테이블에 여러 개의 데이터를 넣어보겠습니다.
INSERT INTO dogs VALUES ("unnamed", 99);
INSERT INTO dogs VALUES ("unnamed", 99);
INSERT INTO dogs VALUES ("unnamed", 99);
INSERT INTO dogs VALUES ("unnamed", 99);
INSERT INTO dogs VALUES ("unnamed", 99);
INSERT INTO dogs VALUES ("unnamed", 99);
INSERT INTO dogs VALUES ("unnamed", 99);
위 코드를 실행한 뒤 테이블을 조회하면 다음과 같습니다.

위 데이터를 보면 강아지에 대한 정보가 많이 들어 있지만 unnamed 라는 강아지가 전부 다른 강아지라면 각 강아지를 구별할 방법이 없습니다.
따라서 모든 강아지에 대해 고유한 값을 부여해서 서로가 다르다는 것을 구분하게 해야합니다. 이 때 사용하는 것이 Key 입니다.
다음과 같은 코드를 작성하여 Key 기능을 추가한 테이블을 생성하겠습니다.
CREATE TABLE dogs4 (
dog_id INT NOT NULL,
name VARCHAR(50),
age INT
);
이렇게 생성된 dogs4 테이블은 데이터를 삽입할 때마다 dog_id를 집어 넣어야합니다. 하지만 다음과 같은 오류가 발생합니다.
INSERT INTO dogs4 VALUES(1, 'a', 1);
INSERT INTO dogs4 VALUES(2, 'a', 1);
INSERT INTO dogs4 VALUES(3, 'a', 1);
INSERT INTO dogs4 VALUES(2, 'a', 1);

위 사진을 보면 dog_id 로 구분하려고 했으나 중복으로 저장이 가능하여 구분이 불가능합니다.
Primary Key는 각 행을 대표하는 Key입니다. 즉 Primary Key는 중복되지 않으며, NULL도 허용되지 않는 값입니다. 다음과 같은 코드를 작성하여 PRIMARY KEY 기능을 추가한 테이블을 생성하겠습니다.
CREATE TABLE dog5 (
dog_id INT NOT NULL PRIMARY KEY,
name VARCHAR(50),
age INT
);
위 코드를 통해서 dog_id 는 PRIMARY KEY 기능을 갖게 되어 중복되면 않되며 NULL값이 허용되지 않는 컬럼이 되었습니다.
INSERT INTO dogs5 VALUES(1, 'a', 1);
INSERT INTO dogs5 VALUES(1, 'a', 1);
따라서 위 코드를 실행하면 다음과 같은 결과가 나옵니다.

첫 번째 문장의 INSERT 는 실행되었지만, 두 번째 INSERT 는 위와 같은 오류가 발생하여 삽입되지 않는 것을 확인할 수 있습니다.