반응형
DATABASE를 관리하다 보면 무결성은 매우 중요해서 MSSQL Server에서 MS SQL PRIMARY KEY (기본 키) 테이블에 생성하는 방법에 대해서 실습하려고 합니다.
MS SQL PRIMARY KEY(기본 키) 대한 특징.
- MS SQL PRIMARY KEY는 테이블의 각 행을 고유하게 식별하는 값을 가진 열 또는 열 조합입니다.
- 예를 들면, 주민등록 번호, 학번, 사원 번호, 네이버의 아이디는 pk 생성되어 있습니다.
- 기본 키는 반드시 고유하고, 비어 있지 않아야 합니다.
- 가장 대표적으로 테이블의 ID을 고유한 PRIMARY KEY 생성하므로 ID 대한 무결성을 보장받을 수 있습니다.
- 기본 키는 자동으로 생성되거나 사용자가 지정할 수 있습니다.
- PK의 제약 조건은 데이터베이스 PRIMARY KEY 열에 대한 고유한 인덱스를 자동으로 생성하여 데이터 고유성 및 무결성을 적용합니다.
- PRIMARY KEY의 제약 조건은 테이블에 하나만 생성할 수 있으며, 모든 PK 열은 NOT NULL로 정의되어야 합니다.
MS SQL PRIMARY KEY (기본 키) 생성.
테이블 생성 시 PRIMARY KEY 자동추가로 추가하는 방법.
- Sytax입니다.
USE 데이터베이스;
CREATE TABLE 테이블명 (
column1 데이터형식 PRIMARY KEY,
column2 데이터형식,
);
- 소스코드입니다.
USE sampleDB;
DROP TABLE IF EXISTS pkUserInfoAuto;
CREATE TABLE pkUserInfoAuto (
id varchar(20) PRIMARY KEY,
names varchar(50)
);
테이블 생성 시 PRIMARY KEY이름 넣어서 방법 2가지 방법.
2-1. column에 바로 생성.
- Sytax입니다.
CREATE TABLE 테이블명 (
column1 데이터형식 constraint [PK Name] PRIMARY KEY,
column2 데이터형식,
...
);
- PRIMARY KEY 소스코드입니다.
USE sampleDB;
CREATE TABLE pkUserInfoNamed1 (
id varchar(20) constraint pk_pkUserInfoNamed1 PRIMARY KEY,
names varchar(50)
);
2-2. multi column에 PRIMARY KEY 생성.
- Sytax입니다.
CREATE TABLE 테이블명 (
column1 데이터형식,
column2 데이터형식,
...
constraint [PK Name] PRIMARY KEY(칼럼이름 1, 칼럼이름 2,...)
);
- PRIMARY KEY 소스코드입니다.
CREATE TABLE pkUserInfoNamed2 (
id varchar(20) ,
names varchar(50),
constraint pk_pkUserInfoNamed2 PRIMARY KEY(id,names)
);
- 실행 예제입니다.
테이블 생성 후 PRIMARY KEY 추가하는 방법.
- ALTER TABLE 테이블명 ADD CONSTRAINT PK제약조건이름 PRIMARY KEY (column1, column2, column3,...)입니다.
- PRIMARY KEY 소스코드입니다.
USE sampleDB;
CREATE TABLE userInfoPkAfterTable (
id varchar(20) not null ,
names varchar(50) not null,
addcol varchar(100)
);
-- PK 생성
ALTER TABLE userInfoPkAfterTable
ADD CONSTRAINT PK_userInfoPkAfterTable PRIMARY KEY (id, names);
추가할 칼럼의 NOT NULL 속성을 설정합니다.
- ALTER TABLE [테이블이름] ALTER COLUMN [칼럼이름] VARCHAR(10) NOT NULL;
- PRIMARY KEY 소스 코드입니다.
-- 테이블 생성.
USE sampleDB;
CREATE TABLE userInfoPkAfterTable (
id varchar(20) ,
names varchar(50)
);
ALTER TABLE dbo.userInfoPkAfterTable
ALTER COLUMN id VARCHAR(10) NOT NULL;
ALTER TABLE dbo.userInfoPkAfterTable
ALTER COLUMN names VARCHAR(10) NOT NULL;
- 실행 예제.
PRIMARY KEY를 다시 생성합니다.
- ALTER TABLE [테이블이름] ADD CONSTRAINT PK제약조건이름 PRIMARY KEY (column1, column2, column3,...) 생성 가능 합니다.
- PRIMARY KEY 소스코드입니다.
ALTER TABLE dbo.userInfoPkAfterTable
ADD CONSTRAINT pk_userInfoPkAfterTable PRIMARY KEY (id, names);
- 실행 예제입니다.
기본 키 (PRIMARY KEY) 생성 확인.
- SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_name = '테이블명'으로 확인 가능합니다.
- 소스코드입니다.
USE sampleDB;
SELECT CONSTRAINT_CATALOG
,CONSTRAINT_SCHEMA
,CONSTRAINT_NAME
,TABLE_CATALOG
,TABLE_SCHEMA
,TABLE_NAME
,COLUMN_NAME
,ORDINAL_POSITION
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE table_name = 'userInfoPkAfterTable'
- 실행 예제입니다.
기본 키 (PRIMARY KEY) 삭제.
- ALTER TABLE 테이블명 DROP CONSTRAINT PK제약조건이름 형식으로 넣어주세요.
-- PK 삭제
USE sampleDB;
ALTER TABLE userInfoPkAfterTable DROP CONSTRAINT pk_userInfoPkAfterTable
PRIMARY KEY 마무리하며
- PRIMARY KEY이름은 각 프로젝트에서 정한 네이밍 규정을 따라서 만들어야 합니다.
- PRIMARY KEY는 수정은 불가능하며 생성 또는 삭제만 가능해서 새로 만들 때는 기존 PRIMARY KEY 지우고 다시 생성합니다.
- 운영할 때 PRIMARY KEY 지우고 다시 생성하는 것은 현실적으로 불가능하므로 주의해서 만들어줘야 합니다.
- PRIMARY KEY는 테이블에 하나만 생성이 가능합니다.
- mssql에서 테이블을 생성 후 PRIMARY KEY 꼭 생성하면 성능에 좋습니다.
- 테이블 설계 시 PRIMARY KEY 고려하여 만들어 주셔야 합니다.
반응형