Database - Oracle DB/2주차(Database - Oracle DB)

[SQL] DB 스터디 - 08

김야키 2019. 1. 7. 15:44


DDL문을 사용하여 테이블 생성 및 관리


1. 데이터베이스 객체

- 테이블 : 기본 저장 단위, 행으로 구성 됨

- 뷰 : 하나 이상의 테이블에 있는 데이터의 부분 집합을 논리적으로 출력

- 시쿼스 : 숫자 값을 생성

- 인덱스 : 일부 Query 성능을 향상 시킴

- 동의어 : 객체에 다른 이름을 부여



2. 이름 규칙

- 예약어 사용 불가능

- 대/소문자를 구분해서 입력 해도 저장될 때는 모두 대문자로 변환 됨

- 이름이 겹치는 것은 허용할 수 없음

-> 컬럼의 이름은 상관 없음

- 문자로 시작 되어야 함



3. CREATE TABLE문

- CREATE TABLE 권한이 필요 함

- 저장 공간 필요

- CREATE TABLE name ( column datatype [ ....... ] );

- 테이블 이름 지정

- 컬럼 이름, 컬럼 데이터 유형 및 컬럼 크기 지정




4. 데이터 타입

- 문자

-> CHAR : 고정 길이 문자 지정 (~2000byte)

-> VARCHAR2 : 가변길이 문자 지정 (~4000byte)

-> LONG : 가변길이 문자 지정 (~2GB)

-> CLOB : 가변길이 문자 지정 (~4GB) => 설정에 따라 128TB까지도 가능

예)

->

-- T1테이블 생성

CREATE TABLE T1(

    C1 CHAR(5),           

-- 고정 길이형 문자(문자 뒷 자리에 공백으로 자리수를 맞춤)

    C2 VARCHAR2(5),    

-- 가변 길이형 문자

    C3 LONG,

-- 가변 길이형 문자

-- 테이블당 한 컬럼만 LONG를 가질 수 있음

    C4 CLOB 

-- 가변 길이형 문자

);


-- T1테이블에 데이터 입력

INSERT INTO T1 VALUES('ABC','ABC','ABC','ABC');


-- 데이터 출력

SELECT C1, LENGTH(C1), C2, LENGTH(C2) FROM T1;

-- 실제로 C1에 'ABC'가 입력 될 때 'ABC  '으로 입력 됨


C1    LENGTH(C1)    C2    LENGTH(C2)

-----    ----------     -----     ----------

ABC              5       ABC              3

ABC              5       ABC              3

ABC              5       ABC              3


- 숫자

-> NUMBER(p, s) : 가변 길이 숫자 데이터

-> p자리수, 소숫점 이하 자리 s자리수인 숫자


- 날짜

-> DATE : 날짜 및 시간 값


- 파일

-> BLOB : 바이너리 데이터(~4GB) => 최대 128TB

-> BFILE : 파일의 위치 정보만을 저장

-- 실제 파일은 OS내부에 존재

- 물리 주소

-> ROWID : 테이블에 있는 행의 고유 주소를 나타내는 base-64 숫자 체계로 저장


- 날짜

-> TIMESTAMP : 소수 표시 초 단위의 날짜

-> INTERVAL YEAR TO MONTH : 년, 월 간격으로 저장

-> INTERVAL DAY TO SECOND : 일, 시, 분, 초 간격으로 저장




5. DEFAULT 옵션

- 기본값을 의미하는 부분

- 특정 컬럼에 NULL이 들어오면 기본 값으로 대신 입력 됨

예)

->

-- id는 8자리 숫자

-- hire_date는 NULL이 들어오면 현제시간으로 입력 되도록 만드는 테이블

CREATE TABLE hire_dates (

id                NUMBER(8),

hire_date       DATE DEFAULT SYSDATE 

);




6. Subquery를 이용하여 테이블 생성

- CREATE TABLE과 AS Subquery를 이용하여 테이블을 복제할 때 사용

- 지정된 컬럼 개수와 Subquery 컬럼 개수를 일치 시킴

- 컬럼 이름은 기본적으로 Subquery를 따르지만 사용자가 임의로 지정할 수 있음

예)

->

-- emp 테이블의 정보와 동일한 내용의 copy_emp를 만드는 명령어

CREATE TABLE copy_emp

AS

SELECT * FROM emp;


-- salary * 12는 테이블 명으로 사용될 수 없기 때문에 별칭(AS)을 붙히거나

-- 만드는 테이블에서 컬럼 명을 지정하는 방법이 있음

CREATE TABLE dept80(EMPID, NAME, ANNSAL, HIRE)

AS

SELECT 

employee_id, last_name, salary*12, hire_date

FROM 

employees

WHERE 

department_id = 80




7. 테이블 삭제

- DROP TABLE name;

-> name테이블을 제거 할 수 있음

- SHOW RECYCLEBIN을 조회하면 지웠던 테이블을 확인할 수 있음

-> 해당 명칭(RECYCLEBIN컬럼의 내용)을 복사해서 조회작업을 하면 테이블 내용이 그대로 존재 함

- FLASHBACK TABLE name TO BEFORE DROP;

-> name의 명칭으로 DROP시킨 테이블을 다시 불러올 수 있음

- 다시 꺼내오지 않는 이상 종속 객체 무효화 및 테이블의 객체 권한 제거

- DROP TABLE name PURGE;

-> name테이블을 아주 깔끔하게 제거

-> RECYCLEBIN에도 정보는 없음




'Database - Oracle DB > 2주차(Database - Oracle DB)' 카테고리의 다른 글

[SQL] DB 스터디 - 12  (0) 2019.01.08
[SQL] DB 스터디 - 11  (0) 2019.01.08
[SQL] DB 스터디 - 10  (1) 2019.01.08
[SQL] DB 스터디 - 09  (0) 2019.01.07
[SQL] DB 스터디 - 07  (0) 2019.01.07