일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정보처리기사
- jsp연결
- 오라클
- cisco packet
- rinux
- autoset
- jsp
- Oracle
- 라우터
- VLAN
- 데이터베이스
- Cisco
- sql
- 이것이 자바다
- ciscopacket
- html
- NCS
- 정처기필기
- w3school
- 원형그래프
- 버추얼머신
- 자바
- 리눅스
- javaee
- 네트워크관리사
- ospf
- Java
- 참조타입
- php
- 네트워크
- Today
- Total
기록해! 정리해!
5-1 본문
5/20
1) PK 제약조건
create table user1(
id nchar(10),
name varchar(20)
);
insert into user1(id, name)
values ('ppk','너구리');
select * from user1;
create table pk_user1(
id nchar(10) primary key,
name varchar(20)
);
insert into pk_user1 (id, name)
values ('ppk','너구리');
insert into pk_user1 (id, name) --에러/중복
values ('ppk','너구리');
insert into pk_user1 ('', name) --에러/not null
values ('ppk','너구리');
create table pk_user2(
id nchar(10),
name varchar(20),
primary key (id)
);
insert into pk_user2 (id, name)
values ('ppk','너구리');
insert into pk_user2 (id, name) --에러/중복
values ('ppk','너구리');
insert into pk_user2 ('', name) --에러/not null
values ('ppk','너구리');
create table pk_user3(
id nchar(10),
name varchar(20),
constraint pk_user3_1 primary key (id)
);
create table pk_user4(
id nchar(10),
name varchar(20),
constraint pk_user3_2 primary key (id, name) --컬럼 2개에 제약조건 걸려면 밑에 하는 수 밖에 없다
);
insert into pk_user4 (id, name)
values ('ppk','너구리1');
insert into pk_user4 (id, name)
values ('ppk','너구리2');
insert into pk_user4 (id, name)
values ('ppk','너구리1'); --에러/ 중복제약
insert into pk_user4 (id, name)
values ('ppk',''); --에러/ not null
create table user11(
id nchar(10),
name varchar(20)not null
);
desc user11;
insert into user11(id, name)
values ('ppk','너구리');
insert into user11(id, name)
values ('ppk','');
create table user11(
id nchar(10),
name varchar(20)
constraint user11_user3_1 not null (id)
); --에러/ not null은 컬럼 옆에 붙을 수 있다
값을 무조건 받아야하는 상황이면 not null 제약조건을 걸어야한다
2) FK 제약조건
create table fk_user11(
id1 nchar(10) not null,
name varchar(20)not null,
foreign key(id1) references user1(id)
); --에러/ user1이 pk로 안잡혀있음
--fk는 pk를 참조해야함
desc pk_user1;
create table fk_user11(
id1 nchar(10) not null,
name varchar(20)not null,
foreign key(id1) references pk_user1(id)
); --생성됨. 참조하는 테이블의 pk만 참조할 수 있다
drop table pk_user1;
drop table fk_user11;
create table pk_user1(
id nchar(10) primary key,
name varchar(20)
);
create table fk_user11(
id1 nchar(10) not null,
age number(3),
foreign key(id1) references pk_user1(id)
);
insert into pk_user1(id, name)
values ('ppk','너구리');
insert into fk_user11(id1,age)
values ('ppk','17');
insert into fk_user11(id1,age)
values ('ppk2','17'); --에러/ 없는 애 넣어서(참조오류)
/*foreign key(id1) references pk_user1(id)
id랑 id1 이름이 같을 필요는 없다
id1은 id에 없는 값을 넣을 순 없다 */
insert into pk_user1(id, name)
values ('ppk2','영심이');
select * from fk_user11;
insert into fk_user11(id1,age)
values ('ppk2','17'); --이제는 생성됨
3) Unique 제약조건
create table uk_user1(
id nchar(10)unique,
name varchar(20)
);
insert into uk_user1( id,name)
values ('ppk','영심이');
insert into uk_user1( id,name)
values ('ppk','영심이'); --에러 / 중복이라고 유니크제약조건 걸림
insert into uk_user1( id,name)
values ('','영심이'); --null값 가능
select * from uk_user1;
insert into uk_user1( id,name)
values ('','하늘이'); --null은 중복 가능
create table uk_user2(
id nchar(10) not null unique,
name varchar(20) not null unique
);
-- 의도치않게 pk역할과 동일한 역할이 됨
즉,unique 제약조건은 null값을 넣으려고 사용하는 것
4)check 제약조건 (339p))
Create table ck_user2 (
id nchar(10) not null UNIQUE ,
loc varchar(20) not null check ( loc in('서울','기타' ))
);
Create table ck_user3 (
id nchar(10) not null UNIQUE ,
loc varchar(20) not null ,
check ( loc in('서울','기타' ))
);
insert into ck_user3 (id, loc) values('ppk','서울');
insert into ck_user3 (id, loc) values('ppk1','경기'); --에러/ 체크제약조건
insert into ck_user3 (id, loc) values('young','기타');
select * from ck_user3;
5)defualt 제약조건
Create table default_user1 (
id nchar(10) ,
loc varchar(20) ,
age number(3)
);
insert into default_user1(id)
values('young1');
select * from default_user1;
Create table default_user2 (
id nchar(10) ,
loc varchar(20) DEFAULT '서울' ,
age number(3) DEFAULT 21
);
insert into default_user2(id)
values('young1');
select * from default_user2;
Create table default_user3 (
id nchar(10) ,
loc varchar(20) DEFAULT '서울' ,
age number(3) DEFAULT '21'
);
insert into default_user3(id)
values('young1');
select * from default_user3;
'Oracle' 카테고리의 다른 글
5-3 (0) | 2022.05.20 |
---|---|
5-2 (0) | 2022.05.20 |
4-SQL 기본문법 정리 (0) | 2022.05.20 |
4-예제3(서브쿼리) (0) | 2022.05.19 |
4-3 (0) | 2022.05.19 |