SQL

[SQL] WHERE, ORDER BY

발달중인 망고 2022. 10. 20. 23:06

안녕하세요. 오늘은 데이터의 제한 및 정렬을 담당하는  WHERE와 ORDER BY 문법을 알아보겠습니다.

WHERE 절은 조건절 또는 제한절이라고 부르며, 데이터베이스의 수많은 정보 중에 원하는 정보만 필터링하여 얻고자 할때 이용합니다. WHERE 절을 사용하면 정보를 정제하기 때문에 입출력 기능의 성능 향상을 기대할 수 있습니다.

 

특징을 요약하자면

  • 쿼리(질의)에서 반환되는 행을 제한할 수 있다
  • 반드시 from절 뒤에 사용해야 하며 조건이 참인 경우 만족하는 행을 반환한다.
  • 날짜와 문자는 작은따옴표('')로 묶어서 표현한다
  • WHERE 절은 생략 가능하다
  • 별칭으로는 (EX. MANAGER as '매니저') 조건 검색을 할 수 없음

정도로 요약할 수 있으며 예시 문제를 풀어보겠습니다.


문제풀이

사원 정보(Employees) 테이블에서 급여가 7,000~15,000 범위 이내인 사람의 성과 이름 및 급여를 급여가 큰 순서대로 출력하시오,.

ORDER BY에 ASC를 사용한다면 오름차순으로 표현되며 본문처럼 DESC를 사용한다면 내림차순으로 출력됩니다.

오름차순 == 작은 값부터 큰 값 쪽으로의 순서대로 출력 ex) 1, 2, 3, 4, 5

내림차순 == 큰 값부터 작은 값 쪽으로의 순서대로 출력 ex) 5, 4, 3, 2, 1

 

사원의 이름(last_name) 중에 'e'와 'o' 글자가 포함된 사원을 출력하시오. ( 동시에 포함된 것입니다. )

여기서 LIKE 가 나오게 되는데요

LIKE의 역할은 "컬럼에 들어가 있는 값들 중 특정 문자가 포함되어 있는 값을 조회하고자 할 경우 사용한다"입니다.

LIKE의 예제로는 대표적인 기호가 %가 있는데요

  • .com으로 끝나는 문자열을 찾고 싶다 == '%.com'
  • A를 포함하는 문자열을 찾고 싶다 == '%A%'

또한 '_' (언더바) 구문도 사용합니다. 한자리만 임의의 문자를 허용한다는 의미를 가지고 있는데요 

  • 'AB_'는 AB로 시작하면서 뒤에 아무 문자가 와도 상관없는 값을 추출하라는 의미입니다.

 

수당을 받는 모든 사원의 성과 이름, 급여, 업무, 수당률을 출력하시오.

급여가 많은 순서대로 정렬하되, 급여가 같으면 수당률이 큰 순서대로 정렬하시오.

수당(COMMISSION_PCT)이 null인 값을 보고 싶지 않으시다면 WHERE절에서 is not null을 통해 지워주시면 됩니다.

또한 SALARY DESC, COMMISSION_PCT DESC를 통해 순서를 정하고 내림차순으로 설정해 주었습니다. 감사합니다.