본문 바로가기
DataBase/MsSql

MSSQL unique 제약 조건 추가,삭제 사용법 및 설명

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

column에 unique 제약조건을 설정하면, 제약조건을 사용하면 특정 열에 중복 값이 입력되는 것을 방지할 수 있어 데이터베이스에 대한 데이터 무결성을 보장받을 수 있습니다.

Unique 제약조건 특징

  • 값의 고유성 : Unique 제약조건은 중복 값을 허용하지 않아서 특정 열에 대해 고유한 값을 갖도록 보장할 수 있습니다.
  • NULL 허용 : Unique 제약조건은 중복은 허용하지 않지만, NULL 값을 허용합니다. 단, 열에 하나의 NULL 값만 가능합니다.
  • FOREIGN KEY 참조 :Unique 제약조건은 FOREIGN KEY로 참조할 수 있는 장점이 있습니다.
  • 인덱스 생성 :index 생성 시 Unique 제약조건을 추가하면 값의 고유성을 자동으로 체크할 수 있습니다.

Unique 제약조건 생성 및 삭제

테이블 생성하면서 column에 자동으로 Unique 설정.

  • table create 할 때 column에 자동으로 Unique 제약조건을 설정하려면 data type 다음에 Unique 선언하면 바로 생성됩니다.
  • 아래는 sytax, 예제 소스를 참고하여 Unique 제약조건을 실습하기 바랍니다.
CREATE TABLE [테이블명] (
    [column1] [dataType] UNIQUE,
    [column2] [dataType],
    [column3] [dataType] 
);


USE sampleDB;
DROP TABLE IF EXISTS UserInfoForUnique;
CREATE TABLE UserInfoForUnique (
    ID int UNIQUE,
    LastName varchar(255),
    FirstName varchar(255)    
);

-- 확인 소스.
insert into UserInfoForUnique(ID,LastName,FirstName)
values(202401,'john','hub');

 

  • 실습 화면 예제입니다.

unique 제약 조건 생성 후 중복 값을 넣을 경우 에러 발생 합니다.

두 개 이상의 column에 UNIQUE 제약조건 생성.

  • table 생성 시 column을 먼저 선언한 후 constraint을 통해서 여러 칼럼에 unique 제약조건을 생성할 수 있습니다.
  • 제약조건명을 입력하고 칼럼이름을 선언해 주세요.
  • unique 제약조건 sytax 및 소스코드 확인 후 실습 해보세요.
CREATE TABLE [테이블명] (
    [column1] [dataType],
[column2] [dataType],
[column3] [dataType],
CONSTRAINT [제약조건명] UNIQUE([column1, column2]) 
);


USE sampleDB;
DROP TABLE IF EXISTS UserInfoForUnique;
CREATE TABLE UserInfoForUnique (
    ID int, 
    LastName varchar(255),
    FirstName varchar(255),
	CONSTRAINT Uk_UserInfoForUnique UNIQUE(ID,FirstName)  
);

 

기존 column에 UNIQUE 제약조건 생성.

  • table 생성 후 unique제약 조건을 생성할 수 있습니다.
  • data 중에 unique 하지 않은 자료가 있으면 삭제 후 가능합니다.
  • alter 명령어를 이용 기존 table에 unique 제약조건을 추가해 보세요.
-- sytax 예제
ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] UNIQUE ([column1, column2]);

-- 소스코드 예제
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForUnique;
CREATE TABLE UserInfoForUnique (
    ID int, 
    LastName varchar(255),
    FirstName varchar(255) 
);
 
ALTER TABLE UserInfoForUnique  ADD CONSTRAINT Uk_UserInfoForUnique UNIQUE (ID,FirstName);

 

신규 column을 추가 시 UNIQUE 설정 방법.

  • 기존 table에 column을 추가하면서 unique 제약조건을 추가하는 방법입니다.
  • alter 명령어를 이용하여 column, unique 동시에 작업해 보세요.
-- sytax 코드
ALTER TABLE [테이블명] ADD [column1] [dataType] CONSTRAINT [UNIQUE명] UNIQUE (column1, column2]);

USE sampleDB;
DROP TABLE IF EXISTS UserInfoForUnique;
CREATE TABLE UserInfoForUnique (
    ID int, 
    LastName varchar(255),
    FirstName varchar(255) 
);

-- 실습코드 
ALTER TABLE UserInfoForUnique ADD addId int  CONSTRAINT Uk_UserInfoForUnique UNIQUE (ID,addId)

 

Unique 제약조건 생성 확인

  • 테이블에 어떤 제약조건이 있는지 확인할 때 사용합니다.
  • Unique 제약조건을 추가, 삭제한 후 실행이 됐는지 확인할 때 아래 명령어를 사용하세요.
  • 확인 방법은 sp_help 명령어와 information_schema의 view 이용할 수 있습니다.
EXEC SP_HELP [테이블명];

EXEC SP_HELP UserInfoForUnique;


-- sytax 코드
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  = '테이블명' ;


USE sampleDB;
DROP TABLE IF EXISTS UserInfoForUnique;
CREATE TABLE UserInfoForUnique (
    ID int unique, 
    LastName varchar(255),
    FirstName varchar(255) 
);

-- 소스 코드
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  = 'UserInfoForUnique' ;

 

  • 스키마 정보를 이용한 실습 화면입니다.

제약 조건은 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 통해서 확인 가능합니다.

생성된 Unique 제약조건 삭제

  • Unique 제약조건을 생성했으면 삭제도 가능합니다.
  • 제약조건 삭제는 제약 조건명은 필수 이므로 제약조건 확인 부분을 활용 후 가능 합니다.
  • 밑에 sytax와 소스코드를 이용하여 실습해 주세요.
-- sytax 코드
ALTER TABLE [테이블명] DROP CONSTRAINT [UNIQUE명];

USE sampleDB;
DROP TABLE IF EXISTS UserInfoForUnique;
CREATE TABLE UserInfoForUnique (
    ID int, 
    LastName varchar(255),
    FirstName varchar(255),
	CONSTRAINT Uk_UserInfoForUniqueDrop UNIQUE(ID,FirstName)  
);

-- 소스 코드
ALTER TABLE UserInfoForUnique  DROP CONSTRAINT Uk_UserInfoForUniqueDrop

 

 

Unique 제약조건 마무리

  • unique 제약 조건은 실무에서 자주 사용하는 제약조건으로 꼭 숙지해 주세요.
  • table에 data를 입력한 후 생성할 때는 입력한 data를 확인해 주세요.
  • 중복된 data가 있으면 Unique 제약조건을 생성할 수 없습니다.
반응형