WHERE
WHERE 절
- 두 개 이상의 테이블에 대한 Join 조건을 기술하거나 결과를 제한하기 위한 조건을 기술 할 때.
SELECT 칼럼명 FROM 테이블명 WHERE 조건식; |
- WHERE 절은 FROM 절 다음에 위치한다.
- Column명은 보통 조건식의 좌측에 위치한다.
- 비연산자
- 문자, 숫자, 표현식 (보통 조건식의 우측에 위치)
- 비교 칼럼명(Join 사용 시)
연산자 종류
비교연산자나 논리 연산자는 아실거라고 생각하고 이 2개는 빼고 서술하겠습니다.
연산자의 종류
구분 |
연산자 |
연산자 의미 |
SQL 연산자 |
Between A and B |
A와 B의 값 사이에 있으면 된다. (A와 B값 포함) |
IN (list) |
List에 있는 값 중에서 어느 하나라도 일치하면 된다. |
|
Like '문자열' |
문자열과 형태가 일치하면 된다. (%, _ 사용) |
|
IS NULL |
NULL 값인 경우 |
|
부정 비교 연산자 |
!= |
같지 않다. |
^= |
같지 않다. |
|
<> |
같지 않다.(ISO 표준, 모든 운영체제에서 사용 가능) |
|
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 |
비교 연산자
문자 유형 비교 방법
구분 |
비교 방법 |
비교 연산자의 양쪽이 모두 CHAR 유형 타입인 경우 |
길이가 서로 다른 CHAR형 타입이면 작은 쪽에 SPACE를 추가하여 길이를 같게 한 후에 비교한다. |
서로 다른 문자가 나올 때까지 비교한다. |
|
달라진 첫 번째 문자의 값에 따라 크기를 결정한다. |
|
BLACK의 수만 다르다면 서로 같은 값으로 결정한다. |
|
비교 연산자의 어느 한 쪽이 VARCHAR 유형 타입인 경우 |
서로 다른 문자가 나올 때까지만 비교한다. |
길이가 다르다면 짧은 것이 끝날 때까지만 비교한 후에 길이가 긴 것이 크다고 판단한다. |
|
길이가 같고 다른 것이 없다면 같다고 판단한다. |
|
VARCHAR는 NOT NULL까지 길이를 말한다. |
|
상수 값과 비교할 경우 |
상수 쪽을 변수 타입과 동일하게 바꾸고 비교한다. |
변수 쪽이 CHAR 유형 타입이면 위의 CHAR유형 타입의 경우를 적용한다. |
|
변수 쪽이 VARCHAR 유형의 타입이면 위의 VARCHAR 유형 타입의 경우를 적용한다. |
SQL연산자 예제
예제(IN사용하기.)
소속팀 코드가 K02이거나 K03인 선수들을 구하라. |
select player_name as 선수이름, position 포지션, back_no 백넘버, height 키 from player where team_id in('K02','K03'); |
|
예제(Like연산자 사용하기)
"장"씨 성을 가진 선수들의 이름을 출력하시오. |
select player_name as 선수이름, position 포지션, back_no 백넘버, height 키 from player where player_name LIKE '장%'; |
LIKE관련 사용 정의
% |
0개 이상의 어떤 문자를 의미한다. Ex) LIKE "장%" -> "장"으로 시작하는 문자열 (문자열 길이는 상관 없다.) |
_ |
1개의 단일 문자를 의미한다. Ex) LIKE"장_" -> "장"으로 시작하는 문자열("장"을 포함한 2글자) |
IS NULL연산자
* NULL은 값이 존재하지 않는 것으로 확정되지 않은 값을 표현할 때 사용한다. 따라서 어떤 값보다 크거나 작지도 않고 공백이나 0과 달리 비교 자체가 불가능한 값이다.
- NULL값과의 수치연산은 NULL 값을 리턴한다.
- NULL값과의 비교연산은 거짓(FALSE)을 리턴한다.
- 어떤 값과 비교할 수도 없으며, 특정 값보다 크다, 적다라고 표현할 수 없다.
- NULL값의 비교 연산은 IS NULL,IS NOT NULL 이라는 정해진 문구를 사용해야 결과를 얻을 수 있다.
'IT > SQLD(SQL개발자)' 카테고리의 다른 글
[SQLD] GRORP BY, HAVING 절 (0) | 2019.06.29 |
---|---|
[SQLD] 함수(Function) (0) | 2019.06.28 |
[SQLD] TCL (Transaction Control Language) (1) | 2019.06.26 |
[SQLD] DML(Data Manipulation Language) (0) | 2019.06.24 |
[SQLD] DDL(Data Definition Language) (0) | 2019.06.23 |