[SQLD] DDL (Data Definition Language) 사용
1) 생성
칼럼 요소는 (칼럼 정보)(데이터 타입) 순서로 작성한다
요소 | |
Create Table | EMP 라는이름의 테이블을 생성하라는 의미 () 사이에 열 요소를 나열하고 마지막은 세미콜론으로 끝낸다 |
number | 칼럼의 데이터 타입을 숫자형 타입으로 지정 |
varchar2 | 칼럼의 데이터 타입을 가변 길이 문자열로 지정 |
char | 칼럼의 데이터 타입을 고정된 크기의 문자열로 지정 |
date | 칼럼의 데이터를 날짜형 타입으로 지 |
constraint ~ primary key | constraint 키워드를 활용하여 기본키와 기본키의 이름을 지정할 수 있 기본키 지정 시 칼럼 옆에 primary key 키워드를 붙인다 |
default 0 | 기본값을 0으로 지정한다 |
sysdate | 현재 날짜 시분초 |
number(10, 2) | 소숫점 둘째자리까지 출력하도록 포맷팅 |
delete from ~ where ~ | 요소 삭제, 차례대로 테이블명, 요소 |
select from |
외래키를 지정하려면 마스터 테이블(부서 테이블) 을 먼저 생성되어야 한다
외래키를 emp 테이블에서 사용할 때에는 기본키 지정 방식과 동일하게 constraint 키워드를 사용하여 외래키 이름인 deptfk를 입력하여 외래키를 생성한다.
2) 데이터 입력 및 삭제
INSERT INTO ~ VALUES (~); 구문을 활용하여 해당 테이블에 요소를 추가한다
테이블을 생성할 때 CASCADE 옵션을 사용할 수 있다
이는 참조 관계 (기본키 관계와 외래키 관계) 가 있을 경우 차조되는 데이터를 자동으로 반영할 수 있는
테이블을 생성하고 데이터를 입력하는데, 테이블 생성 시 외래키 선언문 아래에 ON DELETE CASCADE를 추가한다
위와 같이 DELETE FROM 구문을 이용하여 삭제가 이루어질 테이블과 요소를 지정하고
SELECT FROM 구문을 활용하여 EMP 테이블을 조회하면 EMP 테이블에 임베스트가 삭제된다.
즉 ON DELETE CASCADE 옵션은 자신이 참조하고 있는 테이블의 데이터가 삭제되면 자동으로 자신도 삭제되는 옵션이다.
위 옵션을 통해 참조무결성을 준수할 수 있다
참조무결성이란 마스터 테이블에는 해당부서 번호가 없는데 슬레이브 테이블 (EMP)에는 해당 부서 번호가 있는 경우 참조무결성 위배로 볼 수 있다.
3) 테이블 변경
ALTER TABLE 문을 통하여 테이블 변경을 할 수 있으며, 테이블명 변경, 칼럼 추가, 변경, 삭제 등을 할 수 있다.
ALTER TABLE ~ RENAME TO ~ 구문을 활용하여 테이블 명을 변경할 수 있다
ALTER TABLE ~ ADD 구문을 활용하여 칼럼을 추가할 수 있다
칼럼의 변경은 ALTER TABLE ~ MODIFY 구문을 사용하면 되는데 칼럼 변경을 통해 데이터 타입을 변경하거나 데이터의 길이를 변경할 수 있다
칼럼을 변경할때 제약조건을 설정할 수도 있다.
칼럼의 데이터 타입을 변경할 때 기존 데이터가 있는 경우엔 에러가 발생, 숫자 타입이고 숫자 데이터가 저장이 되어있는데 문자형 데이터 타입으로 변경하면 에러가 발생한다.
ALTER TABLE ~ DROP COLUMN 구문을 활용하여 칼럼에 대한 삭제를 수행한다
ALTER TABLE~ RENAME COLUMN~ TO 문으로 칼럼명을 변경할 수 있다.
4) 테이블 삭제
테이블 삭제는 DROP TABLE 명령을 활용하여 삭제 연산을 진행할 수 있는데, 이 구문은 테이블의 구조와 데이터를 모두 삭제한다.
DROP TABLE 명령어에서 CASCADE CONSTRAINT 옵션을 사용할 수 있는데, 해당 테이블의 데이터를 외래키로 참조한 슬레이브 테이블과 관련된 제약사항도 삭제할 때 사용된다
5) 뷰(View) 생성과 삭제
뷰란, 테이블로부터 유도된 가상의 테이블이다. 실제 데이터를 가지고 있지 않고 테이블을 참조하여 원하는 칼럼만을 조회할 수 있도록 하는 것이다.
뷰는 데이터 딕셔너리에 SQL 문 형태로 저장하되 실행 시에 참조된다
참조한 테이블이 변경되는 뷰도 변경된다
뷰의 검색은 참조한 테이블과 동일하게 할 수 있지만, 뷰에 대한 입력, 수정, 삭제에는 제약이 존재한다.
특정 칼럼만 조회시켜서 보안성을 향상시킨다
한 번 생성된 뷰는 변경할 수 없고 변경을 원하면 삭제 후 재생성해야한다
ALTER 문을 사용해서 뷰를 변경할 수 없다
장점 | 단점 |
- 특정 칼럼만 조회가 가능하기 때문에 보안 기능이 있다 - 데이터 관리가 간단하다 - SELECT 문이 간단해진다 원본에서 조건 걸어서 하는 것보다 뷰 하나 생성해서 전체조회(*) 하면 되기 때문 - 하나의 테이블에 여러 개의 뷰를 생성할 수 있다 |
- 뷰는 독자적인 인덱스를 만들 수 없다 - 삽입, 수정, 삭제 연산이 제약된다 - 데이터 구조를 변경할 수는 없다 |