DDL(Data Definition Language) : CREATE(생성), ALTER(수정), TRUNCATE(잘라내기), DROP(삭제)
DML(Data manipulation Language) : INSERT(입력), UPDATE(변경), DELETE (삭제), MERGE(병합)
-- 데이터를 관리하는 명령어
DCL(Data Control Language) : GRANT(권한주기), REVOKE(권한뺏기)
TCL(Transaction Control Language) : COMMIT(확정), ROLLBACK(취소)
1. CREATE
- 사용자가 값을 입력하지 않을 경우 기본적으로 null 값이 자동으로 입력
- 사용자가 값을 입력하지 않을 경우 null값 외에 다른 특정한 값을 지정 : default
<제한사항>
- 테이블이름 또는 컬럼이름은 한글로 사용가능(but 불편함)
- 테이블이름은 반드시 문자로. 숫자사용가능(but 숫자로 시작 NO)
- 특수문자로 가능하지만 " " 로 묶어야 함. 권장하지 않음
- 테이블이름 또는 컬럼이름은 최대 30byte까지 가능 (한글로 테이블 생성할 경우 15글자 까지)
- 오라클이 사용하는 키워드를 사용하지 않기를 권장
1. 테이블 생성하기
2. 기본값을 설정하면서 생성하기
# Global Temporary Table 생성하기
- Redo log를 생성하지 않는다.
- index, view, trigger를 생성할 수 있으나 전부 temporary
- 이 테이블에 들어있는 데이터는 이전이나 백업을 할 수 없다
1. glboal temporary table 생성하기
- ON COMMIT delete ROWS --commit 시에 테이터를 삭제한다는 뜻(default)
- ON COMMIT preserve ROWS --세션이 종료해야 데이터가 사라진다는 뜻
2. global temporary table 생성 후 조회
- 같은 계정이라 할지라도 다른 터미널에서는 조회 불가능
- 같은 계정이라 할지라도 다른 창에서는 다른사람이 어떤 작업을 하는지 알수 없음
3. commit 후 삭제 확인
# 테이블 복사하기 (CTAS)
1. 모든 컬럼 다 복사하기
2. 특정 컬럼만 복사하기
3. 테이블 구조(컬럼)만 가져오고 데이터 안 가져오기
# 가상컬럼테이블 생성하기
- 11g부터 추가된 기능
step 1. 가상 컬럼을 가지는 vt001 테이블생성
step 2. vt001 테이블에 데이터 입력
- 가상 컬럼에 데이터를 입력할 경우 오류남 (no3=no1+no2)
- no1, no2 에만 데이터 입력 insert into vt001(no1, no2) values(1,2)
step 3. 입력된 데이터 조회
- no3에는 데이터를 입력하지 않았지만 자동으로 계산된 식의 값으로 입력됨
step 4. 기존 값을 변경 한 후 가상 컬럼에 반영되는 지 확인
- vt001 테이블의 no1 값을 변경
- vt001 테이블 조회시 no3(no1+no2) 값이 변경됨을 알수 있다.
step 5. 새로운 가상 컬럼 추가
- 새로운 가상 컬럼 no4 추가 시 즉시 값이 반영되어 생성됨
step 6. 가상 컬럼 내역 조회
- 테이블 명 : user_tab_columns
step 7. 조건절을 활용한 가상 컬럼 생성하기
2. ALTER
- 만들어져 있는 오브젝트를 수정(변경)하는 명령어
- 컬럼 삭제, 컬럼 이름이나 테이블 이름 변경 등
- 부하가 많이 걸리는 명령어이므로 사용량이 많은 시간에 수행하는 것은 위험하다.
EX1. 새로운 컬럼 추가
EX2. 컬럼 추가하기 : ALTER TABLE [테이블명] ADD (컬럼명, 컬럼형식)
--기본값 지정하여 컬럼 추가하기
EX3. 컬럼 이름 변경하기 : ALTER TABLE [테이블명] RENAME [컬럼명] TO [변경할 컬럼명]
EX4. 컬럼 데이터 크기 변경하기 : ALTER TABLE [테이블명] MODIFY (컬럼명, 형식)
SQL> DESC dept6
SQL> ALTER TALBE dept6 MODIFY (dcode, varchar2(10))
EX5. 컬럼 삭제하기 : ALTER TABLE [테이블명] DROP COLUMN [컬럼명]
--참조키로 설정되어있을 경우 삭제시 에러남 >> cascade constraints 조건 추가
참고) 테이블이름 변경하려면? RENAME [기존 테이블명] TO [변경할 테이블명]
EX6. 읽기 전용 테이블로 변경하기 (11g 추가)
① ALTER TABLE [테이블명] READ ONLY --읽기전용모드
- 데이터입력 안됨 : insert into [테이블명] values(컬럼값, ...)
- 컬럼추가 안됨 : alter table [테이블명] add (컬럼명, ...)
- 읽기 전용 테이블은 읽기전용 상태일 때 삭제가능 : drop table [테이블명]
② ALTER TABLE [테이블명] READ WRITE -- 읽기/쓰기모드
* 테이블이 읽기 전용인지 조회 하려면?
테이블명 : USER_TABLES
3. TRUNCATE
- 테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납하는 명령어
- 테이블 자체는 지워지지 않음
- TRUNCATE TABLE [테이블명]
4. DROP
- 테이블 자체를 삭제하는 명령어, 해당 테이블에 생성되어 있던 인덱스도 삭제
- DROP TABLE [테이블명]
※ 10g 부터는 drop으로 삭제할 경우 테이블이 삭제되는 것이 아니라 테이블이름이 BIN$... 로 변경됨 (윈도우의 휴지통처럼)
-> FLASHBACK TABLE 기능을 구현하기 위함 (오라클 백업과 복구 참조)
delete : 데이터 삭제, 쓰고있던 디스크상의 공간은 그대로 가지고 있음
truncate : 데이터 삭제, 공간 반납, 테이블 자체는 지워지지 않음, 인덱스도 함께 truncate
drop : 테이블 전체를 삭제. 사용하고 있던 공간, 인덱스, 제약조건등 삭제
데이터 딕셔너리 (Data Dictionary)
1. 데이터 딕셔너리
- 데이터 베이스를 운영하기 위한 정보들을 특정한 곳에 모아두고 관리
- Base Table 과 Data Dictionary View
- Base Table은 DBA라 할지라도 접근을 못하게 막아둔다
- 사용자들은(DBA포함) Data Dictionary View를 통해서만 딕셔너리에 접근가능
오라클 데이터베이스의 메모리 구조와 파일에 대한 구조 정보들
각 오브젝트들이 사용하고 있는 공간들의 정보들
제약 조건 정보들
사용자에 대한 정보들
권한이나 프로파일, 롤에 대한 정보들
감사(Audit)에 대한 정보들
2. Data Dictionary View 종류
① Static Dictionary
- 내용들이 자동으로 변경되지 않고 수동으로 변경작업을 해 주어야 함
- USER_tables : 사용자가 생성한 오브젝트들만 조회 할수 있음
- ALL_tables : 해당 사용자가 생성한 오브젝트를 포함하여 해당 사용자가 접근 가능한 모든 오브젝트 조회가능
- DBA_tables : 데이터베이스 내의 거의 모든 오브젝트들을 다 볼수있음. DBA권한을 가진 사람만 조회가능
② Dynamic Dictionary
- 접두어가 V$로 시작하는 테이블들
댓글