2.1.5 WHERE 절

YJ·2022년 8월 29일

2.1.5 WHERE 절

WHERE 조건절 개요

SELECT [DISTINCT/ALL] 칼럼명 [ALIAS명]
FROM 테이블명;
WHERE 조건식;

연산자의 종류

  • 비교 연산자
  • SQL 연산자
  • 논리 연산자
BETWEEN a AND b
IN (list)
LIKE '비교문자열'
IS NULL
  • 위 SQL문은 SQL 연산자임.


비교연산자


SQL 연산자

IN 연산자

  • 리스트에 있는 값 중에서 어느 하나라도 일치하면 된다.
SELECT ENAME, JOB, DEPTNO
FROM EMP
WHERE (JOB, DEPTNO) IN (('MANAGER', 20), ('CLERK', 30));

LIKE 연산자

  • LIKE '비교문자열'
    • 비교문자열과 형태가 일치하면 된다.
SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE PLAYER_NAME LIKE '장%';
  • '장'씨 성을 가진 선수들의 정보를 조회하는 WHERE 절

BETWEEN a AND b 연산자

  • a와 b 값 사이에 있으면 된다(a, b의 값이 포함됨)
SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE HEIGHT BETWEEN 170 AND 180;

IS NULL 연산자

  • NULL 값인 경우
SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE POSITION IS NULL;

논리연산자

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE TEAM_ID = 'K02' OR TEAM_ID = 'K07'
AND POSITION = 'MF'
AND HEIGHT >= 170
AND HEIGHT <=180;

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE (TEAM_ID = 'K02' OR TEAM_ID = 'K07')
AND POSITION = 'MF'
AND HEIGHT >= 170
AND HEIGHT <=180;
  • K02, K07 소속 선수 중 키가 170센티미터 이상인 조건을 가진 선수들의 자료를 조회
  • 아래 쿼리가 조건에 맞게 올바르게 수정한 예임. WHERE 절에 ()문 추가한 부분
    • 위 쿼리처럼 처리할 경우, OR 보다 AND가 먼저 처리가 되어서 포지션이 MF가 아닌 결과값들이 나올 가능성 존재

부정 연산자

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE TEAM_ID = 'K02'
AND NOT POSITION = 'MF'
AND NOT HEIGHT BETWEEN 175 AND 185;

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM PLAYER
WHERE TEAM_ID = 'K02'
AND POSITION <> 'MF' 
AND NOT HEIGHT BETWEEN 175 AND 185;
  • KO2 소속 선수 중 포지션이 미드필더가 아니고 키가 175센티미터이상, 185센티미터 이하가 아닌 선수들의 자료를 찾고자 할 때 다음과 같이 SQL 구문을 작성
  • <>

ROWNUM, TOP 사용

Oracle의 ROWNUM

SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1;
SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= 1;
SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM < 2;

SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N;
SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM < N+1; (출력되는 행의 한계를 지정)

SQL Server의 TOP

SELECT TOP(1) PLAYER_NAME FROM PLAYER;
SELECT TOP(N) PLAYER_NAME FROM PLAYER;
  • SQL 문장에서 ORDER BY 절이 사용되지 않으면 ROWNUM과 SQL Server의 TOP절은 같은 기능을 함.
  • 그러나 같이 사용될 경우 기능의 차이가 발생된다. (TOP 절이 기능이 더 좋음)
profile
💻귀찮으니 필요할 때만 쓰는 Computer Vision 일지 ㅇㅇ💻

0개의 댓글