Programming/SQL

[SQL/실습] primary key / not null / unique 테스트

reeme 2020. 12. 15. 15:06

[ ! ] 테이블 생성

use example;
create table constraints(
id varchar(10) primary key, -- primarykey (중복 허용 x, null값 x) 
password varchar(20) not null, -- not null(중복허용 o , null값 x)
addr varchar(50) unique, -- unique(중복x, null값o) 
    age int  -- 중복도 허용하고 null값도 허용
);


[ ! ] primary key test
안되는 예시

insert into constraints(password, addr, age) 
values('1234','부산시',30);

 

-- id가 속성명에 없고 속성값에도 없다는것은 id에 null값을 추가하겠다는 의미 
-- id는 primary key로 제약조건이 설정이 되어잇으므로 null값을 허용하지 않기 때문에 insert가 안된다.

 

안되는 예시

insert into constraints(id,password, addr, age)
values('abcd','1234','서울시',30);

-- constraints 테이블에 id속성에 이미 abcd값이 들어가 있는 상태에서 id속성의 값을 abcd로 중복해서 추가하려고 하는데
id속성이 primary key 설정이 되어 있으므로 중복 허용을 하지 않기 때문에 insert가 불가

 

되는 예시

insert into constraints(id,password, addr, age)
values('efgh','1234','서울시1',30);

 

 

[ ! ] not null test
안되는 예시

insert into constraints(id, addr, age)
values('ijkl','부산시',30);

-- password가 속성에 없고, password에 대한 값이 없으면 password에 null값을 추가하겠다는 의미
-- password는 제약조건이 not null로 설정이 되어있으므로 null 값을 허용하지 않기 때문에 insert가 안된다

 

되는 예시

insert into constraints(id, password ,addr, age)
values('ijkl','1234','부산시',30);



[ ! ] unique test 
안되는 예시

insert into constraints (id, password, addr, age)
values ('aaaa','1234','부산시',30);

-- constraints 테이블에서 addr 속성에 '부산시'라는 값이 이미 들어가 있는 상태에서
-- addr속성에 '부산시'라는 값을 추가하고자 할때,

-- addr 속성은 unique로 제약조건이 설정이 되어있으므로
-- 즉, 중복허용을 하지않기 때문에 insert가 안된다

 

 

되는 예시 (부산시가 아닌 addr에 없는값(중복이 되지 않는 값)을 넣어줌)

insert into constraints (id, password, addr, age)
values ('aaaa','1234','서울시',30);

 

insert into constraints (id,password, age)
values('aaaa', '1234' , 30);
insert into constraints (id,password, age)
values('cccc', '1234' , 30);

-- addr이 속성명에 없고, 속성값에도 없다는 것은 addr에 null값을 추가 하겠다는 의미.
-- addr은 unique로 제약조건이 설정이 되어있으므로 null값을 허용하기 때문에 insert된다

-- age는 '제약조건 없음'에 해당되기 때문에 중복 / null값 둘다 허용함 

참고) reeme.tistory.com/23

 


즉, 포트폴리오 상황에 따라서 어떤것을 넣을지 결정하면 됨