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 |