반응형

[MariaDB] 마리아DB 테이블 - 기본키 제약조건(PRIMARY KEY) (MySQL)

 

MariaDB는 데이터의 무결성을 위해서 다음의 6가지 제약조건을 제공합니다.

  1. PRIMARY KEY 제약조건
  2. FOREIGN KEY 제약조건
  3. UNIQUE 제약 조건
  4. CHECK 제약조건(MariaDB 10.2.1부터 지원, MySQL 8.0.16부터 지원)
  5. DEFAULT 정의
  6. 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; 문으로 테이블의 정보를 확인하면 두 열이 합쳐져서 하나의 기본키 제약조건을 설정한 것을 확인할 수 있습니다.

SHOW INDEX FROM 테이블명;

 

 

[MariaDB] 전체보기

 

'MariaDB' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형