MySQL WHERE 절: AND, OR, IN, NOT IN 쿼리 예
⚡ 스마트 요약
MySQL WHERE 절은 SELECT, UPDATE, DELETE 문에 정확한 조건을 적용하여 결과 집합에 도달하기 전에 행을 필터링합니다. AND, OR, IN, NOT IN 및 비교 연산자를 이해하면 초보자도 쿼리에 필요한 레코드를 정확하게 검색할 수 있습니다.
WHERE 절은 무엇입니까? MySQL?
WHERE 절 in MySQL 는 지정된 SQL 명령문에 영향을 받는 데이터 또는 행의 정확한 기준을 지정하는 데 사용되는 키워드입니다. WHERE 절은 INSERT, UPDATE, SELECT 및 DELETE와 같은 SQL 명령문과 함께 사용하여 레코드를 필터링하고 데이터에 대한 다양한 작업을 수행할 수 있습니다.
우리는 데이터베이스 이전 튜토리얼의 SELECT 문을 사용합니다. SELECT 문은 쿼리된 데이터베이스 테이블의 모든 결과를 반환했습니다.
하지만 때로는 특정 조건에 맞는 결과만 얻고 싶을 때가 있습니다. SQL의 WHERE 절은 이러한 상황에서 유용하게 사용되며, SQL에서도 동일하게 작동합니다. 삭제 또는 업데이트 쿼리 SELECT 쿼리에서와 마찬가지로.
WHERE 절 구문
WHERE 절의 기본 구문은 다음과 같습니다.
SELECT * FROM tableName WHERE condition;
여기를 클릭하십시오.
- "SELECT * FROM 테이블 이름" 표준입니다 SELECT 문
- "어디" 는 결과 집합을 제한하는 키워드입니다. "상태" 결과에 적용되는 필터입니다. 필터는 범위, 단일 값 또는 하위 쿼리일 수 있습니다.
회원 번호가 1인 회원의 세부 정보를 회원 테이블에서 가져오고 싶다고 가정해 보겠습니다. 아래 스크립트는 이를 수행합니다.
SELECT * FROM `members` WHERE `membership_number` = 1;
이 스크립트를 실행하면 MySQL 워크 벤치 "myflixdb"에서 검색하면 아래와 같은 결과가 나옵니다.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
단 하나의 조건만으로는 충분하지 않은 경우가 많습니다. 아래 섹션은 WHERE와 결합됩니다. 논리 연산자.
WHERE 절은 다음과 결합됩니다 – 및 논리적 Opera바위 산
AND 논리 연산자를 사용하면 지정된 모든 조건이 충족될 경우에만 행이 반환됩니다.
2008년에 개봉한 카테고리 2에 속하는 모든 영화를 찾고 싶다고 가정해 보겠습니다. 아래 스크립트는 이를 수행합니다.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
위 스크립트를 "myflixdb"에 대해 실행하면 다음과 같은 결과가 나타납니다.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
AND는 결과 집합을 좁히고, OR는 결과 집합을 넓힙니다.
WHERE 절은 다음과 결합됩니다 – OR 논리적 Opera바위 산
OR 연산자를 사용하면 지정된 조건 중 하나라도 충족될 경우 해당 행이 반환됩니다.
다음 스크립트는 카테고리 1 또는 카테고리 2에 속하는 모든 영화를 가져옵니다.
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
결과는 아래와 같습니다.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
여러 개의 OR 조건을 연결하면 가독성이 떨어집니다. IN 키워드를 사용하면 이 문제를 해결할 수 있습니다.
WHERE 절은 다음과 결합됩니다 – IN 키워드
WHERE 절을 IN 키워드와 함께 사용하면, 지정된 목록과 일치하는 값을 가진 행에만 영향을 미칩니다. IN 키워드를 사용하면 OR 절을 여러 개 작성해야 하는 번거로움을 줄일 수 있습니다.
다음 MySQL WHERE IN 쿼리는 membership_number가 1, 2 또는 3인 행을 반환합니다.
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
결과는 아래와 같습니다.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
NOT IN은 반대 필터를 수행합니다.
WHERE 절은 다음과 결합됩니다 – 안 키워드
NOT IN 키워드를 사용하면 WHERE 절에서 제공된 목록과 일치하는 값을 가진 모든 행을 제외합니다.
다음 쿼리는 membership_number가 1, 2 또는 3이 아닌 행을 반환합니다.
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
결과는 아래와 같습니다.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
WHERE 절은 비교 연산자를 사용하여 크기와 같음을 기준으로 값을 필터링합니다.
WHERE 절은 다음과 결합됩니다 – 비교 Opera토르
WHERE 절에서는 미만(<), 같음(=), 초과(>) 및 같지 않음(<>) 비교 연산자를 모두 사용할 수 있습니다.
= 동일
다음 스크립트는 동일 비교 연산자를 사용하여 members 테이블에서 모든 여성 멤버를 가져옵니다.
SELECT * FROM `members` WHERE `gender` = 'Female';
결과는 아래와 같습니다.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> 보다 큰
다음 스크립트는 결제 테이블에서 2,000보다 큰 모든 결제를 가져옵니다.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
결과는 아래와 같습니다.
| payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
|---|---|---|---|---|---|
| 1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
| 3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
<> 같지 않음
다음 스크립트는 카테고리 ID가 1이 아닌 모든 영화를 가져옵니다.
SELECT * FROM `movies` WHERE `category_id` <> 1;
결과는 아래와 같습니다.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 5 | Daddy's Little Girls | NULL | 2007 | 8 |
| 6 | Angels and Demons | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schultz | 2005 | 8 |
빠른 참조: WHERE 절 Opera토르
WHERE 절과 가장 자주 함께 사용되는 연산자는 다음과 같습니다. 자세한 정의는 본문에 있습니다. MySQL 연산자 참조.
| Opera바위 산 | 의미 | 예시 조건 |
|---|---|---|
| = | 동일 | `gender` = '여성' |
| <> | 같지 않음 | `category_id` <> 1 |
| > / | 보다 크다 / 보다 작다 | `지불 금액` > 2000 |
| 그리고 / 또는 | 모든 기준 / 어떤 기준이든 | `category_id` = 2 AND `year_released` = 2008 |
| 포함됨 / 포함되지 않음 | 일치/제외 목록 | `membership_number` IN (1,2,3) |
| NULL입니까 / NULL이 아닙니까? | 결측값 검사 | `postal_address`가 NULL입니다. |
⚠️ 참고: NULL은 = 또는 <>와 절대 일치하지 않습니다. 열에 값이 없을 수 있는 경우에는 IS NULL 또는 IS NOT NULL을 사용하십시오.
두뇌 게임: 늦게 반납된 영화를 찾아보세요
2012년 06월 25일 마감일까지 반납되지 않은 대여 영화를 찾고 싶다고 가정해 보겠습니다. WHERE 절에 미만 연산자(<)와 AND 연산자를 결합하면 원하는 결과를 얻을 수 있습니다.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
위 스크립트를 실행하면 MySQL 워크벤치는 다음과 같은 결과를 제공합니다.
| reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
|---|---|---|---|---|---|
| 14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |


