Oracle Database는 전 세계에서 가장 널리 사용되는 관계형 데이터베이스 시스템 중 하나입니다. 그 중심에는 데이터를 조회하는 SELECT 문이 존재합니다. 이 글에서는 Oracle SQL의 SELECT 문에 대해 초보자도 이해할 수 있도록 구조적으로 설명하고, 다양한 실무 예제를 통해 개발자들이 실전에서 바로 활용할 수 있도록 안내하겠습니다.
1. SELECT 문이란?
SELECT 문은 데이터베이스에서 원하는 데이터를 조회할 때 사용하는 SQL의 핵심 구문입니다. Oracle뿐만 아니라 대부분의 RDBMS에서 사용되는 표준 구문이기도 합니다.
기본 문법
SELECT 컬럼명1, 컬럼명2, ...
FROM 테이블명
WHERE 조건절
ORDER BY 정렬기준;
2. 가장 단순한 SELECT 예제
테이블에 있는 모든 데이터를 조회하려면 다음과 같이 작성합니다:
SELECT * FROM employees;
*
는 모든 칼럼을 의미하며, employees
는 직원 정보를 담고 있는 테이블 이름입니다.
3. 특정 칼럼만 조회하기
SELECT employee_id, first_name, salary
FROM employees;
이 예제는 직원 ID, 이름, 급여만 출력합니다.
4. 조건에 맞는 데이터 조회 (WHERE 절)
SELECT * FROM employees
WHERE department_id = 50;
부서 번호가 50번인 직원만 조회합니다.
5. 데이터 정렬 (ORDER BY)
SELECT * FROM employees
ORDER BY salary DESC;
급여가 높은 순으로 정렬된 직원 목록입니다.
6. 별칭 사용 (ALIAS)
SELECT first_name AS 이름, salary AS 급여
FROM employees;
칼럼명에 별칭을 부여하여 가독성을 높입니다.
7. 중복 제거 (DISTINCT)
SELECT DISTINCT department_id FROM employees;
중복 없이 부서 번호만 조회합니다.
8. 집계 함수 사용 (SUM, AVG, COUNT 등)
SELECT COUNT(*) AS 직원수, AVG(salary) AS 평균급여
FROM employees;
전체 직원 수와 평균 급여를 확인할 수 있습니다.
9. 그룹화 (GROUP BY)
SELECT department_id, COUNT(*)
FROM employees
GROUP BY department_id;
부서별 직원 수를 조회합니다.
10. 조건 그룹화 (HAVING)
SELECT department_id, COUNT(*) AS 인원수
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;
5명 이상의 직원이 있는 부서만 보여줍니다.
11. 서브쿼리(Subquery)
SELECT first_name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
평균 급여보다 높은 급여를 받는 직원 목록입니다.
12. 조인 (JOIN)
SELECT e.first_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
직원 정보와 부서명을 함께 출력합니다.
13. 정렬, 페이징 (ROWNUM, FETCH FIRST 등)
SELECT * FROM employees
ORDER BY hire_date DESC
FETCH FIRST 5 ROWS ONLY;
최근에 입사한 상위 5명만 조회합니다. Oracle 12c 이후 문법입니다.
14. 성능 팁: 인덱스와 EXPLAIN PLAN 활용
SELECT 문은 조회 성능에 큰 영향을 줍니다. 다음 문장을 통해 실행 계획을 확인할 수 있습니다:
EXPLAIN PLAN FOR SELECT * FROM employees WHERE employee_id = 100;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
이 결과를 통해 인덱스 사용 여부 등을 분석할 수 있습니다.
15. 예외 상황과 트러블슈팅
- ORA-00942: 테이블이나 뷰가 존재하지 않는 경우 → 권한 확인
- ORA-01722: 숫자 형식 오류 → 타입 일치 여부 점검
참고 출처
- Oracle 공식 문서
- SQL Tutorial
- 오라클 SQL 실전 가이드, 한빛미디어
'Oracle' 카테고리의 다른 글
[ORACLE] MERGE() 문법 완전 정리 : INSERT와 UPDATE를 동시에 처리하기 (0) | 2025.06.08 |
---|---|
[ORACLE] INSERT() 기초부터 실전까지 : 초보 개발자를 위한 SQL 가이드 (0) | 2025.06.08 |
[ORACLE] LNNVL() 함수 활용 예제 모음과 실무 적용 법 (0) | 2025.06.07 |
[ORACLE] USER() 함수 개념 정리 및 실습 가이드 (0) | 2025.06.07 |
[ORACLE] UID() 함수로 사용자 추적 로직 구현하기 (0) | 2025.06.07 |