반응형

무결성 제약조건: 데이터 베이스에 저장된 데이터의 정확성 (일관성)

 

[ CHECK ]

형식: constarints 제약명 CHECK(조건)

- check 소괄호 안의 조건에 맞는 데이터만 삽입 가능한 제약조건,

- 조건에는 기본 연산자, 비교 연산자, in, not in 등등을 사용

 

Ex) PRODUCT TABLE 중, 가격이 50보다 큰 price 값만 가능

create table product(
	product_no int not null,
	product_name varchar(10),
	make_day datetime,
	price float,
	product_info varchar(max),
	primary key(product_no),
	constraint chk_price check (price > 50) -- 50보다 큰 price 값만 가능
)

 

해당 테이블에, price 값이 50 이하의 데이터를 INSERT 시 아래와 같은 오류가 발생한다.

Ex) PRODUCT TABLE 중, 가격이 5,6,7,8,9,10 에 속한 price 값만 가능

create table product(
	product_no int not null,
	product_name varchar(10),
	make_day datetime,
	price float,
	product_info varchar(max),
	primary key(product_no),
	constraint chk_price check (price in (5,6,7,8,9,10)) -- price 값이 5,6,7,8,9,10 인 경우에만 가능
)

 

반응형

'DB > MSSQL' 카테고리의 다른 글

OFFSET ROWS FETCH 페이징 처리  (0) 2020.10.19
ALTER 문  (0) 2020.07.22
문자열 char / varchar / nchar / nvarchar  (0) 2020.07.12
날짜 형식 변환  (0) 2020.04.17
트랜잭션 격리수준  (0) 2018.03.21
반응형

MSSQL 문자열 타입 중 char 와 varchar의 차이는 아래와 같다.

 

- char : 고정된 길이의 문자열을 저장

ex) char(40) 컬럼 데이터 내 'aaa' 만 저장하면 나머지 공간은 공백으로 처리된다. (40 바이트)

- varchar : 가변 문자열을 저장

ex) varchar(40) 컬럼 데이터 내 'pw1234' 저장 시 저장길이가 가변적이다 (6바이트)

 

 

[ USER TABLE ]
[ char(40) 인 user_nickname은 공백도 드래그가 된 것을 볼 수 았다. ]
[ varchar(40) 인 user_pw 컬럼은 pw1234 공백이 아닌 문자열만큼 드래그 ]

nchar / nvarchar 는 유니코드를 지원한다.

char, varchar -> 1 글자당 영문이나 숫자등은 1바이트

nchar, nvarchar -> 모든 문자 1글자당 2바이트

 

 

반응형

'DB > MSSQL' 카테고리의 다른 글

OFFSET ROWS FETCH 페이징 처리  (0) 2020.10.19
ALTER 문  (0) 2020.07.22
무결성 제약조건 CHECK  (0) 2020.07.12
날짜 형식 변환  (0) 2020.04.17
트랜잭션 격리수준  (0) 2018.03.21
반응형

자주 사용하는 날짜 포맷 변경 방법

 

CONVERT( [포맷(길이)], [날짜 값], [변환형식] )

 

select convert(varchar(10), getdate(), 120)

=> 결과 : 2020-04-17

 

반응형

'DB > MSSQL' 카테고리의 다른 글

OFFSET ROWS FETCH 페이징 처리  (0) 2020.10.19
ALTER 문  (0) 2020.07.22
무결성 제약조건 CHECK  (0) 2020.07.12
문자열 char / varchar / nchar / nvarchar  (0) 2020.07.12
트랜잭션 격리수준  (0) 2018.03.21
반응형

Transaction Isolation Level


Mssql를 처음 사용하면서 SP(저장 프로시저) 라는 것을 처음 접했고, 어려움을 겪고 있네요! 후!

Isolation Level 이란 트랜잭션에서 일관성이 없는 데이터를 허용하도록 하는 수준

또한, 어떤 데이터를 수정하고 있는 경우 다른 사용자들이 해당 데이터에 접근하는 것을 차단 또는 읽기 작업을 수행할 수 있도록 

Isolation Level을 변경할 수 있다.


SET TRANSACTION ISOLATION LEVEL
{
READ COMMITTED
| READ UNCOMMITTED
| REPEATABLE READ
| SERIALIZABLE
}


- 네 종류의 Transaction Isolation Level 을 정리하면,


1. Read Uncommitted Isolation Level

 사용자가 'A' 라는 데이터를 'B' 라는 데이터로 변경 하는 동안 다른 사용자는 아직 완료되지 않은 데이터 'B'를 읽을 수 있다

 즉, 'Shared Lock' 이 걸리지 않는다.


2. Read Committed Isolation Level (SQL Server Default 값)

 사용자가 'A' 라는 데이터를 변경하는 동안 다른 사용자는 해당 데이터에 접근 할 수 없다.

 즉, 'Shared Lock'


3. Repeatable Read Isolation Level

 트랜잭션이 완료되는 동안 Select 문장이 사용하는 모든 데이터는 'Shared Lock' 상태 

 다른 사용자는 해당 영역에 해당되는 데이터 수정 불가능


4. Serializable Isolation Level

 트랜잭션이 완료되는 동안 Select 문장이 사용하는 모든 데이터는 'Shared Lock' 상태

 다른 사용자는 해당 영역에 해당되는 데이터 수정 및 입력 불가능



[출처 : https://support.microsoft.com/ko-kr/help/601430]


반응형

'DB > MSSQL' 카테고리의 다른 글

OFFSET ROWS FETCH 페이징 처리  (0) 2020.10.19
ALTER 문  (0) 2020.07.22
무결성 제약조건 CHECK  (0) 2020.07.12
문자열 char / varchar / nchar / nvarchar  (0) 2020.07.12
날짜 형식 변환  (0) 2020.04.17

+ Recent posts