* 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

+ Recent posts