반응형
[MariaDB] 마리아DB 테이블 - 기본키 제약조건(PRIMARY KEY) (MySQL)
MariaDB는 데이터의 무결성을 위해서 다음의 6가지 제약조건을 제공합니다.
- PRIMARY KEY 제약조건
- FOREIGN KEY 제약조건
- UNIQUE 제약 조건
- CHECK 제약조건(MariaDB 10.2.1부터 지원, MySQL 8.0.16부터 지원)
- DEFAULT 정의
- NULL 값 허용
이번 포스팅에서는 기본키 제약조건에 대해서 설명하겠습니다.
기본키 제약조건
기본키는 중복될 수 없는 열의 유일한 값이어야 하며, NULL 값이 입력될 수 없습니다.
기본키를 생성하는 방법은 앞서 설명드린 포스팅과 같이 CREATE TABLE문에서 PRIMARY KEY라는 예약어를 넣어주면 됩니다.
DROP TABLE IF EXISTS buyTBL, userTBL; -- 이전 포스팅에서 생성한 테이블(buyTBL, userTBL)이 존재하면 삭제(DROP)
CREATE TABLE userTBL -- userTBL 테이블 생성
( userID CHAR(8) NOT NULL PRIMARY KEY, -- 기본키를 생성, 기본키는 반드시 not null 이어야 함.
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL
);
DESCRIBE userTBL; 쿼리를 실행하면 userID가 기본키가 된 것을 확인할 수 있습니다.
이미 생성된 테이블에 기본키를 지정하고 싶을때는 아래처럼 ALTER 문으로 기본키 지정이 가능합니다.
DROP TABLE IF EXISTS userTBL;
CREATE TABLE userTBL
( userID CHAR(8) NOT NULL,
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL
);
ALTER TABLE userTBL -- userTBL 테이블 변경
ADD CONSTRAINT PRIMARY KEY (userID); -- 추가 강제 기본키 (열이름)
또한, 단순이 하나의 열을 기본키로 지정하는게 아니라 두개의 열을 합쳤을 때 중복되는 값이 없다면 두개의 열을 기본키로 지정 할 수도 있습니다.
-- 방법1 (테이블 생성 시 지정)
DROP TABLE IF EXISTS prodTbl;
CREATE TABLE prodTbl
( prodCode CHAR(3) NOT NULL,
prodID CHAR(4) NOT NULL,
prodDate DATETIME NOT NULL,
prodCur CHAR(10) NULL,
CONSTRAINT PRIMARY KEY (prodCode, prodID) -- 기본키를 (prodCode, prodID) 두개 열로 지정
);
-- 방법2 (테이블 생성 후 ALTER 문으로 추가 지정)
DROP TABLE IF EXISTS prodTbl;
CREATE TABLE prodTbl
( prodCode CHAR(3) NOT NULL,
prodID CHAR(4) NOT NULL,
prodDate DATETIME NOT NULL,
prodCur CHAR(10) NULL
);
ALTER TABLE prodTbl
ADD CONSTRAINT PRIMARY KEY (prodCode, prodID) ; -- 기본키를 (prodCode, prodID) 두개 열로 지정
SHOW INDEX FROM prodTbl; 문으로 테이블의 정보를 확인하면 두 열이 합쳐져서 하나의 기본키 제약조건을 설정한 것을 확인할 수 있습니다.
반응형
'MariaDB' 카테고리의 다른 글
[MariaDB] 마리아DB 테이블 - 외래키 제약조건(FOREIGN KEY) (MySQL) (3) | 2020.09.11 |
---|---|
[MariaDB] 마리아DB 테이블 - SQL로 테이블 생성 및 기본키 외래키 설정 (MySQL) (0) | 2020.09.11 |
[MariaDB] 마리아DB 테이블 - HeidiSQL로 테이블 생성 및 기본키 외래키 설정 (MySQL) (0) | 2020.09.11 |