언어/SQL

데이터 제한 및 정렬

asu2880 2022. 6. 10. 11:01

WHERE절 사용하기

SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90;
  • where절에 조건을 걸어서 원하는 데이터를 찾을 수 있음
  • 조건이 참일 경우에 조건을 만족하는 행이 반환 됨

 

SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'Whalen';
  • 문자열 및 날짜는 작은 따옴표, 숫자는 작은 따옴표로 묶지 않음
  • "last_name"에 해당하는 모든 이름이 대소문자가 혼합되어 있으면 구분해줘야 함
  • 오라클 데이터베이스에서 기본 날짜 표기 형식은 "DD-MON-RR"

 

비교조건

SELECT last_name, salary
FROM employees
WHERE salary <= 3000;

비교 조건을 사용하게 된다면 급여가 3000 이하인 사원의 이름과 급여를 검색할 수 있음

 

SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500;
  • 급여가 $2,500 이상이고 $3,500 이하인 사원의 행을 반환함
  • BETWEEN 범위 조건을 사용하게 되면 지정 범위 하한값과 상한값이 포함된 값을 찾을 수 있음

 

SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201);
  • 사원번호가 100, 101, 201인 사원 번호, 이름, 급여 및 관리자의 사원 번호를 반환
  • 값이 특정 값 집합에 확인하려면 IN 조건을 사용함

 

SELECT employee_id, manager_id, department_id
FROM employees
WHERE last_name IN ('Hartstein', 'Vargas');
  • - IN 조건은 모든 데이터 유형에서 사용할 수 있음
  • - IN 조건에 문자 또는 날짜를 사용할때는 작은 따옴표(' ')로 묶어야 함

 

SELECT first_name
FROM employees
WHERE first_name LIKE 'S%';

- LIKE 조건을 사용하여 원하는 문자를 검색할 수 있음

- 찾으려는 컬럼에 대소문자가 혼합되어 있다면 구분해서 검색해야 함

 

SELECT last_name
FROM employees
WHERE last_name LIKE '_o';

 

SELECT lst_name, manager_id
FROM employees
WHERE manager_id IS NULL;

- 관리자가 없는 모든 사원의 이름과 관리자를 검색함

 

3. 논리조건

SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
AND job_id LIKE '%MAN%';

- 업무 ID 문자열에 "MAN"이 포함되고 급여가 $10,000 이상인 사원만 선택

- 모든 문자 검색은 대소문자를 구분하여 작성

 

SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%';

- 업무 ID 문자열에 "MAN"이 포함되거나 급여가 $10,000 이상인 즉 둘중에 하나라도 포함되는 사원 선택

 

4. ORDER BY

SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date;

- ORDER BY 절은 SELECT 문의 가장 끝에 위치

- 질의 결과로 반환되는 행의 순서는 정의되어 있지 않아서 ORDER BY 절을 사용하여 행을 정렬해야 함

 

5. 실습

1) 20번 및 50번 부서에 근무하며, 연봉이 200,000 ~ 250,000 사이인 사원들의 이름 및 연봉을 출력

SELECT last_name, salary * 12
FROM employees
WHERE department_id IN(20, 50)
AND salary * 12 BETWEEN 200000 AND 250000;

 

2) 2006년도에 고용된 모든 사람들의 이름 및 고용일을 출력

SELECT last_name, hire_date
FROM employees
WHERE hire_date LIKE '06%';

 

3) 매니저가 없는 사람들의 이름 및 업무를 출력

SELECT last_name, job_id
FROM employees
WHERER manager_id IS NULL;

 

4) 커미션을 받는 모든 사원들의 이름, 연봉 및 커미션을 출력

SELECT last_name, salary * 12 AS ANNSAL, COMMISSION_PCT
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY ANNSAL desc;

 

 

 

728x90
반응형

'언어 > SQL' 카테고리의 다른 글

SELECT  (0) 2022.06.13
예명(Alias)  (0) 2022.06.13
[USER] USER 권한 설정  (0) 2022.06.09
[USER] USER 생성/변경/삭제  (0) 2022.06.09
SQL 종류  (0) 2022.06.09