코드 그라데이션

Day06-07. 제약 조건(1) - 기본 키 제약 조건 본문

Database/Mega-MySQL

Day06-07. 제약 조건(1) - 기본 키 제약 조건

완벽한 장면 2023. 6. 22. 18:29

제약 조건(Constraint)

  • 데이터의 무결성을 지키기 위한 제한된 조건
  • 특정 데이터를 입력할 때 무조건적으로 입력되는 것이 아닌, 어떠한 조건을 만족했을 때에 입력하도록 제약할 수 있음.

 

기본 키 제약 조건

  • 중복 될 수 없으며
  • NULL 값이 입력될 수 없다.

 

1) 우선 기본키로 생성한 것은 자동으로 클러스터형 인덱스가 생성된다.

2) 테이블에서는 기본키를 하나 이상의 열에 설정할 수 있다.

3) 기본키가 없이도 테이블의 구성이 가능하지만 실무적으로는 대부분의 테이블에는 기본 키를 설정해주어야 한다.

4) 기본 키를 생성하는 방법은 CREATE TABLE문에 PRIMARY KEY라는 예약어를 넣어주면 된다.

 

예시

CREATE TABLE usertbl 
( userID  CHAR(8) NOT NULL PRIMARY KEY, -- 이렇게
  name    VARCHAR(10) NOT NULL, 
  birthYear   INT NOT NULL,  
  addr	  CHAR(2) NOT NULL,
  mobile1	CHAR(3) NULL, 
  mobile2   CHAR(8) NULL, 
  height    SMALLINT NULL, 
  mDate    DATE NULL 
);
  • 모든 제약 조건은 이름을 가지게 되는데, CREATE TABLE 구문 안에서 기본 키를 지정하면 제약 조건의 이름은 MySQL이 알아서 지정해 준다.
  • TABLE의 정보를 알고 싶다면 DESCRIBE <테이블명> 이렇게 적으면 된다.

 

필요하다면 PRIMARY KEY를 지정하면서 키의 이름까지 함께 직접 지어줄 수 있다.

DROP TABLE IF EXISTS usertbl;
CREATE TABLE usertbl 
( userID  CHAR(8) NOT NULL, 
  name    VARCHAR(10) NOT NULL, 
  birthYear   INT NOT NULL,  
  CONSTRAINT PRIMARY KEY PK_usertbl_userID (userID)
);

 

cf) FOREIGN KEY는 하나의 테이블에 여러 개가 생성될 수 있으므로 이름을 지정해서 관리하는 것이 편리하다.

    테이블에 지정된 키를 보려면 SHOW KEYS FROM 테이블이름; 구문을 사용하면 된다.

 

 

제약 조건을 설정하는 또 다른 방법은 이미 만들어진 테이블을 수정하는 ALTER TABLE 구문을 사용하는 것이다.

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
     ADD CONSTRAINT PK_usertbl_userID 
     PRIMARY KEY (userID);
DESCRIBE usertbl;

 

CREATE TABLE 안에 PRIMARY KEY 문으로 설정한 것과,

나중에 ALTER TABLE로 PRIMARY KEY를 지정하는 것은 동일하다.

ALTER TABLE usertbl
-- usertbl을 변경하자.
     ADD CONSTRAINT PK_usertbl_userID 
     -- 제약 조건을 추가하자. 추가할 제약조건의 이름은 PK_usertbl_userID
     PRIMARY KEY (userID); 
     -- 추가할 제약 조건은 기본 키 제약 조건이다. 그리고 제약 조건을 설정할 열은 userID이다. 
DESCRIBE usertbl;

** 필요에 따라서 두 개 또는 그 이상의 열을 하벼서 하나의 기본 키로 설정하는 경우도 종종 있다.

 

728x90
Comments