오라클 SQL 정리
1. 네이밍 규칙 (접두어/표기법)
- DB 이름: 첫 자만 대문자 (예: Study)
- 키워드: 모두 대문자 (SELECT, CREATE 등)
- 테이블: t 접두어, 첫 자 대문자 (예: tCity, tMember)
- 필드: 모두 소문자, 여러 단어일 경우 어근만 대문자 (예: name, orderDate)
2. 주요 데이터 타입
- INT : 정수
- DECIMAL : 실수
- CHAR : 고정 길이 문자열
- VARCHAR : 가변 길이 문자열
- DATE : 날짜
CHAR vs VARCHAR
- CHAR(10) : 값이 3글자면 나머지 7자리를 공백으로 채워 반환
- VARCHAR(10) : 들어간 값만 저장
- CHAR → 속도 빠름 (길이가 일정한 데이터에 적합: 주민등록번호, 우편번호)
- VARCHAR → 용량 유리 (길이 일정치 않은 데이터에 적합: 영화 제목, 댓글)
3. 테이블 생성 예제
CREATE TABLE tStudy (
name CHAR(10) PRIMARY KEY,
area INT NULL,
popu INT NULL,
metro CHAR(1) NOT NULL,
region CHAR(6) NOT NULL
);
INSERT INTO tStudy VALUES ('서울', 605974, 'y', '경기');
- F11 → Commit
- DROP TABLE tStudy;
4. MySQL vs Oracle 차이
- MySQL → CREATE DATABASE, USE DB명 필요
- Oracle → DB 인스턴스가 이미 있음, 로그인하면 바로 Schema 단위 사용
→ 일반 유저는 CREATE DATABASE 거의 안 씀, 바로 CREATE TABLE 가능
5. Oracle 계정 구조
- SYS : 최상위 관리자 (관리 전용)
- SYSTEM : 일반 DBA 용도
- 일반 유저 (예: SCOTT) : 실무/업무 테이블 생성
- 실무에서는 SYS 안 쓰고 SYSTEM/일반 계정 사용
6. 별명 (Alias)
SELECT name AS 도시명,
area AS "면적(제곱 km)",
popu * 1000 AS "인구(명)"
FROM tCity;
- 별명은 AS로 지정
- 공백, 특수문자, 괄호 포함 시 반드시 큰따옴표 사용
7. DUAL 테이블
- 오라클은 단순 계산용 더미 테이블 DUAL 제공
SELECT 60*60*24 AS "하루" FROM dual;
8. 비교 / 패턴 연산자
- LIKE '%천%' : "천"이 포함된 도시
- LIKE '천%' : "천"으로 시작
- LIKE '%천' : "천"으로 끝
→ Oracle은 CHAR 타입 뒤에 공백 채움 → '%천 ' 이렇게 공백 맞춰야 함 - 와일드카드 자체 검색 시 ESCAPE 사용
WHERE sale LIKE '%30#%' ESCAPE '#';
9. IN 연산자
SELECT * FROM tCity WHERE region IN ('경상', '전라');
10. DISTINCT
SELECT DISTINCT region FROM tCity;
11. 의사 컬럼 (Pseudo Column)
- ROWNUM : 일련번호
- ROWID : 고유 식별자
SELECT * FROM (SELECT * FROM tCity ORDER BY area DESC) WHERE rownum <= 4;
→ 반드시 서브쿼리로 정렬 후 잘라내야 원하는 결과 가능
12. OFFSET / FETCH
SELECT *
FROM tCity
ORDER BY area DESC
OFFSET 2 ROWS FETCH NEXT 3 ROWS ONLY;
13. 집계 함수
- COUNT() : 레코드 수
- SUM() : 합계
- AVG() : 평균
- MIN() : 최소값
- MAX() : 최대값
- STDDEV() : 표준편차
- VARIANCE() : 분산
NULL 처리
- 대부분 집계 함수는 NULL 제외
- 단, COUNT(*) 는 NULL도 포함 (레코드 수 기준)
14. GROUP BY
SELECT depart, AVG(salary)
FROM tStaff
GROUP BY depart;
- 그룹 기준 필드와 집계함수만 같이 출력 가능
- 집계 없는 일반 필드 단독 출력 불가
15. HAVING
SELECT depart, AVG(salary)
FROM tStaff
GROUP BY depart
HAVING AVG(salary) >= 340
ORDER BY AVG(salary);
- HAVING 은 그룹핑된 결과에 대한 조건
- WHERE 은 행(row) 조건
요약
- Oracle 은 Schema 중심 구조 (MySQL 과 다름)
- SYS 계정은 관리 전용, 업무는 SYSTEM/일반 계정 사용
- 별명 지정 시 큰따옴표 필요
- ROWNUM, ROWID 는 Oracle 특수 컬럼
- 집계 함수는 NULL 처리 주의
- GROUP BY + HAVING 은 반드시 구분해서 사용해야 함
'DB' 카테고리의 다른 글
| 오라클 - SQL 집합 연산자 & DML 정리 (0) | 2025.06.11 |
|---|---|
| 오라클 DB 정리 – 정규화 · 참조 무결성 · 외래키 제약 · ENUM 대체 방법 (0) | 2025.06.11 |
| 오라클 PL/SQL (0) | 2025.06.10 |
| Oracle과 MySQL 비교 DB 정리 (테이블 생성 ~ 조인, MyBatis) (0) | 2025.06.09 |
| Oracle SQL – 테이블 생성, 시퀀스, 제약조건 정리 (0) | 2025.06.05 |