Oracle Common
Oracle 의 기본 데이터 타입과 자주 사용하는 쿼리를 살펴보자.
데이터 타입
Oracle의 기본 데이터 타입은 크게 문자형, 숫자형, 날짜형, LOB 이렇게 4가지로 분류할 수 있다.
📌 문자형 데이터 타입
type | 설명 | 최대길이 | 기본값 |
---|---|---|---|
CHAR(n) | 고정길이 문자 | 2000byte | 1byte |
VARCHAR2(n) | 가변길이 문자 | 4000byte | 1byte |
NACHAR(n) | 고정길이 유니코드 문자 | 2000byte | 1byte |
NVARCHAR(n) | 가변길이 유니코드 문자 | 2000byte | 1byte |
LONG | 최대값이 큰 가변길이 문자 | 2Gbyte |
📌 숫자형 데이터 타입
type | 설명 | 최대길이 | 값 범위 |
---|---|---|---|
NUMBER(P, S) | 가변숫자 | 22byte | P(1~38), S(-84~127) |
FLOAT(P) | NUMBER 하위타입 | 22byte | P(1~128) |
BINARY_FLOAT | 32bit 부동소수점 수 | 4byte | |
BINARY_DOUBLE | 64bit 부동소수점 수 | 8byte |
📌 날짜형 데이터 타입
type | 설명 |
---|---|
DATE | BC 4712년 1월 1일부터 9999년 12월 31일, 연월일시분초까지 입력 가능 |
TIMESTAMP | 연월일시분초 + 밀리초까지 입력 가능 |
📌 LOB 데이터 타입 (대용량 데이터 저장)
type | 설명 |
---|---|
CLOB | 문자형 대용량 객체 (고정길이 및 가변길이) |
NCLOB | 유니코드를 지원하는 문자형 대용량 객체 |
BLOB | 이진형 대용량 객체 |
BFILE | 대용량 이진 파일에 대한 위치 및 이름 |
📌 CRUD 예제
1️⃣ 테이블 생성
CREATE TABLE USERS (
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(100),
EMAIL VARCHAR2(100),
CREATED_AT DATE DEFAULT SYSDATE
);
2️⃣ 데이터 삽입 (INSERT)
INSERT INTO USERS (ID, NAME, EMAIL) VALUES (1, '홍길동', 'hong@example.com');
COMMIT;
3️⃣ 데이터 조회 (SELECT)
SELECT * FROM USERS WHERE NAME = '홍길동';
4️⃣ 데이터 수정 (UPDATE)
UPDATE USERS SET EMAIL = 'hong_new@example.com' WHERE ID = 1;
COMMIT;
5️⃣ 데이터 삭제 (DELETE)
DELETE FROM USERS WHERE ID = 1;
COMMIT;
📌 시퀀스 (Sequence) 사용 예제
시퀀스를 활용하면 자동 증가하는 ID 값을 생성할 수 있다.
6️⃣ 시퀀스 생성
CREATE SEQUENCE USER_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
7️⃣ 시퀀스를 사용한 데이터 삽입
INSERT INTO USERS (ID, NAME, EMAIL) VALUES (USER_SEQ.NEXTVAL, '김철수', 'kim@example.com');
8️⃣ 현재 시퀀스 값 확인
SELECT USER_SEQ.CURRVAL FROM DUAL;
📌 ROWNUM을 활용한 페이징 처리
9️⃣ 특정 개수만 조회 (예: 상위 10개 데이터)
SELECT * FROM USERS WHERE ROWNUM <= 10;
🔟 OFFSET을 포함한 페이징 처리
SELECT * FROM (
SELECT A.*, ROWNUM AS RNUM FROM (
SELECT * FROM USERS ORDER BY CREATED_AT DESC
) A WHERE ROWNUM <= 20
) WHERE RNUM > 10;
🔹 위 쿼리는 11번째부터 20번째 데이터만 조회하는 예제
📌 날짜 및 시간 관련 예제
11️⃣ 현재 날짜 및 시간 조회
SELECT SYSDATE FROM DUAL;
12️⃣ 특정 날짜 이후 데이터 조회
SELECT * FROM USERS WHERE CREATED_AT >= TO_DATE('2024-01-01', 'YYYY-MM-DD');
13️⃣ 날짜 형식 변환
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
📌 기타 자주 사용하는 SQL 문법
14️⃣ 테이블에 컬럼 추가
ALTER TABLE USERS ADD PHONE_NUMBER VARCHAR2(20);
15️⃣ 테이블 컬럼 삭제
ALTER TABLE USERS DROP COLUMN PHONE_NUMBER;
16️⃣ 인덱스 생성
CREATE INDEX IDX_USERS_EMAIL ON USERS (EMAIL);
17️⃣ 테이블 삭제
DROP TABLE USERS CASCADE CONSTRAINTS;
댓글남기기