상위 목록: 하위 목록: 작성 날짜: 읽는 데 22 분 소요

조건절(WHERE)

테이블(Table)에서 특정 조건을 만족하는 데이터를 추출할 때는 조건절(WHERE)을 활용하여 데이터의 범위를 제한합니다.

조건절을 활용하지 않고 데이터를 추출한다면 전체 데이터를 대상으로 처리하므로 오랜 시간이 소요되고, 원하는 데이터를 추출할 수 없습니다.

그러므로 조건절을 통해 활용 목적에 부합하는 데이터를 추출할 수 있습니다.



비교 연산자

SELECT 
    *
FROM
    `covid`.`variants`
WHERE
    `num_sequences` <= 5;

비교 연산자를 적용하는 방법은 SELECT {열의 이름} FROM `{데이터베이스의 이름}`.`{테이블의 이름}` WHERE {조건};의 구조로 명령어를 실행합니다.

위와 같은 조건으로 명령어를 실행한다면, num_sequences5 이하의 값을 가지는 값을 모두 조회합니다.

비교 연산자의 종류는 다음과 같습니다.


연산자 의미 비고
= 같음  
!= 같지 않음  
<> 같지 않음 ISO 표준
> 초과(크다)  
>= 이상(같거나 크다)  
< 미만(작다)  
<= 이하(같거나 작다)  



논리 연산자

SELECT 
    *
FROM
    `covid`.`variants`
WHERE
    `num_sequences` != 5
AND `location` = 'Angola';

논리 연산자는 조건과 조건을 결합하는 용도로 사용됩니다.

논리 연산자를 적용하는 방법은 SELECT {열의 이름} FROM `{데이터베이스의 이름}`.`{테이블의 이름}` WHERE {조건} {논리 연산자} {조건};의 구조로 명령어를 실행합니다.

위와 같은 조건으로 명령어를 실행한다면, num_sequences5 이하의 값을 가지며, locationAngola인 값을 모두 조회합니다.


SELECT 
    *
FROM
    `covid`.`variants`
WHERE
    `num_sequences` != 5
AND (`location` = 'Angola' OR `location` = 'Argentina');

더 다양한 조건을 연결할 때에는 소괄호()를 활용하여 적용합니다.

소괄호의 유/무에 따라서 결과가 달라집니다.

위와 같은 조건으로 명령어를 실행한다면, num_sequences5 이하의 값을 가지며, locationAngola이거나 Argentina인 값을 모두 조회합니다.

논리 연산자의 종류는 다음과 같습니다.


연산자 의미 비고
AND 앞에 있는 조건과 뒤에 있는 조건이 모두 참 값  
OR 앞에 있는 조건이나 뒤에 있는 조건 중 하나라도 참 값  
NOT 뒤에 있는 조건의 결과를 반대로 변경 참 값일 경우, 거짓 값으로 변경



범위 연산자

SELECT 
    *
FROM
    `covid`.`variants`
WHERE
    `date` BETWEEN DATE('2020-05-10') AND DATE('2020-05-11');

A와 B 사이의 범위를 갖는 값을 조회할 때는 범위 연산자를 활용합니다.

{열의 이름} 조건 A AND 조건 B의 구조로 명령어를 실행합니다.

위와 같은 조건으로 명령어를 실행한다면, date2020-05-10에서 2020-05-11 사이의 값을 모두 조회합니다.

범위 연산자는 다음과 같습니다.


연산자 의미 비고
A BETWEEN B A와 B 사이의 값 A와 B를 모두 포함
A <= Value <= B



집합 연산자

SELECT 
    *
FROM
    `covid`.`variants`
WHERE
    `location` IN ('Angola', 'Argentina');

집합 연산자는 목록 안에 있는 값에 부합하는 데이터를 조회할 때 활용합니다.

{열의 이름} IN (A, B, C, ...)의 구조로 명령어를 실행합니다.

위와 같은 조건으로 명령어를 실행한다면, locationAngola이거나 Argentina인 값을 모두 조회합니다.

집합 연산자는 다음과 같습니다.


연산자 의미 비고
IN (A, B, C …) 범위 내의 값을 하나라도 만족 A OR B OR C …



속성 확인 연산자

SELECT 
    *
FROM
    `covid`.`variants`
WHERE
    `location` IS NULL
AND `variant` IS NOT NULL;

속성 확인 연산자는 열의 속성이 NULL 값을 지니는 데이터를 조회할 때 활용합니다.

{열의 이름} IS {NOT} NULL의 구조로 명령어를 실행합니다.

위와 같은 조건으로 명령어를 실행한다면, locationNULL 값 이면서, variantNULL 값이 아닌 데이터를 모두 조회합니다.

속성 확인 연산자의 종류는 다음과 같습니다.


연산자 의미 비고
IS NULL NULL 값을 갖는 데이터  
IS NOT NULL NULL 값을 갖지 않는 데이터  



패턴 연산자

SELECT 
    *
FROM
    `covid`.`variants`
WHERE
    `location` LIKE '%r%'
OR 	`location` LIKE 'A%';
OR 	`location` LIKE '_n%';

패턴 연산자는 패턴 문자열 안에 있는 값에 부합하는 데이터를 조회할 때 활용합니다.

{열의 이름} LIKE '{패턴 문자열}'의 구조로 명령어를 실행합니다.

위와 같은 조건으로 명령어를 실행한다면, location이 글자가 r이 들어가거나, A로 시작하거나, 두 번째 글자가 n으로 시작해야 합니다.

패턴 문자열은 %_가 존재합니다.

%는 모든 문자열을 의미하며, %r%r 앞 뒤로 어떤 문자가 와도 상관이 없다는 의미가 되어, 문자열 중 r이 포함되어 있는 경우 참이 됩니다.

그러므로, A%A 문자열의 모든 문자가 되어 A로 시작하는 문자열이 됩니다.

_는 하나의 문자를 의미하며, _nn 앞에 하나의 문자만 허용하여 An, cn, 3n 등의 문자 구조만 가능합니다.

만약, _n%로 사용한다면, n 앞에 하나의 문자만 허용하고 n 뒤에 모든 문자를 허용하여 India, Indonesia 등의 문자가 올 수 있습니다.

패턴 연산자는 다음과 같습니다.


연산자 의미 비고
LIKE ‘패턴 문자열’ 패턴 문자열을 만족하는 값  
_ 한 글자  
% 모든 문자  



연산자 우선 순위

다양한 연산자를 조합하여 사용할 경우, 우선시 되어 계산되는 연산자 순위가 있습니다.

즉, 쿼리의 순서보다 연산자 우선 순위가 높은 연산자 부터 계산됩니다.

연산자의 순위는 다음과 같습니다.

순위 연산자 비고
1 소괄호  
2 비교 연산자  
3 집합 연산자, 속성 확인 연산자, 패턴 연산자  
4 범위 연산자  
5 NOT 연산자  
6 AND 연산자  
7 OR 연산자  

댓글 남기기