[Oracle] 2020.12.22. day_42 제약사항 _ check, not null _ default(제약사항은 아님)

2020. 12. 22. 11:46Web_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(15not null,
    address varchar2(100null,
    gender char(6) check(gender = '여자' or gender = '남자'),
    age number(3default 0,
    input_date date default sysdate
);
cs

user_constraints table

※ 값추가_성공

--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조건 위배