[Oracle] 2020.12.22. day_42 제약사항 _ check, not null _ default(제약사항은 아님)
2020. 12. 22. 11:46ㆍWeb_Back-end/Oracle
-user_constraints : 테이블에 설정된 제약사항 확인 dictionary
-user_cons_columns : 테이블에 설정된 제약사항 컬럼 확인 dictionary
-user_tab_cols : 테이블에 존재하는 컬럼명, 데이터형, 크기, default 등 확인 dictionary
◎ 제약사항
제약사항 | |
개발자(DBA : DataBase Administrator)가 원하는 값만 받기위해 테이블에 설정하는 것 | |
종류 | primary key,foreign key, unique, check, not null // default (제약사항은 아님) |
테이블에 설정된 제약사항은 user_constraints (DD) 테이블에서 확인할 수 있다 DD : DataBase Dictionary 의 줄임말, 정보저장용 테이블(DBMS에서 사용하는) |
|
테이블단위 제약사항과 컬럼단위 제약사항 alter문으로 설정할 수 있다 | |
테이블단위 제약사항 : | 테이블 생성시 컬럼의 정의가 종료되고 나서 정의하는 제약사항 (table level constraint) |
컬럼단위 제약사항 : | 테이블 생성시 컬럼의 정의 뒤에 붙여서 정의하는 제약사항 (column level constraint) |
alter문 : | 문법이따로 있는것이 아니라 기존에 있던 쿼리를 alter에 넣고 쓴다고 생각하면 된다 |
제약사항은 alter문을 사용하여 활성화, 비활성화를 수행할 수 있다 |
4. check 조건 (user_constraint type : C)
check 조건 | |
컬럼의 값을 원하는 형태로 받을 때 | |
제약사항명을 설정하지 않고, 컬럼단위 제약사항으로만 설정 | |
다른 컬럼을 체크조건에 넣을 수 없다 | |
문법 | 컬럼명 데이터형(크기) check( 컬럼명 조건 ) |
예 | 성별은 F또는 M만 입력할 수 있다 gender char(1) check( gender = 'F' or gender = 'M' ) |
5. not null 조건 (user_constraint type : C)
not null 조건 | |
컬럼에 값을 반드시 입력해야할 때 | |
제약사항명을 설정하지 않고, 컬럼단위 제약사항으로만 설정 | |
문법 | 컬럼명 데이터형(크기) not null |
6. default : 제약사항 아님
default | |
제약사항은 아님 | |
null이 입력되는 상황이 발생하면, 설정해놓은 기본값으로 추가되는 속성 | |
문법 | 컬럼명 데이터형(크기) default null일때 입력될 값 |
○ check, not null, default 연습해보기
1. <<<이름, 성별, 나이, 입력일을 저장하는 테이블 >>> -이름 : 필수입력 -성별 : '여자' 또는 '남자'만 입력가능 -주소 : null가능 -나이 : null이 입력되면 '0'이 추가 -입력일 : 생략되면 insert하는 시점의 현재날짜 |
1
2
3
4
5
6
7
|
create table other_constraint(
name varchar2(15) not null,
address varchar2(100) null,
gender char(6) check(gender = '여자' or gender = '남자'),
age number(3) default 0,
input_date date default sysdate
);
|
cs |
※ 값추가_성공
--1. -이름 : 존재 -주소 : 존재 -성별 : 남자 또는 여자 -나이 : 존재(없어도 됨) -입력일 : 존재(없어도 됨) --2. -이름 : 존재 -주소 : null -성별 : 남자 또는 여자 -나이 : 존재 -입력일 : 존재 --3. -이름 : 존재 -주소 : null -성별 : 남자 또는 여자 -나이 : null -입력일 : null |
--1.
insert into other_constraint (name, address, gender, age, input_date)
values('김ㅇ규', '서울시 서대문구', '남자', 20, sysdate);
--2.
insert into other_constraint (name, gender, age, input_date)
values('김ㅇ숙', '여자', 20, sysdate);
--3.
insert into other_constraint (name, gender)
values('이ㅇ길', '남자');
※ 값추가_실패
- not null조건 위배
- check조건 위배