1. SESSION 설정
ALTER SESSION SET NLS_LANGUAGE = 'KOREAN';
ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN';
ALTER SESSION SET NLS_CURRENCY = '\'; -- ₩(원 표시) / $, ...
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
※ SQU DEVELOPER를 통해 설정해놓은 것이므로 자바를 통해 오라클에서 DATE를 불러왔을 때 다른 형식으로 데이터를 가져올 수 있음을 주의
2. 기본 구문
▶ CREATE
테이블 생성
CREATE TABLE 테이블명
(컬럼명1 NUMBER(4)
,컬럼명2 VARCHAR2(30)
,컬럼명3 CHAR(13)
,컬럼명4 DATE DEFAULT SYSDATE
,컬럼명5 NUMBER(10)
);
테이블을 복사하여 테이블 생성
CREATE TABLE 테이블1
AS
SELECT *
FROM 테이블2;
뷰 생성
CREATE VIEW 뷰이름
AS
SELECT 테이블1 컬럼명1, 테이블1 컬럼명2, 테이블1 컬럼명3
FROM 테이블1;
CREATE OR REPLACE VIEW 뷰이름 -- 중복된 이름의 뷰가 존재한다면 덮어쓰기
AS
SELECT 테이블1 컬럼명1, 테이블1 컬럼명2, 테이블1 컬럼명3
FROM 테이블1;
시퀀스 생성
CREATE SEQUENCE 시퀀스명 -- 기본적인 시퀀스 생성 구문
START WITH 1 -- 시작값 설정 옵션
INCREMENT BY 1 -- 증가값 설정 옵션
NOMAXVALUE -- 최대값 설정 옵션
NOCACHE; -- 캐시 사용 안함 설정 옵션
---> 뭉탱이로 번호표 뽑아서 있는 손님들한테 한번에 나눠주기
-- 안쓰면 여러명이 동시에 접속해서 기다리는 사람들이 늘어날 수 있음
-- 쓰게되면 사이사이에 비는 영역들이 생길 수 있겠다.
▶ INSERT
생성된 테이블에 데이터 입력
INSERT INTO 테이블명 VALUES(컬럼1 데이터, 컬럼2 데이터, 컬럼3 데이터, 컬럼4 데이터, 컬럼5 데이터)
▶ DESCRIBE
테이블에 존재하는 컬럼의 구조 확인
DESC 테이블명;
--(널? : 널인상태를 수용하는 컬럼이니? )
▶ COMMENT
테이블의 커멘트 정보 확인
SELECT *
FROM USER_TAB_COMMENTS;
테이블 레벨의 커멘트 정보 입력
COMMENT ON TABLE 컬럼명 IS '커멘트';
테이블에 소속된 컬럼에 대한 커멘트 데이터 확인
SELECT *
FROM USER_COL_COMMENTS
WHERE TABLE_NAME = '테이블 커멘트';
테이블에 소속된(포함된) 컬럼에 대한 커멘트 데이터 입력
COMMENT ON COLUMN 테이블명.컬럼명 IS '커멘트';
▶ ADD
테이블에 데이터를 담을 수 있는 컬럼 추가
ALTER TABLE 테이블명
ADD 컬럼명 CHAR(13);
-- 테이블 내에서 컬럼의 순서는 구조적으로 의미 없음. 선택적으로 골라서 조회하게 할 수 있으므로..
▶ UPDATE
데이터 수정
UPDATE 테이블명
SET 바꿀컬럼명 = '바꿀 데이터'
WHERE 컬럼명 = '해당 데이터'
▶ DELETE
▶ DROP
테이블 자체를 구조적으로 제거
DROP TABLE 테이블명;
테이블의 컬럼 제거
ALTER TABLE 테이블명
DROP COLUMN 컬럼명;
휴지통에 있는 테이블을 조회
SHOW RECYCLEBIN;
휴지통에 있는 테이블 완전 삭제
PURGE TABLE 테이블명;
삭제된 테이블을 복원
FLASHBACK TABLE 테이블명 TO BEFORE DROP;
휴지통에 남기지 않고 완전 삭제
DROP TABLE 테이블명 PURGE;
휴지통 비우기
PURGE RECYCLEBIN;
▶ COMMIT
- 테이블이 물리적으로 하드디스크상, 논리적으로 테이블스페이스에 만들어져 있는데, 데이터를 INSERT 하는 쿼리문을 실행시켰을 때 하드디스크상에 물리적으로 저장된 것이 아니라 메모리(RAM)상에 저장된 것
- 따라서 롤백은 메모리상에 저장되어있는 것을 저장하지 않고, 제거하는 것이며, 실제 하드디스크상에 물리적으로 저장된 상황을 확정하기 위해서는 COMMIT 을 수행해야 함
- 커밋 전에는 메모리+하드디스크상의 결과를 보여주는 것
COMMIT;
▶ ROLLBACK
- 마지막 COMMIT을 실행한 이후로 DML 구문(INSERT, UPDATE, DELETE, MERGE)을 통해 변경된 데이터를 취소할 수 있는 것일 뿐 DML 명령을 사용한 후 COMMIT 을 수행하고 나서 ROLLBACK 을 실행하면 그 전으로 절대 돌아갈 수 없음
- ⚠️ CREATE, ALTER 는 AUTO COMMIT됨을 주의해야함
ROLLBACK;
3. 쿼리문 유형 분류
| 분류 |
기능 |
구문 |
| 데이터 정의어(DDL, Data Definition Language) |
테이블, 관계 구조를 생성하는데 사용. 수행하고 나면 자동 COMMIT 되는 구문 |
CREATE, DROP, ALTER, (TRUNCATE) |
| 데이터 조작어(DML, Data Manipulation Language) |
데이터 삽입, 수정, 삭제하는데 사용. 수행하고 나면 COMMIT 이나 ROLLBACK을 수행해야 하는 구문 |
INSERT, DELETE, UPDATE, (MERGE) |
| 데이터 제어어(DCL, Data Control Language) |
데이터 사용 권한을 관리. 실행하면 자동으로 COMMIT 됨 |
GRANT, REVOKE |
| 트랜잭션 제어어(TCL,Transaction Control Language) |
DML에 의해 변경된 내용을 관리 |
COMMIT, ROLLBACK |