MySQL 강좌 : 제 8강 - 조건절
조건절(WHERE)

테이블(Table)에서 특정 조건을 만족하는 데이터를 추출할 때는 조건절(WHERE)을 활용하여 데이터의 범위를 제한합니다.
조건절을 활용하지 않고 데이터를 추출한다면 전체 데이터를 대상으로 처리하므로 오랜 시간이 소요되고, 원하는 데이터를 추출할 수 없습니다.
그러므로 조건절을 통해 활용 목적에 부합하는 데이터를 추출할 수 있습니다.
비교 연산자
SELECT
*
FROM
`covid`.`variants`
WHERE
`num_sequences` <= 5;비교 연산자를 적용하는 방법은 SELECT {열의 이름} FROM `{데이터베이스의 이름}`.`{테이블의 이름}` WHERE {조건};의 구조로 명령어를 실행합니다.
위와 같은 조건으로 명령어를 실행한다면, num_sequences이 5 이하의 값을 가지는 값을 모두 조회합니다.
비교 연산자의 종류는 다음과 같습니다.
| 연산자 | 의미 | 비고 |
|---|---|---|
| = | 같음 | |
| != | 같지 않음 | |
| <> | 같지 않음 | ISO 표준 |
| > | 초과(크다) | |
| >= | 이상(같거나 크다) | |
| < | 미만(작다) | |
| <= | 이하(같거나 작다) |
논리 연산자
SELECT
*
FROM
`covid`.`variants`
WHERE
`num_sequences` != 5
AND `location` = 'Angola';논리 연산자는 조건과 조건을 결합하는 용도로 사용됩니다.
논리 연산자를 적용하는 방법은 SELECT {열의 이름} FROM `{데이터베이스의 이름}`.`{테이블의 이름}` WHERE {조건} {논리 연산자} {조건};의 구조로 명령어를 실행합니다.
위와 같은 조건으로 명령어를 실행한다면, num_sequences이 5 이하의 값을 가지며, location이 Angola인 값을 모두 조회합니다.
SELECT
*
FROM
`covid`.`variants`
WHERE
`num_sequences` != 5
AND (`location` = 'Angola' OR `location` = 'Argentina');더 다양한 조건을 연결할 때에는 소괄호()를 활용하여 적용합니다.
소괄호의 유/무에 따라서 결과가 달라집니다.
위와 같은 조건으로 명령어를 실행한다면, num_sequences이 5 이하의 값을 가지며, location이 Angola이거나 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의 구조로 명령어를 실행합니다.
위와 같은 조건으로 명령어를 실행한다면, date가 2020-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, ...)의 구조로 명령어를 실행합니다.
위와 같은 조건으로 명령어를 실행한다면, location이 Angola이거나 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의 구조로 명령어를 실행합니다.
위와 같은 조건으로 명령어를 실행한다면, location이 NULL 값 이면서, variant이 NULL 값이 아닌 데이터를 모두 조회합니다.
속성 확인 연산자의 종류는 다음과 같습니다.
| 연산자 | 의미 | 비고 |
|---|---|---|
| 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로 시작하는 문자열이 됩니다.
_는 하나의 문자를 의미하며, _n는 n 앞에 하나의 문자만 허용하여 An, cn, 3n 등의 문자 구조만 가능합니다.
만약, _n%로 사용한다면, n 앞에 하나의 문자만 허용하고 n 뒤에 모든 문자를 허용하여 India, Indonesia 등의 문자가 올 수 있습니다.
패턴 연산자는 다음과 같습니다.
| 연산자 | 의미 | 비고 |
|---|---|---|
| LIKE ‘패턴 문자열’ | 패턴 문자열을 만족하는 값 | |
| _ | 한 글자 | |
| % | 모든 문자 |
연산자 우선 순위
다양한 연산자를 조합하여 사용할 경우, 우선시 되어 계산되는 연산자 순위가 있습니다.
즉, 쿼리의 순서보다 연산자 우선 순위가 높은 연산자 부터 계산됩니다.
연산자의 순위는 다음과 같습니다.
| 순위 | 연산자 | 비고 |
|---|---|---|
| 1 | 소괄호 | |
| 2 | 비교 연산자 | |
| 3 | 집합 연산자, 속성 확인 연산자, 패턴 연산자 | |
| 4 | 범위 연산자 | |
| 5 | NOT 연산자 | |
| 6 | AND 연산자 | |
| 7 | OR 연산자 |
공유하기
Kakao
Naver
Twitter
LinkedIn
Facebook
댓글 남기기