SQL DDL+(Data Definition Language)

심주흔·2023년 5월 15일
0
post-thumbnail

sql개발자 자격증 공부를 하면서 기존에 알고 있던 내용이 아닌 새롭게 알게 된 내용을 정리하자!

Foregin key(외래키)

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

CASCADE 옵션은 참조관계(기본 키와 외래키 관계)가 있을 경우 참조되는 데이터를 자동으로 반영하게 해준다.

먼저 마스터 테이블을 생성한다. 즉, DEPT 테이블을 생성하고 데이터를 입력한다.

다음 EMP 테이블을 생성하는데 ON DELETE CASCADE 라는 옵션을 사용한다.

정상적으로 테이블이 생성되고 데이터가 삽입되었다.

자 그럼 CASCADE 옵션이 잘 적용되었는지 확인해보자.

해당 명령을 해주고 실행해 보니


EMP 테이블에서 임베스트가 삭제된 것을 확인 할 수 있다.

즉, ON DELETE CASCADE 옵션은 자신이 참조하고 있는 테이블(DEPT2)의 데이터가 삭제되면 자동으로 자신(EMP)도 삭제되는 옵션이다.
ON DELETE CASCADE 옵션을 사용하면 참조 무결성을 준수 할 수 있다.

참조 무결성?
마스터 테이블(DEPT2)에는 해당 부서번호(DEPTNO)가 없는데, 슬레이브 테이블(EMP)에는 해당 부서번호가 잇는 경우를 참조 무결성 위배로 볼 수있다.

Table 변경

ALTER TABLE문을 통해 테이블을 변경할 수 있으며, 테이블명 변경, 칼럼 추가, 변경, 삭제 등을 할 수 있다.

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

view란?
테이블로부터 유도 된 가상의 테이블이다.
실제 데이터를 가지고 있지도 않고 테이블을 참조해서 원하는 칼럼만을 조회할 수 있다.

  • 참조한 테이블이 변경되면 뷰도 변경됨
  • 뷰의 검색은 참조한 테이블과 동일하게 할 수 있지만, 뷰에 대한 입력, 수정, 삭제에는 제약이 있음
  • 특정 칼럼만 조회시켜서 보안성을 향상시킴
  • 한 번 생성된 뷰는 변경 할 수 없고 변경을 원하면 삭제 후 재생성해야 함
  • ALTER문을 통해 뷰를 변경할 수 없음.

View장점

  • 특정 칼럼만 조회할 수 있기 때문에 보안 기능이 있음.
  • 데이터 관리가 간단해짐.
  • SELECT문이 간단해짐.
  • 하나의 테이블에 여러 개의 뷰를 생성할 수 있음.

View 단점

  • 독자적인 인덱스를 만들 수 없음.
  • 삽입, 수정, 삭제 연산이 제약 됨.
  • 데이터 구조를 변경 할 수 없음.
profile
이봐... 해보기는 했어?

0개의 댓글