constraint : 제약 조건
constraints : 제약 조건들
- 테이블을 만드는 관점에서 필요한 것들
primary key
- 하나의 테이블의 각각의 행은 구분될 수 있어야 한다
- not null + unique
foriegn key
unique : 현재 테이블의 현재 컬럼에서 중복된 데이터가 나오면 안된다.(null 포함)
not null : 입력할 때, 빼 먹으면 안된다.
check : 입력할 때, 확인을 해라.
default : 입력을 안하면 자동으로 들어가는 값
sequence : 번호표
- 테이블이나 데이터와는 전혀 상관 없음
- 여러 테이블이 공유할 수도 있음
- start with : 시작 번호
- increment by : 번호가 증가하는 크기
- maxvalue : 마지막 번호
- cycle : 마지막 번호 다음에 다시 시작 번호로 돌아간다.
sequence 생성 과정
- create sequence [이름 마음대로]
- start with [숫자 마음대로]
- increment by [숫자 마음대로]
- maxvalue [숫자 마음대로]
- cycle;
- 시퀀스이름.nextval : 시퀀스의 다음 번호 꺼내기
- 시퀀스이름.currval : 시퀀스의 현재 번호 확인하기, nextval이 1번 이상 수행 후 사용 가능
join : 2개 이상의 테이블을 연결하여, data를 select하는 기법.
equi join
- 동등한 조건으로 두 개 이상의 테이블을 조회 하는 것.
- 동등 비교 연산자(=)를 사용한 join 문장.
- 가장 일반적이고 가장 많이 사용하는 join 문장
non equi join : 비교 연산자를 통한 join ( = 은 제외 )
foriegn key
- 하나의 테이블에서 다른 테이블을 연결하는 속성(attribute, column).
- 대부분 다른 테이블의 pk이다.
- 예) emp의 deptno(fk)는 dept의 pk이다.
cross join : Cartesian Product : 카티션 프로덕트
- 두 개 이상의 테이블에서 모든 가능한 경우의 수를 조회.
self join
- 하나의 테이블을 2번 이상 사용해서 join.
- 예) from emp e1, emp e2
left outer join
- 두 개의 테이블 중, 좌측의 테이블을 중심으로 join을 수행.
- 무조건 좌측은 다 나온다.
- 우측은 join에 해당하는 내용만 나온다.
right outer join
- 두 개의 테이블 중, 우측의 테이블을 중심으로 join을 수행.
- 무조건 우측은 다 나온다.
- 좌측은 join에 해당하는 내용만 나온다.
select * from tab; -- 현재 사용자 소유의 모든 테이블 보기
show RECYCLEBIN; -- 휴지통의 삭제된 테이블 보기
purge RECYCLEBIN; -- 휴지통 비우기