Programming-[Backend]/SQL

[SQLD] 6. SQL 기본 2 - CASCADE, 테이블-컬럼 변경, 뷰(VIEW)

컴퓨터 탐험가 찰리 2022. 5. 14. 17:26
728x90
반응형

 

SQL 기본 문법에 대해서는 대부분 알고 있고, 문서로 읽고 기억하는 것보다는 실제로 SQL문을 작성 및 실행해보는 것이 훨씬 빠르고, 이해에도 유리하다고 생각한다. 이 글 뒤부터의 내용은 내가 실무에서 잘 사용 안 해본 내용 또는 이론적인 내용들만 요약하여 기록해놓는다.

 


 

CASCADE 옵션

CASCADE에 대해서는 JPA를 학습할때 배웠는데, SQL 자체의 DDL 문법중 하나이다. 책에서 나오는 예시는 다음과 같다.

 

//부서 DEPT 테이블 생성
Create Table DEPT
(
	deptno varchar2(4) primary key,
    deptname varchar2(20)
);

INSERT INTO DEPT VALUES ('1000', '인사팀');
INSERT INTO DEPT VALUES ('1001', '총무팀');

//직원 EMP 테이블 생성
Create Table EMP
(
	empno number(10),
    ename varchar2(20),
    sal number(10,2) default 0,
    deptno varchar2(4) not null,
    createdate date default sysdate, //오라클에서 현재 날짜값 삽입 문법
    constaint e_pk primary key(empno),
    constraint d_fk foreign key (deptno)
    	references dept(deptno)
        ON DELETE CASCADE //delete cascade 옵션 적용
);

INSERT INTO EMP VALUES(100, '이순신', 1000, '1000', sysdate);
INSERT INTO EMP VALUES(101, '을지문덕', 2000, '1001', sysdate);

//DEPTNO = 1000인 인사팀 삭제 -> 인사팀에 소속된 직원도 모두 삭제된다
DELETE FROM DEPT WHERE DPTNO = '1000';
SELECT * FROM EMP; //직원 조회 시, 인사팀 '이순신' 삭제됨 확인

H2 console database 문법 적용

//직원 EMP 테이블 생성
Create Table EMP
(
empno int,
    ename varchar2(20),
    sal int default 0,
    deptno varchar2(4) not null,
    createdate date default sysdate, //오라클에서 현재 날짜값 삽입 문법
    primary key(empno),
    constraint d_fk foreign key (deptno) references dept(deptno)
        ON DELETE CASCADE //delete cascade 옵션 적용
);

 

인사팀 삭제 전

삭제 후

인사팀에 소속된 이순신도 삭제됨

 

기본적으로 RDBMS가 참조 무결성을 확보해주지만, 이렇게 CASCADE 옵션을 통해서 참조 무결성을 걸어주는 방식도 있다.

 

 


 

테이블 변경 및 삭제

 

ALTER 문 정리

 

테이블명 변경 : ALTER TABLE ~ RENAME TO

ALTER TABLE EMP
	RENAME TO 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 TABLE ~ RENAME COLUMN ~ TO

ALTER TABLE EMP
	RENAME COLUMN ename to new_ename;

 

 

 

테이블 삭제

테이블 삭제 : DROP TABLE

DROP TABLE EMP;

 

제약 사항 삭제 : DROP TABLE ~ CASCADE CONSTRAINT

해당 테이블의 데이터를 외래키로 참조한 슬레이브 테이블과 관련된 제약사항까지 모두 삭제해준다.

DROP TABLE EMP CASCADE CONSTRAINT;

 

 


 

뷰(VIEW) 생성과 삭제

 

뷰는 가상의 테이블이며, 실제 데이터를 가지고 있지 않고 테이블을 참조해서 원하는 컬럼만을 조회할 수 있게 한다. 데이터 딕셔너리에 SQL문 형태로 저장하되, 실행 시에 참조되는 방식이다.

 

뷰의 특징

참조한 테이블이 변경되면 뷰도 변경된다.

특정 컬럼만 조회하게 할 수 있다.

조회는 기존 테이블과 동일하나, 입력, 수정, 삭제에는 제약이 걸린다.

ALTER문으로 뷰를 변경할 수 없다.

한번 생성된 뷰는 변경 불가하며, 변경 필요 시 삭제 후 재생성해야한다.

 

 

뷰 생성 : CREATE VIEW

CREATE VIEW T_EMP AS
	SELECT * FROM EMP;

 

실행결과

- view의 조회는 일반 테이블처럼 하면 된다.

 

뷰 삭제 : DROP VIEW [테이블명]

DROP VIEW T_EMP;

참조

 

0. [도서] 영진닷컴 - SQL 개발자 이론서 + 기출문제

728x90
반응형