* TRUNCATE : WHERE절 없는 DELETE 명령처럼 모든 행을 삭제
- 차이점은 DDL이기 때문에 자동 COMMIT.
SELECT * FROM sales_reps;
DELETE FROM sales_reps;
ROLLBACK;
※ DELETE는 ROLLBACK이 가능하다.
TRUNCATE TABLE sales_reps;
ROLLBACK;
※ TRUNCATE는 ROLLBACK이 불가능하다.
=> Undo를 사용하지 않기 때문에, 속도도 매우 빠르다.
* 자동 커밋/롤백
Auto Commit |
Auto Rollback |
- DDL 실행 - CREATE, ALTER, DROP, TRUNCATE, ... - Connect 실행 - EXIT |
- Tool(Oracle SQL Developer 등)을 비정상 종료 - DB Server가 비정상 종료 |
* SAVEPOINT는 ROLLBACK 시 사용, COMMIT하면 SAVEPOINT는 날아감.
* C:\oraclexe\app\oracle\oradata\XE 내의 파일 정보
CONTROL.DBF | → |
|
SYSTEM.DBF SYSAUX.DBF |
Data Dictionary(Catalog) ※ SYSAUX : Oracle 10g부터 추가됨 |
|
UNDOTBS1.DBF | Undo Data 저장소(Undo Segments) | |
TEMP.DBF USERS.DBF |
* 데이터베이스는 아파트(또는 다세대 주택)에 비유될 수 있음.
ORCL (아파트) |
|
HR 주민 |
EMP 주민 |
PROD 주민 |
SALES 주민 |
SYS (or SYSTEM) 관리실 |
* CREATE TABLE : 테이블 생성하기
실습)
CREATE TABLE member
(id NUMBER(4),
name VARCHAR2(20),
phone_no VARCHAR2(11),
email VARCHAR2(40),
join_date DATE);
DESC member;
INSERT INTO member
VALUES(1001, 'Jisang', '01012345678', 'wona23@gmail.com', sysdate);
SELECT * FROM member;
* 오라클에서 사용 가능한 데이터 타입
Small Data | Large Data | ||||
숫자 |
NUMBER(P[,S]) |
P에 올 수 있는 최대 숫자 : 38 | |||
날짜 |
DATE |
| |||
문자 |
CHAR(n) VARCHAR2(n) |
고정 길이(8: Oracle**), n 최대 : 2,000byte 가변 길이(8: Oracle), n 최대 : 4,000byte | Clob | LOB(최대 4GB) |
|
이진 |
RAW |
n 최대 : 2,000byte | Blob, Bfile |
||
ROWID | ROWID | 64진법 |
※ 이진 데이터(RAW, LONGRAW)는 용량 때문에 사용 시 주의
※ Bfile은 응용 프로그램에서 많이 쓰이는 형태
※ LOB 타입 이전에 사용된 LONG 타입(LONG, LONGRAW)의 데이터는 용량이 커서 테이블을 따로 저장해서 사용했었음.
- 테이블을 따로 만들고, 필요할 때 Join해서 사용.
※ LOB 타입은 링크 정보만 저장, 실제 데이터는 별도의 저장소에 저장하는 방식.
- Indexing 기법
* ROWID
ex)
SELECT employee_id, last_name, rowid
FROM employees;
>> ROWID 의미
- 6 3 6 3
객체 | File No | Block 번호 | 행 번호
- ROWID는 일종의 Pseudo Column
- Primary Key보다 더 정확하게 중복 데이터를 식별할 수 있음
* DEFAULT Option : 기본 옵션
ex)
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
create_date DATE DEFAULT sysdate);
INSERT INTO dept(deptno, dname)
VALUES(10, '관리부');
SELECT * FROM dept;
* Including Constraints : 제약 조건
- NOT NULL
- UNIQUE
>> NULL도 가능(NULL은 각각 UNIQUE하므로)
- PRIMARY KEY(PK)
>> 비교적 짧고, 숫자만으로 된 것이 가장 좋음. (주민등록번호보다는 학번)
- FOREIGN KEY(FK)
- CHECK
>> Foreign Key와 Check는 남발하면 그 자체로 제약 조건이 될 수 있어서, 최근에는 응용 프로그램 코드로 대체되는 경우가 많음. (리스트에서 선택하는 방식)
※ Bold는 많이 사용
실습)
CREATE TABLE member
(id NUMBER(4) Primary Key, ← Column Level 제약 조건
name VARCHAR2(20) not null, ← Column Level 제약 조건
phone_no VARCHAR2(11) CONSTRAINT member_phone_uk UNIQUE, ← Column Level 제약 조건
email VARCHAR2(40),
join_date DATE,
CONSTRAINT member_email_uk UNIQUE(email) ← Table Level 제약 조건
);
DESC member;
=> 제약 조건이 나타나지 않는다.
※ 제약 조건 확인 방법 >>
실습)
SELECT table_name, constraint_name, constraint_type
FROM user_constraints
WHERE table_name = 'MEMBER'; ← table_name은 반드시 대문자로 작성해야 함.
'스마트웹&콘텐츠 개발자 과정 > Oracle' 카테고리의 다른 글
5/30 오후 (0) | 2018.05.30 |
---|---|
5/29 오후 (0) | 2018.05.29 |
SQL 수업 (5/25 오후) (0) | 2018.05.25 |
5월 24일 (0) | 2018.05.24 |
5월 23일 (0) | 2018.05.23 |