스크립트는 <SQL in 10 Minutes(5th Edition)>(벤 포터 著, 인사이트) 에서 제공하는 것을 사용하였고, DBMS는 Oracle에서 제공하는 연습용 사이트, Oracle Live SQL(https://livesql.oracle.com) 을 사용하였습니다.
데이터베이스 테이블에서 데이터를 가져올 때, 조건에 맞는 행을 가져오는 경우가 많다.
조건을 지정하기 위해서는 WHERE
절을 사용한다.
WHERE
절은 FROM
바로 다음에 적는다.
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49
익히 알법한 것을 제외하고 서술하겠다.
연산자 | 설명 |
---|---|
<> 또는 != | 같지 않다 |
!< | ~보다 작지 않다 |
!> | ~보다 크지 않다 |
BETWEEN n AND m | n과 m 사이의 값 |
IS NULL | 값이 NULL이다 |
WHERE
절에는 AND
나 OR
를 사용하여 조건을 여러개 지정할 수 있다.
AND
: 연결된 조건들을 모두 만족하는 조건으로 필터링
OR
: 연결된 조건들 중 하나 이상 만족하는 조건으로 필터링
AND
는 OR
보다 우선순위가 높기 때문에 두 연산자를 모두 사용하여 필터링할 경우, 괄호( )를 사용하여 먼저 필터링할 연산자를 정하는 것이 좋다.
조건 범위를 지정할 때 사용한다. OR
연산자와 같은 역할을 수행한다.
즉, 아래 두 문장은 같은 문장이다.
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01');
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';
IN
연산자의 장점
- 조건이 많을 때
OR
보다 깔끔하고 읽기 편하다.OR
보다 목록 처리 속도가 빠르다.AND
나OR
과 함께 사용할 때 우선순위 관리가 편하다.
WHERE
절의 조건을 역으로 만든다.
반드시 다른 연산자와 함께 사용해야 한다. (단독 사용 X)
필터링하려는 열 앞에 적는다.
<>
연산자와 같은 역할이다.
SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'; -- 조건 : "vend_id가 DLL01이 아닌"
SELECT prod_name
FROM Products
WHERE vend_id <> 'DLL01';