04. SELECT문의 기본형식

Benjamin·2025년 3월 23일

1. 실습용 테이블 만들기 (EMP 테이블 생성)

Oracle에서 사원 정보가 들어 있는 EMP 테이블을 생성하고 샘플 데이터를 삽입해보자.

EMP 테이블 생성

CREATE TABLE EMP (
    EMPNO NUMBER PRIMARY KEY,      -- 사원번호 (기본키)
    ENAME VARCHAR2(50),            -- 사원이름
    JOB VARCHAR2(50),              -- 직급
    MGR NUMBER,                    -- 관리자 사원번호
    HIREDATE DATE,                 -- 입사일
    SAL NUMBER(10,2),              -- 급여
    COMM NUMBER(10,2),             -- 커미션
    DEPTNO NUMBER                  -- 부서번호
);

2. 데이터를 조회하는 방법 - 셀렉션, 프로젝션, 조인

SQL에서 데이터를 조회(SELECT) 할 때 셀렉션(Selection), 프로젝션(Projection), 조인(Join) 세 가지 방법이 자주 사용된다.

(1) 셀렉션(Selection) - 행(Row) 필터링

  • 특정 조건에 맞는 만 조회하는 방법이다.
SELECT * FROM EMP WHERE JOB = 'MANAGER';
  • JOB'MANAGER'인 직원만 조회한다.

(2) 프로젝션(Projection) - 열(Column) 선택

  • 특정 열(Column)만 선택하여 출력하는 방법이다.
SELECT ENAME, JOB, SAL FROM EMP;
  • 사원의 ENAME(이름), JOB(직급), SAL(급여)만 조회한다.

(3) 조인(Join) - 여러 테이블 결합

  • DEPT(부서) 테이블이 있다고 가정하고 EMP와 조인을 수행해보자.
SELECT EMP.ENAME, EMP.JOB, DEPT.DNAME 
FROM EMP 
JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
  • EMP 테이블과 DEPT 테이블을 부서번호(DEPTNO) 기준으로 연결하여 사원의 이름, 직급, 부서명을 조회한다.

3. SQL의 기본 뼈대 - SELECT절과 FROM절

SQL에서 데이터를 조회하는 기본 구조는 다음과 같다.

기본 SELECT 문 구조

SELECT 열_이름
FROM 테이블_이름
WHERE 조건
ORDER BY 정렬기준;

예제

SELECT ENAME, JOB, SAL 
FROM EMP 
WHERE SAL > 2000 
ORDER BY SAL DESC;
  • EMP 테이블에서 급여가 2000보다 큰 사원의 이름, 직급, 급여를 조회하고 급여 순서대로 내림차순 정렬한다.

4. 중복 데이터를 삭제하는 DISTINCT

동일한 데이터가 여러 번 나타날 때 중복을 제거하고 출력하려면 DISTINCT를 사용한다.

예제

SELECT DISTINCT JOB FROM EMP;
  • EMP 테이블에서 중복되지 않는 직급(JOB) 목록을 가져온다.

5. 한눈에 보기 좋게 별칭 설정하기

컬럼 이름이 길거나 가독성이 떨어질 경우 AS 키워드를 사용하여 별칭(Alias)을 설정할 수 있다.

예제

SELECT ENAME AS "Employee Name", SAL AS "Salary" FROM EMP;
  • ENAME"Employee Name", SAL"Salary"로 표시하여 출력한다.

📌 AS는 생략 가능

SELECT ENAME "Employee Name", SAL "Salary" FROM EMP;
  • 위 코드도 동일한 결과를 출력한다.

6. 원하는 순서로 출력 데이터를 설정하는 ORDER BY

조회된 데이터를 원하는 기준으로 정렬하려면 ORDER BY를 사용한다.

(1) 오름차순 정렬 (ASC - 기본값)

SELECT ENAME, SAL FROM EMP ORDER BY SAL;
  • 급여(SAL)를 오름차순(낮은 → 높은)으로 정렬한다.

(2) 내림차순 정렬 (DESC)

SELECT ENAME, SAL FROM EMP ORDER BY SAL DESC;
  • 급여를 내림차순(높은 → 낮은)으로 정렬한다.

(3) 여러 컬럼 기준 정렬

SELECT ENAME, JOB, SAL FROM EMP ORDER BY JOB ASC, SAL DESC;
  • JOB(직급)오름차순, 같은 직급 내에서는 SAL(급여)내림차순으로 정렬한다.

0개의 댓글