본문 바로가기
SQL

MSSQL 1.무결성 제약조건 - NULL, PRIMARY KEY

by flykimjiwon 2022. 8. 4.
반응형

무결성 제약조건

제약조건은 데이터의 무결성을 보장받기 위해서 사용

 

무결성

데이터베이스에 데이터의 정확성(일관성)

 

제약조건(Constraint)

NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK

 

NOT NULL은 데이터삽입(INSERT)시 값을 꼭 넣어줘야 한다.

사용하면 좋을 때: 없어서는 안되는 중요한 값일 경우

 

- NOT NULL 제약이 걸린경우

데이터를 넣어주지않아 오류가 발생

- NOT NULL 컬럼에 값을 넣어준 경우

제대로 작동한다.

그리고 위와같이 INSERT시에 값을 넣지 않게되면 NULL로서 표기된다. (데이터 값이 존재하지 않음)

** 소스코드 **

--DROP TABLE PRODUCT;

CREATE TABLE PRODUCT (
	PRODUCTNO INT,
	PRODUCTNAME VARCHAR(10) NOT NULL, -- 꼭 데이터 값이 들어가야함
	MAKEDAY DATETIME,
	PRICE FLOAT,
	PRODUCTINFO VARCHAR(MAX)
PRIMARY KEY(PRODUCTNO)
);
-- not null은 데이터 삽입시 꼭 값을 넣어줘야한다.

INSERT INTO PRODUCT
(
PRODUCTNO,
PRODUCTNAME,
PRICE,
PRODUCTINFO

)
VALUES
(
1,
'ABCD',
500,
'AAA'
)

SELECT * FROM PRODUCT WHERE MAKEDAY IS NULL; -- 값이 안들어간것만 찾는다.
--SELECT * FROM PRODUCT WHERE MAKEDAY IS NOT NULL; -- 조건을 걸기, 날짜에 데이터가 있는거만 조회

 

- PRIMARY KEY 적용하기

형식: PRIMARY KEY(컬럼명1, 컬럼명2, 컬럼명3,.....)

PRIMARY KEY, 기본키는 하나의 테이블에 있는 데이터들을 고유하게 식별하는 제약조건

기본키는 한 개의 테이블에 하나만 생성가능, 설정된 열에 중복된 값을 가질 수 없으며 NULL또한 가질 수 없다.

 

ps. 하나만 생성이 PRIMARY(컬럼명1개)가아니라 1번을 말함

열에 보면 PRODUCTNO에 key모양으로 적용된것을 볼 수 있다.

PRIMARY KEY(적용할 열)로 작성하면 된다.

 

**소스코드**

--DROP TABLE PRODUCT;

CREATE TABLE PRODUCT (
	PRODUCTNO INT,
	PRODUCTNAME VARCHAR(10) NOT NULL, -- 꼭 데이터 값이 들어가야함
	MAKEDAY DATETIME,
	PRICE FLOAT,
	PRODUCTINFO VARCHAR(MAX)
PRIMARY KEY(PRODUCTNO) --PRIMARY KEY 적용해보기
);



INSERT INTO PRODUCT
--아무것도 안적어주면 컬럼값 모두를 사용하겠다는 뜻
VALUES
(
3,
'AAA',
GETDATE(),
15300,
'AAAAAAA'
)

SELECT * FROM PRODUCT

ps. INSERT INTO 사용할 때 컬럼 안지정해주면 모두 사용하겠다는 뜻

- Primary key값 여러개지정하기

1)Primary key값 여러개 지정할 수있다.

2)근데 모든 키값이 다르지않아도됨, 하나만 달라도 새로 데이터 생성이 가능하다.

--DROP TABLE PRODUCT;

CREATE TABLE PRODUCT (
	PRODUCTNO INT,
	PRODUCTNAME NVARCHAR(10) NOT NULL, 
	MAKEDAY DATETIME,
	PRICE FLOAT,
	PRODUCTINFO VARCHAR(MAX)
PRIMARY KEY(PRODUCTNO,PRODUCTNAME) --1개뿐만아니라 2개도 넣을 수 있다.
);

INSERT INTO PRODUCT
(
PRODUCTNO,
PRODUCTNAME,
MAKEDAY,
PRICE,
PRODUCTINFO
)
VALUES
(
3,
N'한글凸', --다국어는 앞에 N을적어준다.
GETDATE(),
1500,
'AAA123'
)



SELECT * FROM PRODUCT

앞에 두개가 PRIMARY KEY인데 하나만 달라도 등록이 된다.

ps. SELECT문에 위와같이 선택한 열만 나오게 정할 수 도 있다.

 

- PRIMARY KEY의 오류

한줄에 걸쳐 설정해야한다!

CREATE TABLE PRODUCT (
	PRODUCTNO INT,
	PRODUCTNAME NVARCHAR(10) NOT NULL, 
	MAKEDAY DATETIME,
	PRICE FLOAT,
	PRODUCTINFO VARCHAR(MAX)
PRIMARY KEY(PRODUCTNO,PRODUCTNAME) --1개뿐만아니라 2개도 넣을 수 있다.
PRIMARY KEY(MAKEDAY) -- 한번만 선언이 가능, 두개에 걸쳐 선언하면 오류발생
);
반응형

'SQL' 카테고리의 다른 글

MSSQL 4. ORDER BY  (0) 2022.08.12
MSSQL 3. Identity, SEQUENCE  (0) 2022.08.11
MSSQL 2.DROP TABLE, ALTER TABLE  (0) 2022.08.04
MSSQL 1.무결성 제약조건 - FOREIGN KEY, CHECK, UNIQUE  (0) 2022.08.04
MSSQL 0.데이터 타입  (0) 2022.08.03