[DATABASE] SELECT 의 WHERE 절이란? 비교 연산자, SQL 연산자, 논리 연산자란?
WHERE 조건절의 개요
자료를 검색할 때 SELECT 절과 FROM 절만을 사용하여 기본적인 SQL 문장을 구성한다면, 테이블에 있는 모든 자료가 출력되기 때문에
실제로 원하는 자료를 확인하기 어렵습니다.
따라서 WHERE 절을 사용하여 원하는 자료들로 결과를 제한할 수 있습니다.
SELECT [DISTINCT/ALL] 컬럼명 [ALIAS명] FROM 테이블명 WHERE 조건식;
WHERE 절은 FROM 절 다음에 위치하며, 조건식은 아래 내용으로 구성됩니다.
1. 컬럼명 ( 보통 조건식의 좌측에 위치 )
2. 비교 연산자
3. 문자, 숫자, 표현식 ( 보통 조건식의 우측에 위치 )
4. 비교 컬럼명 ( JOIN 사용 시)
연산자의 종류
WHERE 절에 조건식을 사용할 때, 사용되는 연산자 입니다.
구분 |
연산자 |
의미 |
비교 연산자 |
= |
같다. |
|
> |
보다 크다. |
|
>= |
크거나 같다. |
|
< |
보다 작다. |
|
<= |
작거나 같다. |
SQL 연산자 |
BETWEEN a AND b |
a 와 b 의 값 사이에 있으면 된다. (a 와 b 값이 포함) |
|
IN (list) |
리스트에 있는 값 중에서 어느 하나라도 일치하면 된다. |
|
LIKE '비교문자열' |
비교문자열과 형태가 일치하면 된다. (%, _ 사용) |
|
IS NULL |
NULL 값인 경우 |
논리 연산자 | AND | 앞의 조건과 뒤의 조건을 동시에 만족해야 한다. |
OR | 앞 뒤 조건 중 하나만 만족하면 된다. | |
NOT | 뒤에 오는 조건에 반대되는 결과를 되돌려 준다. | |
부정 비교 연산자 | != | 같지 않다. |
^= | 같지 않다. | |
<> | 같지 않다. | |
NOT 칼럼명 = | ~와 같지 않다. | |
NOT 칼럼명 > | ~보다 크지 않다. | |
부정 SQL 연산자 | NOT BETWEEN a AND b | a 와 b 의 값 사이에 있지 않다. (a 와 b 값을 포함하지 않음) |
NOT IN (list) | list 값과 일치하지 않는다. | |
IS NOT NULL | NULL 값을 갖지 않는다. |
연산자의 우선순위
1. 괄호 ( )
2. NOT 연산자
3. 비교 연산자, SQL 비교 연산자
4. AND
5. OR
비교 연산자 ( 부정 비교 연산자 )
문자 유형간의 비교 조건이 발생하는 경우 처리 방법입니다.
1. 비교 연산자의 양쪽이 모두 CHAR 타입인 경우
- 길이가 서로 다른 CHAR 형 타입이면 작은 쪽에 SPACE 를 추가하여 길이를 같게 한 후에 비교합니다.
- 서로 다른 문자가 나올 때까지 비교합니다.
- 달라진 첫 번째 문자의 값에 따라 크기를 결정합니다.
- BLANK 의 수만 다르다면 서로 같은 값으로 결정합니다.
2. 비교 연산자의 한쪽이 CHAR, 한쪽이 VARCHAR 타입인 경우
- 서로 다른 문자가 나올 때까지 비교합니다.
- 길이가 다르다면 짧은 것이 끝날 때까지만 비교한 후에 길이가 긴 것이 크다고 판단합니다.
- 길이가 같고 다른 것이 없다면 같다고 판단합니다.
- VARCHAR 는 NOT NULL 까지 길이를 말합니다.
3. 상수값과 비교하는 경우
- 상수 쪽을 변수 타입과 동일하게 바꾸고 비교합니다.
- 변수 쪽이 CHAR 유형 타입이면 위의 CHAR 유형 타입의 경우를 적용합니다.
- 변수 쪽이 VARCHAR 유형 타입이면 위의 VARCHAR 유형 타입의 경우를 적용합니다.
SQL 연산자 ( 부정 SQL 연산자 )
LIKE 비교문자열에서 % 와 _ 의 의미입니다.
1. % : 0 개 이상의 어떤 문자를 의미
2. _ : 1개인 단일 문자를 의미
IS NULL 연산 특성입니다.
1. NULL 값과의 수치연산은 NULL 값을 리턴한다.
- NULL 값과의 비교연산은 거짓(FALSE)를 리턴한다.
- 어떤 값과 비교할 수 없으며, 특정 값보다 크다, 적다라고 표현할 수 없습니다.
ROWNUM, TOP 의 사용
ROWNUM
ORACLE, GOLDILOCKS 에서 지원되는 Pseudo Column 으로써 SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호입니다.
테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용합니다.
SELECT [DISTINCT/ALL] 컬럼명 [ALIAS명] FROM 테이블명 WHERE ROWNUM <= 3;
TOP
MS-SQL 은 TOP 절을 사용하여 결과 집합으로 출력되는 행의 수를 제한할 수 있습니다.
TOP 절의 표현식은 다음과 같습니다.
TOP (Expression) [PERCENT] [WITH TIES]
1. Expression : 반환할 행의 수를 지정하는 숫자입니다.
2. PERCENT : 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨을 나타냅니다.
3. WITH TIES : ORDER BY 절이 지정된 경우에만 사용할 수 있으며, TOP N(PERCENT)의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정할 수 있습니다.
SELECT TOP(3) 컬럼명 FROM 테이블명;
이 내용은 'SQL 전문가 가이드, 한국데이터베이스 진흥원' 에서 공부한 내용입니다.