본문 바로가기
DataBase/MsSql

MSSQL PRIMARY KEY 추가,삭제 사용법 및 설명

by 아우럼 2024. 3. 10.
반응형

DATABASE를 관리하다 보면 무결성은 매우 중요해서 MSSQL Server에서 MS SQL PRIMARY KEY (기본 키) 테이블에 생성하는 방법에 대해서 실습하려고 합니다.

 

MS SQL PRIMARY KEY(기본 키) 대한 특징.

  1. MS SQL PRIMARY KEY는 테이블의 각 행을 고유하게 식별하는 값을 가진 열 또는 열 조합입니다.
  2. 예를 들면, 주민등록 번호, 학번, 사원 번호, 네이버의 아이디는 pk 생성되어 있습니다.
  3. 기본 키는 반드시 고유하고, 비어 있지 않아야 합니다.
  4. 가장 대표적으로 테이블의 ID을 고유한 PRIMARY KEY 생성하므로 ID 대한 무결성을 보장받을 수 있습니다.
  5. 기본 키는 자동으로 생성되거나 사용자가 지정할 수 있습니다.
  6. PK의 제약 조건은 데이터베이스 PRIMARY KEY 열에 대한 고유한 인덱스를 자동으로 생성하여 데이터 고유성 및 무결성을 적용합니다.
  7. 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)
);

테이블 생성시 pk 자동추가으로 추가.

 

테이블 생성 시 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)
);

 

 

column에 바로 생성.

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)
);

 

  • 실행 예제입니다.

multi column에 생성.

 

테이블 생성 후 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);

table 생성후 pk 추가 하는방법.

 

추가할 칼럼의 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;

 

  • 실행 예제.

컬럼의 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);
  • 실행 예제입니다.

PK를 다시 생성합니다

 

기본 키 (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 생성 확인.

기본 키 (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 지우고 다시 생성하는 것은 현실적으로 불가능하므로 주의해서 만들어줘야 합니다.
  • PRIMARY KEY는 테이블에 하나만 생성이 가능합니다.
  • mssql에서 테이블을 생성 후 PRIMARY KEY 꼭 생성하면 성능에 좋습니다.
  • 테이블 설계 시 PRIMARY KEY 고려하여 만들어 주셔야 합니다.
반응형