20220214_SQL 기초 4 (ANY=SOME과 ALL, ORDER BY와 ASC/DESC, limit)
2022. 2. 17.ㆍ카테고리 없음
728x90
WHERE 절 안에서 ANY / SOME 구문을 사용하면
모든 데이터에 대해 OR 처리가 된다.
아래의 이중 쿼리에서 내부에 있는 중첩 쿼리의 결과값이 171, 160, 170가 출력된다면,
ANY 키워드를 이용하여 OR 처리할 수 있다.
SELECT height FROM userTbl WHERE height < ANY (SELECT height FROM userTbl WHERE addr='서울');
(height < 171) OR (height < 160) OR (height < 170)
ANY는 OR로 연결된다는 특성상 범위가 가장 넓은 조건 하나로 통일되는데(조건 하나만 만족하면 되므로), 여기서는 height < 171가 가장 넓은 범위를 가지고 있으므로 ANY를 사용한 해당 쿼리문은 171보다 작은 데이터를 출력하게 된다. 여기서 ANY 자리에 SOME을 써도 결과값은 같다.
ALL 구문을 사용하면 개별값 모든 데이터가
AND로 처리가 된다.
아래의 이중 쿼리에서 내부의 중첩 쿼리 결과값이 171, 160, 170이라면,
ALL 키워드를 이용하여 AND처리할 수 있다.
SELECT * FROM userTbl WHERE height < ALL (SELECT height FROM userTbl WHERE addr='서울');
(height < 171) AND (height < 160) AND (height < 170)
ALL은 AND로 연결된다는 특성상 범위가 가장 좁은 조건 하나로 통일된다. (조건을 모두 만족해야 하므로) 여기서는 height < 160이 가장 좁은 범위를 가지고 있으므로 ALL을 사용한 해당 쿼리문은 160보다 작은 데이터를 출력하게 된다.
ORDER BY는 결과물의 개수나 종류에는 영향을 미치지 않지만 결과물을 순서대로(오름차순, 내림차순) 정렬하는 기능을 가진다. SELECT문으로 검색된 데이터는 ORDER BY를 이용하여 오름차순(ASC)이나 내림차순(DESC)로 정렬시킬 수 있으며 디폴트값은 ASC이므로 ORDER BY만 단독으로 쓰게 된다면 결과값이 오름차순으로 출력하게 된다.
- 오름차순 ASC
작은 값을 리스트 최상단으로 노출하여 아래로 갈수록 숫자가 커지게 정렬 - 디폴트
- 내림차순 DESC
큰 값을 리스트 최상단으로 노출하여 아래로 갈수록 숫자가 작아지게 정렬
아래 쿼리문에서는 ORDER BY 키워드를 사용하여 employees 테이블에서 hire_date값을 내림차순으로 정렬하되, row를 10개만 가져오도록 하였다.
SELECT * FROM employees ORDER BY hire_date DESC limit 10;
limit를 사용하면 데이터 조회 시 결과값을 제한할 수 있다.
limit 10 -> row 10개 조회
limit 20,30 -> 인덱스 20번(emp_no 상으로 21)부터 30개 row 조회 => 21~50까지 조회됨
limit 19,30 -> 인덱스 19번(emp_no 상으로 20)부터 30개의 row 조회 => 20~49까지 조회됨