MySQL WHERE 절: AND, OR, IN, NOT IN 쿼리 예

⚡ 스마트 요약

MySQL WHERE 절은 SELECT, UPDATE, DELETE 문에 정확한 조건을 적용하여 결과 집합에 도달하기 전에 행을 필터링합니다. AND, OR, IN, NOT IN 및 비교 연산자를 이해하면 초보자도 쿼리에 필요한 레코드를 정확하게 검색할 수 있습니다.

  • 🔍 핵심 목적: WHERE 절은 문이 영향을 미치는 행을 제한하므로 SELECT, UPDATE 및 DELETE는 일치하는 행에만 영향을 미칩니다.
  • 🔗 및 Opera토르: 모든 조건이 참으로 평가될 때만 행이 반환되므로 결과 집합이 좁혀집니다.
  • 🔀 OR Opera토르: 어떤 조건이라도 참으로 평가되면 행이 반환되어 결과 집합이 확장됩니다.
  • 📋 포함 여부: IN 키워드는 하나의 표현식에서 값 목록과 일치하는 반면, NOT IN은 동일한 목록의 값을 제외합니다.
  • ⚖️ 비교 Opera토르: 같음(=), 보다 큼(>), 보다 작음(<), 같지 않음(<>)으로 숫자, 텍스트 및 날짜 열을 필터링합니다.
  • ⚠️ NULL 처리: NULL은 = 또는 <>와 절대 일치하지 않으므로 결측값을 검사하려면 IS NULL 및 IS NOT NULL이 필요합니다.

WHERE 절은 무엇입니까? MySQL?

WHERE 절 in MySQL 는 지정된 SQL 명령문에 영향을 받는 데이터 또는 행의 정확한 기준을 지정하는 데 사용되는 키워드입니다. WHERE 절은 INSERT, UPDATE, SELECT 및 DELETE와 같은 SQL 명령문과 함께 사용하여 레코드를 필터링하고 데이터에 대한 다양한 작업을 수행할 수 있습니다.

우리는 데이터베이스 이전 튜토리얼의 SELECT 문을 사용합니다. SELECT 문은 쿼리된 데이터베이스 테이블의 모든 결과를 반환했습니다.

하지만 때로는 특정 조건에 맞는 결과만 얻고 싶을 때가 있습니다. SQL의 WHERE 절은 이러한 상황에서 유용하게 사용되며, SQL에서도 동일하게 작동합니다. 삭제 또는 업데이트 쿼리 SELECT 쿼리에서와 마찬가지로.

WHERE 절 MySQL

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 email
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 email
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 email
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 email
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

자주 묻는 질문

WHERE는 그룹화하기 전에 개별 행을 필터링합니다.ping따라서 집계 함수를 참조할 수 없습니다. HAVING은 GROUP BY 실행 후에 그룹을 필터링하므로 COUNT(*) > 5와 같은 조건을 적용하기에 적합한 위치입니다.

IS NULL 또는 IS NOT NULL을 사용하세요. Opera'=' 및 '<>'와 같은 연산자는 NULL에 대해 'unknown'을 반환하므로 `postal_address` = NULL은 아무것도 일치시키지 않지만 `postal_address` IS NULL은 제대로 작동합니다.

네, 필터링된 열에 인덱싱이 되어 있는 경우입니다. MySQL 테이블을 스캔하는 대신 일치하는 행만 읽습니다.ping YEAR(`date_of_birth`) = 1980과 같이 함수 내의 특정 열은 인덱스 사용을 방해합니다.

네. AI 비서는 일반 영어를 SQL로 변환합니다. MySQL 워크 벤치 결과를 실행할 수 있습니다. Rev모델이 임의로 열 이름을 생성할 수 있으므로 스키마에 대한 모든 조건을 검토하십시오.

먼저 SELECT 문으로 테스트해 보세요. WHERE 절이 잘못되면 문제가 발생할 수 있습니다. 삭제 또는 업데이트 쿼리 모든 행을 수정할 수 있습니다. 일치하는 행을 미리 보고, 쓰기 작업에 동일한 조건을 재사용하세요.

이 게시물을 요약하면 다음과 같습니다.