+ Hello +

0510 DB(2) 제약조건, 테이블 생성 본문

+ 스마트인재개발원 +/# DB

0510 DB(2) 제약조건, 테이블 생성

journeyee 2021. 5. 30. 22:23

10. 제약조건 405p
- 무결성 > column key 실시 >> 제약조건

- not null : 값이 있어야한다
- unique : 중복 X
- primary key : not null + uk
- foreign key : 참조(관계)
- check : 조건에 맞는 값만

- 제약조건 이름 지정하는 것이 좋음 (관리하기 쉬움)
- 제약조건 생성 시기
- 1) 테이블 생성될 때 create table 같이 선언 (table level에서 생성)
- 2) 테이블 생성된 후에 alter table 추가 (column level에서 생성)

<테이블 생성>
// 1) 테이블 생성될 때 같이 생성
create table dept
( deptno number(3),
dname varchar2(10),
....
constraint dept_deptno_pk Primary Key(deptno) // 제약조건 생성

);

1) table level
constraint dept_deptno_pk Primary Key(deptno)

constraint 제약조건이름 제약조건유형 (제약조건을 설치할 컬럼이름)
- 제약조건이름 : table_column_약어 로 많이 씀
- constraint(제약조건 선언) dept_deptno_pk(이름) Primary Key(유형) (deptno)(컬럼이름)
- constraint dept_deptno_pk 생략가능 (즉 Primary Key(deptno라고만 써도 가능)
-

2) column level
<제약조건 생성 2>
create table dept
( deptno number(3) constraint dept_deptno_pk primary key, // column level
dname varchar2(10),
....
);

** 제약조건
- PK, UK, FK, CK는 table, column levle 모두 선언-
- nn(not null)은 column 선언만 가능

create table dept
( deptno number(3) not null
dname varchar2(10),
....
);


-----------<제약조건>--------------
1) not null
create table dept
( deptno number(3) not null
dname varchar2(10),
....
);

2) nuique 제약조건
- null값 허용
create table dept
(....
constraint emp_email_uk unique(email));

3) primary key 제약조건

4) foreign key --- reference 3가지 기억하기
다른 테이블에 있는 값 참조할 때 (pk, uk라는 제약조건이 있을 때만 !! 모든 값을 참조하는 건 아님 )
(1) reference
- FK : 종속적인 삭제를 방지해줌(참조되고 있는 값이 있기 때문에 PK)
(2) reference on delete cascade
- 참조되고 있는 값(부모테이블)을 같이 삭제해버림
- cascade : 종속적인 삭제 가능하게 됨
(3) reference on delete set null
- 부모테이블 삭제 됨 단, 참조값만 null로 바꿈

5) check
- 조건을 넣음
constraint emp_salary min
check(salary > 0), ....



* save test . sql
내 pc - c드라이브 - oraclexe - app -oracle - product - 11.2.0 - server - bin - test .sql
- script file : sql 문장을 저장할 수 있음, 즉 언제든지 불러서 재사용할 수 있음
- ; 사용가능 (/는 ed에서 )
- @test . sql 하면 실행됨

* editor (buffer)
- 마지막 실행이 된 sql문장이 저장됨(/)


** 실습
drop table test cascade constraints;
drop table test1 cascade constraints;

create table test
(a number(3),
b number(3) not null,
c number(3),
d char(5),
constraint test_a_pk primary key(a),
constraint test_d_ck check(d in('N','S'))
);

create table test1
(e number(3),
f number(3),
a number(3),
constraint test1_e_pk primary key(e),
constraint test1_f_uk unique(f),
constraint test1_a_fk foreign key(a) references test(a)
);

'+ 스마트인재개발원 + > # DB' 카테고리의 다른 글

0510 DB (3) 3 예제 풀이  (0) 2021.05.30
0510 DB (1) 데이터 조작 insert, update, delete  (0) 2021.05.30
0507 DB 조인  (0) 2021.05.30
Comments