5. WHERE 절
- 사용자들은 자신이 원하는 자료만을 검색하기 위해서 SQL 문장에 WHERE 절을 이용하여 자료들에 대하여 제한
- WHERE 절에 조건이 없는 FTS(Full Table Scan) 문장은 SQL 튜닝의 1차적인 검토 대상이 된다.
(FTS가 무조건 나쁜 것은 아니며 병렬 처리 등을 이용해 유용하게 사용하는 경우도 많다.)
연산자의 종류
소속팀이 삼성블루윙즈이거나 전남드래곤즈에 소속된 선수들이어야 하고, 포지션이 미드필더(MF:Midfielder)이어야 한다. 키는 170 센티미터 이상이고 180 이하여야 한다.
잘못된 쿼리
SELECT PLAYER_NAME 선수이름, POSITION 포지션,
WHERE TEAM_ID = 'K02' OR TEAM_ID = 'K07'
AND HEIGHT >= 170 AND HEIGHT <= 180;
(괄호가 누락됨으로서 OR 논리 연산자보다 AND 논리 연산자를 먼저 실행)
SELECT PLAYER_NAME 선수이름, POSITION 포지션,
WHERE (TEAM_ID = 'K02' OR TEAM_ID = 'K07')
AND HEIGHT >= 170 AND HEIGHT <= 180;
예제에서 “소속팀 코드가 삼성블루윙즈(K02) 이거나 전남드래곤즈(K07)”라는 조건을 만족하고 “포지션이 미드필더(MF)”인 조건을 동시에 만족해야 하는데, 위의 SQL 문장에서는 괄호가 누락됨으로서 OR 논리 연산자보다 AND 논리 연산자를 먼저 실행하기 때문에 잘못된 결과를 나타낸 것이다.
논리 연산자 처리 우선순위
- ( )
- NOT
- AND
- OR
ROWNUM, TOP 사용
WHERE 절에서 행의 개수를 제한하는 목적으로 사용한다.
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1;
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= 1;
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <2;
두 건 이상의 N 행을 가져오고 싶을 때는 ROWNUM = N; 처럼 사용할 수 없으며
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N;
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM
추가적인 ROWNUM의 용도로는 테이블 내의 고유한 키나 인덱스 값을 만들 수 있다.
- UPDATE MY_TABLE SET COLUMN1 = ROWNUM;
(2) TOP
결과 집합으로 출력되는 행의 수를 제한할 수 있다.
TOP (Expression) / PERCENT/ WITH TIES
- Expression : 반환할 행의 수를 지정하는 숫자이다.
- PERCENT : 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨을 나타낸다.
- SELECT TOP(1) PLAYER_NAME FROM PLAYER;
- SELECT TOP(N) PLAYER_NAME FROM PLAYER;
✅ REFERENCE
'# 4. 자격증 > SQLD' 카테고리의 다른 글
SQLD 자격증 # SQL 기본(과목2)_GROUP BY HAVING 절 (0) | 2021.11.11 |
---|---|
SQLD 자격증 # SQL 기본(과목2)_함수 (0) | 2021.11.11 |
SQLD 자격증 # SQL 기본(과목2)_TCL (0) | 2021.11.11 |
SQLD 자격증 # SQL 기본(과목2)_DML (0) | 2021.11.11 |
SQLD 자격증 # SQL 기본(과목2)_DDL (0) | 2021.11.11 |