Data 검색

✒️ 2025-05-28 16:46 내용 수정


DQL을 이용한 데이터 다루기


1. 일반 검색

SELECT 컬럼명1, 컬럼명2, ... FROM 테이블명 WHERE 조건식;
SELECT * FROM 테이블명; -- 테이블의 모든 정보를 검색
-- EMPLOYEES 테이블의 모든 정보 출력
SELECT * FROM EMPLOYEES; 

-- EMPLOYEES 테이블에서 이름, 직종, 급여만 조회
SELECT FIRST_NAME, JOB_ID, SALARY FROM EMPLOYEES;
-- EMPLOYEES 테이블에서 사번, 이름, 직종, 급여, 보너스율, 실제 보너스 금액 조회(보너스 금액은 없는 컬럼이다)
SELECT EMPLOYEE_ID, FIRST_NAME, JOB_ID, SALARY, COMMISSION_PCT, SALARY*COMMISSION_PCT FROM EMPLOYEES;

1) WHERE 조건절 사용

-- EMPLOYEES 테이블에서 급여가 10000 이상인 사원들의 정보 사번, 이름, 급여순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY FROM EMPLOYEES WHERE SALARY >= 10000;

-- EMPLOYEES 테이블에서 이름이 Michael 인 사원의 사번, 이름을 조회
SELECT EMPLOYEE_ID, FIRST_NAME FROM EMPLOYEES WHERE FIRST_NAME = 'Michael';

-- EMPLOYEES 테이블에서 급여가 10000 이상이면서 13000 이하인 사원의 정보를 이름, 급여순으로 조회
SELECT FIRST_NAME, SALARY FROM EMPLOYEES WHERE SALARY >= 10000 AND SALARY <= 13000;

2) SQL 연산자 사용

-- EMPLOYEES 테이블에서 직종이 SA_MAN이거나 IT_PROG인 사원들의 모든 정보 출력
SELECT * 
FROM EMPLOYEES 
WHERE JOB_ID = 'SA_MAN' OR JOB_ID = 'IT_PROG';

-- EMPLOYEES 테이블에서 급여가 2200, 3200, 5000, 6000을 받는 사원들의 정보를
-- 사번, 이름, 직종, 급여순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, JOB_ID, SALARY 
FROM EMPLOYEES
WHERE SALARY = 2200 OR SALARY = 3200 OR SALARY = '5000' OR SALARY = '6000';
-- BETWEEN : A와 B사이
-- EMPLOYEES 테이블에서 급여가 5000 이상 6000 이하인 사원들의 정보를 사번, 이름, 급여 순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, JOB_ID, SALARY
FROM EMPLOYEES
WHERE SALARY BETWEEN 5000 AND '6000';


-- IN : OR 대신 사용
-- EMPLOYEES 테이블에서 직종이 SA_MAN이거나 IT_PROG인 사원들의 모든 정보 출력
SELECT *
FROM EMPLOYEES
WHERE JOB_ID IN ('SA_MAN', 'IT_PROG');
-- EMPLOYEES 테이블에서 사원들의 이름 중 L로 시작하는 사원의 정보를
-- 사번, 이름, 부서 번호, 직종 순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_ID, JOB_ID 
FROM EMPLOYEES
WHERE FIRST_NAME LIKE 'L%';

-- EMPLOYEES 테이블에서 사원들의 이름 중 d로 끝나는 사원의 정보를
-- 사번, 이름, 부서 번호, 직종 순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_ID, JOB_ID 
FROM EMPLOYEES
WHERE FIRST_NAME LIKE '%d';

-- EMPLOYEES 테이블에서 사원들의 이름 중 i를 포함하는 사원의 정보를
-- 사번, 이름, 직종 순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, JOB_ID 
FROM EMPLOYEES
WHERE FIRST_NAME LIKE '%i%';

-- EMPLOYEES 테이블에서 사원들의 이름 중 첫 글자가 A로 시작하고,
-- 이름의 글자 수가 4글자인 사원의 정보를 사번, 이름, 급여 순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY 
FROM EMPLOYEES
WHERE FIRST_NAME LIKE 'A___';

-- EMPLOYEES 테이블에서 사원들의 이름 중 첫 글자가 C로 시작하고,
-- 이름의 글자 수가 5글자 이상인 사원의 정보를 사번, 이름, 급여 순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY 
FROM EMPLOYEES
WHERE FIRST_NAME LIKE 'C____%';

-- EMPLOYEES 테이블에서 사원들의 이름 중 4번째 위치에 n을 포함하고,
-- 마지막 글자가 r인 사원의 정보를 사번, 이름, 부서 번호 순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_ID
FROM EMPLOYEES
WHERE FIRST_NAME LIKE '___n%r';

-- EMPLOYEES 테이블에서 사원들의 이름 중 f를 포함하지 않고,
-- a로 끝나는 사원의 정보를 사번, 이름, 급여 순으로 출력
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY 
FROM EMPLOYEES
WHERE FIRST_NAME NOT LIKE '%f%' AND FIRST_NAME LIKE '%a' ;

2. 정렬

SELECT 컬럼명 FROM 테이블명 ORDER BY 조건문 정렬옵션;
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 조건문 ORDER BY 조건문 정렬옵션;
-- EMPLOYEES 테이블에서 급여를 많이 받는 사원 순으로 사번, 이름, 급여를 출력
-- 급여가 같은 경우 사번을 오름차순으로 정렬
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
ORDER BY SALARY DESC, EMPLOYEE_ID; --ASC는 기본값이라 생략 가능

ORDERBY 1.png