1. WHERE 조건절 개요
더보기
SELECT [DISTINCT/ALL]
칼럼명 [AS ALIAS명]
FROM 테이블명
WHERE 조건식;
WHERE 절은 FROM 절 다음에 위치하며, 조건식은 아래 내용으로 구성된다.
- 칼럼명(보통 조건식의 좌측에 위치)
- 비교 연산자
- 문자, 숫자, 표현식(보통 조건식의 우측에 위치한다)
- 비교 칼럼명(JOIN 사용 시)
2. 연산자의 종류
WHERE 절에 사용되는 연산자는 비교 연산자, SQL 연산자, 논리 연산자 총 3가지 종류가 있다.
구분 | 연산자 | 연산자의 의미 |
비교 연산자 |
=, >, >=, <, <= | 같다, 보다 크다, 보다 크거나 같다, 보다 작다, 보다 작거나 같다. |
SQK 연산자 |
BETWEEN a AND b | a와 b값 사이의 값을 갖는다. |
IN (list) | 리스트에 있는 값 중, 어느 하나라도 일치한다. | |
LIKE '비교문자열' | 비교문자열과 형태가 일치한다. 이때 %, _를 주로 사용한다. | |
IS NULL | NULL 값을 가진다 | |
논리 연산자 |
AND | 앞의 조건과 뒤의 조건을 동시에 만족한다. |
OR | 앞의 조건 또는 뒤의 조건 중 하나를 만족한다. | |
NOT | 뒤에 오는 조건에 반대되는 결과를 되돌려준다. | |
부정 비교 연산자 |
!=, ^=, <> | 같지 않다. 여기서 <>는 ISO 표준, 모든 운영체제에서 사용 가능하다. |
연산자의 우선순위는 아래와 같다.
1. 괄호 ()
2. 비교 연산자, SQL 연산자
3. NOT 연산자
4. AND
5. OR
3. 문자 유형 비교
문자 유형 간 비교 조건이 발생하는 경우에는, 아래와 같이 처리한다.
구분 | 비교 방법 |
비교 연산자의 양쪽이 모두 CHAR 유형 타입인 경우 |
길이가 서로 다른 CHAR형 타입이면, 작은 쪽에 스페이슬르 추가해 길이를 같게 한 후 비교 |
서로 다른 문자가 나올 때까지 비교한다. | |
달라진 첫 번째 문자의 값에 따라 크기를 결정한다. | |
문자 끝 블랭크(공백) 수만 다르다면 서로 같은 값으로 결정한다. | |
비교 연산자의 어느 한 쪽이 VARCHAR 유형 타입인 경우 |
서로 다른 문자가 나올 때까지 비교한다. |
길이가 다르다면 짧은 것이 끝날 때까지만 비교, 길이가 긴 것이 크다고 판단한다. | |
길이가 같고 다른 것이 없다면 같다고 판단한다. | |
VARCHAR는 NOT NULL까지 길이를말한다. 즉, 문자 끝 공백도 문자로 취급한다. | |
상수값과 비교할 경우 |
상수 쪽을 변수 타입과 동일하게 바꾸고 비교한다 |
변수 쪽이 CHAR 유형이라면, 위의 CHAR 유형 타입의 경우를 적용한다. | |
변수 쪽이 VARCHAR 유형이라면, 위의 VARCHAR 유형 타입의 경우를 적용한다. |
4. SQL 연산자
- LIKE 연산자의 '비교문자열'에 와일드카드(%, _)를 넣을 수도 있고, 안넣을 수도 있다. 와일드 카드 내용은 아래와 같다.
- %: 0개 이상의 어떤 문자를 의미한다. -> 복수
- _: 1개의 단일 문자를 의미한다. -> 단수
- NULL을 고려할 때, 'A = NULL'같이 비교 연산자를 적용할 수 없다. 반드시 'IS NULL'이나 'IS NOT NULL'처럼 SQL 연산자를 사용해야 한다.
'SQLD' 카테고리의 다른 글
2-1-6. ORDER BY 절 (1) | 2022.09.20 |
---|---|
2-1-5. GROUP BY, HAVING 절 (0) | 2022.09.20 |
2-1-3. 함수 (0) | 2022.09.20 |
2-1-2. SELECT 문 (0) | 2022.09.20 |
2-1-1. 관계형 데이터베이스 개요 (0) | 2022.09.20 |