sql개발자 자격증 공부를 하면서 기존에 알고 있던 내용이 아닌 새롭게 알게 된 내용을 정리하자!
Foregin key를 지정하기 위해서는 먼저 마스터 테이블을 생성해야한다.
여기 DEPT2
라는 부서 테이블과 EMP
라는 사원 테이블이 있다. 여기서는 DEPT2
테이블이 마스터 테이블이 된다. > EMP
테이블이 DEPT2
테이블을 참조해야 함.
방법
constraint deptfk foreign key (deptno)
references dept (deptno)
deptfk
: 외래키의 이름
foreigen key (deptno)
: EMP 테이블의 deptno
references dept (deptno)
: DEPT 테이블의 deptno 칼럼이다.
CASCADE 옵션은 참조관계(기본 키와 외래키 관계)가 있을 경우 참조되는 데이터를 자동으로 반영하게 해준다.
먼저 마스터 테이블을 생성한다. 즉, DEPT 테이블을 생성하고 데이터를 입력한다.
다음 EMP 테이블을 생성하는데 ON DELETE CASCADE
라는 옵션을 사용한다.
정상적으로 테이블이 생성되고 데이터가 삽입되었다.
자 그럼 CASCADE 옵션이 잘 적용되었는지 확인해보자.
해당 명령을 해주고 실행해 보니
EMP 테이블에서 임베스트
가 삭제된 것을 확인 할 수 있다.
즉,
ON DELETE CASCADE
옵션은 자신이 참조하고 있는 테이블(DEPT2)의 데이터가 삭제되면 자동으로 자신(EMP)도 삭제되는 옵션이다.
ON DELETE CASCADE
옵션을 사용하면 참조 무결성을 준수 할 수 있다.
참조 무결성?
마스터 테이블(DEPT2)에는 해당 부서번호(DEPTNO)가 없는데, 슬레이브 테이블(EMP)에는 해당 부서번호가 잇는 경우를 참조 무결성 위배로 볼 수있다.
ALTER TABLE
문을 통해 테이블을 변경할 수 있으며, 테이블명 변경, 칼럼 추가, 변경, 삭제 등을 할 수 있다.
ALTER TABLE ~ RENAME TO
ALTER TABLE EMP
RENAME TO NEW_EMP;
테이블명을 EMP에서 NEW_EMP로 변경
ALTER TABLE ~ ADD
ALTER TABLE EMP
ADD (age number(2) default 1);
ALTER TABLE ~ MODIFY
로 데이터 타입이나 데이터 길이, 제약조건을 변경하거나 설정할 수 있다. 칼럼의 데이터를 변경할 때 기존 데이터가 있는 경우 에러가 발생한다.
ALTER TABLE EMP
MODIFY (ename varchar2(40) not null);
ALTER TABLE ~ DROP COLUMN
ALTER TABLE EMP
DROP COLUMN age;
ALTER TBALE ~ RENAME COLUMN ~ TO
ALTER TABLE EMP
RENAME COLUMN ename to new_ename;
EMP 테이블에 ename 칼럼명을 new_ename으로 변경한다.
view란?
테이블로부터 유도 된 가상의 테이블이다.
실제 데이터를 가지고 있지도 않고 테이블을 참조해서 원하는 칼럼만을 조회할 수 있다.
- 참조한 테이블이 변경되면 뷰도 변경됨
- 뷰의 검색은 참조한 테이블과 동일하게 할 수 있지만, 뷰에 대한 입력, 수정, 삭제에는 제약이 있음
- 특정 칼럼만 조회시켜서 보안성을 향상시킴
- 한 번 생성된 뷰는 변경 할 수 없고 변경을 원하면 삭제 후 재생성해야 함
ALTER
문을 통해 뷰를 변경할 수 없음.