본문 바로가기

Database

[MySQL] Primary Key 중복되게 설정하기

반응형
테이블 생성할때 1개의 기본키(PRIMARY KEY) 설정하는 구문은 아래와 같이 두가지 형식이 가능합니다.

예1)

CREATE TABLE EMP (
EMP_NO CHAR(20) NOT NULL PRIMARY KEY,
EMP_NAME CHAR(20) NOT NULL,
SALARY NUMBER(4) NOT NULL,
JOB CHAR(10),
EMAIL VARCHAR(50)
);

또는

예2)
CREATE TABLE EMP (
EMP_NO CHAR(20) NOT NULL,
EMP_NAME CHAR(20) NOT NULL,
SALARY NUMBER(4) NOT NULL,
JOB CHAR(10),
EMAIL VARCHAR(50),
PRIMARY KEY(EMP_NO)
);

이때 기본키인 컬럼은 NOT NULL 이여야 하고 자동으로 인덱스가 생성됩니다.

한테이블에 2개의상의 컬럼을 기본키로 설정할때는 위의 첫번째 방법으로는 불가능하고 두번째 방법으로만 가능합니다.

즉, 테이블 생성할때 2개 이상컬럼을 기본키로 설정하려면 아래와 같이 설정합니다.

예3)
CREATE TABLE EMP (
EMP_NO CHAR(20) NOT NULL,
EMP_NAME CHAR(20) NOT NULL,
SALARY NUMBER(4) NOT NULL,
JOB CHAR(10),
EMAIL VARCHAR(50),
PRIMARY KEY(EMP_NO,EMP_NAME )
);

단일 PK/UK의 경우 단일컬럼에 대해서만 중복 금지를 하지만 다중 PK/UK는 설정된 다중컬럼을 합쳐서 중복금지를 합니다. 당연한 이야기겠지만요..^^



CREATE TABLE EMP (
EMP_NO CHAR(20) NOT NULL,
EMP_NAME CHAR(20) NOT NULL,
SALARY NUMBER(4) NOT NULL,
JOB CHAR(10),
EMAIL VARCHAR(50)
);

위와 같이 이미 생성된 테이블에 기본키를 추가하려면 아래와 같은 구문을 사용합니다. 이때 제약조건번호는 자동으로 생성됩니다.

ALTER TABLE EMP
ADD PRIMARY KEY (EMP_NO, EMP_NAME);


블랙아웃님의 경우를 대입하면..이렇게 가능하지 않을까요??
ALTER TABLE 수강테이블
ADD PRIMARY KEY (과목번호 칼럼, 분반 칼럼);

이상... 참고가 되셨길 바랍니다.^^ -예준아빠-
반응형