DDL => 구조를 가지고 있는 언어. (객체 ) 를 생성, 삭제 하는 언어
『 데이터 베이스 객체 』
테이블 : 데이터를 저장하는 기본단위, 행 열로 구성
뷰 : 데이터의 액세스를 제한하기 위해 사용
시퀀스 : 숫자 값 생성기 [중복이 되지 않는 고유 번호를 생성하여 줌]
인덱스 : 질의의 성능을 향상시키기 위한 객체
동의어 : 객체에 다른 이름을 제공함. [ Employees -> emp 동의어 ]
『 데이터 유형 』
VARCHAR(길이) : Variable Character, 가변 길이 문자 데이터 [길이 만큼 할당해놓고 저장공간 자연스럽게 할당] ->저장공간
CHAR(길이): Character, 고정 길이 문자 데이터 [길이 만큼의 공간을 만들어놓고,사용 공간 이후의 공간 할당불가]->성능
NUMBER(p,s) : 가변 길이 숫자 데이터/ (p,2)는 소수점 2자리까지 표현하여라.
DATE: 날짜 및 시간 값 [언어(한국어,영어) 등에 대한 표기가 모두 다름], 시차문제도 똑같이 존재.
예를들어, CHAR(100) 인데, 20개의 공간만을 쓴다면... 80개의 공간이 낭비된다... 이 컬럼의 행의 수가 불어날 경우
심각한 공간 낭비가 된다.
TIMESTAMP 데이터 유형은, 년/월/일/시간/분/초 까지 포함하는 날짜를 보여줌.
【 테이블 】
테이블의 규칙
○ 문자로 시작하여야 함
○ 1자부터 30자까지 가능
○ A-Z, a-z, 0-9, _, $, # 만 허용
○ 동일한 사용자가 소유한 다른 객체의 이름과 중복되지 않아야 함
○ Oracle server 의 예약어가 아니어야 함.
【 테이블 생성 】
create table [테이블명] (컬럼명, 데이터타입[길이])
dept 테이블을 생성하고, 테이블에 insert 절을 통해 넣은 데이터를
조회한 결과이다.
Create 문에 서브쿼리를 사용할 수 있다.
서브쿼리에서 반환된 결과를 Create Table한다.
이것은 빠르게 데이터를 가져올 수 있다는 장점이 있다.
이와 비슷한 방법으로 insert문에 서브쿼리를 사용해서 조건에 만족하는 테이블들을 삽입하는 방법이 있다.
truncate 문은 해당 테이블안에 있는 모든 데이터를 삭제한다.
【 테이블 수정 】
alter table [테이블명] [add, modify] (column 데이터타입 [Default expr]
alter table [테이블명] [drop]
컬럼의 추가는 항상 맨 마지막에 생성됨[열]
alter문을 통해 varchar2(9)의 job_id를 추가 하였다, 기존 테이블 내 칼럼에 들어있던 값에는 null이 자동으로 지정된다.
이렇게 insert문은, 기존 행에 데이터가 있을 경우, 맨 마지막열에 데이터를 추가하는데
이 경우에는 insert문이 아닌 update문을 통해 수정을 하여야한다.
기존 저장된 데이터의 데이터타입과 맞지 않는 유형의 데이터 타입을 지정하거나,
길이가 맞지 않을 경우 오류가 발생한다.
drop 을 이용해 job_id 컬럼을 삭제함.
DDL 명령어는 기존 행에 락을 거는 DML 명령어와 달리
테이블 전체에 락을 걸게 됨. ( 이 테이블 자체에 작업 불가 ) => 동시성이 떨어짐.
drop 은 data만 제거되는 것이 아닌, colum의 구조정보, 저장공간도 같이 삭제 되어버림.
따라서 Drop 이 아닌 Set Unused 명령어를 사용
데이터 딕셔너리에는 기본적으로 Used 상태로, 해당 컬럼 정보가 저장되는데
이를 Unused 로 바꿈으로써, 사용하지 않음 상태로 설정을 하므로 저장공간과 구조정보를 그대로 유지 할 수 있음.
그리고 락이 걸리지 않는 방법으로 동시성이 높음.
단, 공간이 남아있게 되는데 이를
drop unused columns 를 통해 지우게 되면, 동시성을 확보하면서 컬럼을 삭제할 수 있음.
drop 문은 참조대상인 테이블이 있는경우, 사용할 수 없다. (Cascade 옵션을 넣어야 함)
정리하면
Delete -> DML, 데이터 삭제, 공간은 남음, Rollback 복구가능
truncate -> DDL, 데이터 삭제, 테이블 구조공간 남음, 데이터 저장 공간 삭제, Rollback 복구 불가
drop -> DDL, 데이터, 테이블구조 삭제, 테이블 구조, 저장공간 전부 삭제, Rollback 복구 불가
truncate, drop 는 백업본 존재시 복구 가능함.
delete => 행단위 삭제
truncate => 모두 삭제
update = delete+insert 작업 임.
'Database > Oracle' 카테고리의 다른 글
뷰(view) (0) | 2021.01.06 |
---|---|
제약 조건 설정 (0) | 2021.01.06 |
데이터 조작어 [DML] 와 트랜잭션 (0) | 2021.01.05 |
Select 문 -3 (join) (0) | 2020.12.31 |
Select문 -2 (0) | 2020.12.30 |