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 개발자 이론서 + 기출문제
'Programming-[Backend] > SQL' 카테고리의 다른 글
[TIL] INSERT INTO 여러 개 한 번에 넣기!(bulk insert, table insert) (0) | 2022.05.16 |
---|---|
[SQLD] 7. SQL 기본 3 - 데이터베이스 로그, TRUNCATE, Order by와 index 힌트, like문 underscore (0) | 2022.05.15 |
[SQLD] 5. SQL 기본 1 - 관계형 데이터베이스, 기본 용어, SQL 종류, 실행순서 (0) | 2022.05.14 |
[SQLD] 4. 반정규화와 분산데이터베이스 (0) | 2022.05.13 |
[SQLD] 3. 정규화 (0) | 2022.05.13 |