1. 스키마 삭제 DROP 명령
이전에서 다루었던 갱신 연산은 투플 단위로 일어나는 갱신 연산이었다.
스키마 변경문 갱신 연산에 대해 알아본다.
1) cascade 설명
테이블에서 투플의 삭제 연산을 수행할 때 cascade 옵션에 대해 우선적으로 설명한다.
cascade 개념이 뭔지 알기 위해서임.
DEPARTMENT의 Dnumber 중 111이라는 번호를 제거하는 연산을 한다고 생각해보자. 이때 EMPLOYEE의 Esn(외래키) 는 Dnumber를 참조하기 때문에 삭제 연산이 거부되지면 옵션2인 cascade 옵션을 사용하면 연쇄 삭제로 아래와 같이 삭제가 가능하다.
DEPARTMENT의 Dnumber 중 111 삭제 -> EMPLOYEE의 Esn중 111을 가진 EMPLOYEE relation의 tuple 삭제 수행
2) DROP 명령문
테이블, 도메인, 타입, 제약 조건과 같이 이름을 가진 스키마를 통체로 제거한다.
제거시 CASCAEDE 또는 RESTRICT 옵션 중 한 가지를 가진다.
DROP SCHEMA DEPARTMENT CASCADE;
위 명령은 DEPARTMENT라는 테이블 스키를 삭제하는 연산인데 옵션으로 CASCADE를 사용한것이다.
DEPARTMENT 스키마를 지우는데 외래키와 같이 이 테이블을 참조하는 모든 제약 조건, 뷰 등을 연쇄적으로 함께 삭제한다.
예를 들어 DEPARTMENT는 Dnumber속성을 가지는데 EMPLOYEE의 Esn(외래키) 는 Dnumber를 참조하기 때문에 EMPLOYEE 스키마도 연쇄적으로 지운다.
만약 옵션으로 RESTRICT 를 사용하면 DEPARTMENT가 참조가 되지 않는 경우에만 제거가 가능하다. 참조 되고 있다면 삭제 연산이 거부된다.
3) ALTER 명령문
● 새로운 열 ( 애트리뷰트) 추가
ALTER TABLE EMPLOYEE ADD COLUMN job VERCHAR(12);
jop이름을 가지고 데이터 타입은 VERCHAR(12)인 애트리뷰트를 기존에 있던 테이블에 추가한 것이다.
그럼 애트리뷰트가 추가되었으니 기존에 있던 투플들이 jop의 값을 가져야한다. 디폴트 절을 명시하지 않으면 위 명령 직후 모든 tuple의 jop 값은 NULL이다. 따라서
디폴트절을 사용하여 디폴드 값을 넣거나 투플 한개한개 일일이 값을 지정해줘야한다.
● 한 열 제거하는 경우
ALTER TABLE EMPLOYEE DROP COLUMN Address CASCADE;
열을 제거하는 경우 역시 옵션 CASCAEDE 또는 RESTRICT 옵션 중 한 가지를 사용해야한다 .
CASCAEDE 옵션을 사용하면 해당 애트리뷰트가 참조하는 모든 관련된 제약 조건과 뷰들이 자동으로 제거된다.
만약 삭제하는 열의 애트리뷰트가 다른 릴레이션에서 참조하고 있는 애트리뷰트라면 ? => 참조하는 릴레이션을 통체로 삭제하는지는 잘 모르겠다...
● 한 열에서 디폴트 절을 제거하는 경우
ALTER TABLE DEPARTMENT ALTER COLUMN Mgr_ssn DROP DEFAULT;
CREATE TABLE을 할 때 애트리뷰트를 생성하는데 이때 DEFAULT를 지정한 애트리뷰트가 있을 수 있다. 이 DEFAULT를 제거하는 것이다.
● 한 열에서 디폴트 값을 변경하는 경우
ALTER TABLE DEPARTMENT ALTER COLUMN Mgr_ssn SET DEFAULT '1111';
CREATE TABLE을 할 때 애트리뷰트를 생성하는데 이때 DEFAULT를 지정한 애트리뷰트가 있을 수 있다. 이 DEFAULT의 값을 변경하는 것이다.
● 이름을 가진 제약 조건 제거 방법
ALTER TABLE EMPLOYEE DROP CONSTRAINT M1 CASCADE;
EMPLOYEE 테이블로 부터 M1이라는 이름을 가진 제약 조건을 제거하는 것이다.
'전공 > 데이터베이스' 카테고리의 다른 글
7-2. 관계대수와 관계해석 : 이항 관계 연산 (0) | 2021.11.03 |
---|---|
7-1. 관계대수와 관계해석 : 단항 관계 연산(SELECT, PROECT), 집합 이론 (0) | 2021.10.30 |
6-2. 사용자 주장으로 제약 조건 만들기 / SQL view (0) | 2021.10.27 |
6-1. 추가 SQL 명령어: 중첩 질의 (0) | 2021.10.19 |
5. SQL 명령어 (0) | 2021.10.12 |