Oracle에서 사원 정보가 들어 있는 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 -- 부서번호
);
SQL에서 데이터를 조회(SELECT) 할 때 셀렉션(Selection), 프로젝션(Projection), 조인(Join) 세 가지 방법이 자주 사용된다.
SELECT * FROM EMP WHERE JOB = 'MANAGER';
JOB이 'MANAGER'인 직원만 조회한다.SELECT ENAME, JOB, SAL FROM EMP;
ENAME(이름), JOB(직급), SAL(급여)만 조회한다.DEPT(부서) 테이블이 있다고 가정하고 EMP와 조인을 수행해보자.SELECT EMP.ENAME, EMP.JOB, DEPT.DNAME
FROM EMP
JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
EMP 테이블과 DEPT 테이블을 부서번호(DEPTNO) 기준으로 연결하여 사원의 이름, 직급, 부서명을 조회한다.SQL에서 데이터를 조회하는 기본 구조는 다음과 같다.
SELECT 열_이름
FROM 테이블_이름
WHERE 조건
ORDER BY 정렬기준;
SELECT ENAME, JOB, SAL
FROM EMP
WHERE SAL > 2000
ORDER BY SAL DESC;
EMP 테이블에서 급여가 2000보다 큰 사원의 이름, 직급, 급여를 조회하고 급여 순서대로 내림차순 정렬한다.동일한 데이터가 여러 번 나타날 때 중복을 제거하고 출력하려면 DISTINCT를 사용한다.
SELECT DISTINCT JOB FROM EMP;
EMP 테이블에서 중복되지 않는 직급(JOB) 목록을 가져온다.컬럼 이름이 길거나 가독성이 떨어질 경우 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;
조회된 데이터를 원하는 기준으로 정렬하려면 ORDER BY를 사용한다.
SELECT ENAME, SAL FROM EMP ORDER BY SAL;
SAL)를 오름차순(낮은 → 높은)으로 정렬한다.SELECT ENAME, SAL FROM EMP ORDER BY SAL DESC;
SELECT ENAME, JOB, SAL FROM EMP ORDER BY JOB ASC, SAL DESC;
JOB(직급)을 오름차순, 같은 직급 내에서는 SAL(급여)을 내림차순으로 정렬한다.