반응형
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');
- 실습 화면 예제입니다.
두 개 이상의 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' ;
- 스키마 정보를 이용한 실습 화면입니다.
생성된 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 제약조건을 생성할 수 없습니다.
반응형