SQL:AND 및 OR 조건 조합
이 SQL 자습서에서는 단일 쿼리에서 AND 조건그리고 OR 조건함께 사용하는 방법을 구문과 예제를 통해 설명합니다.
설명
SQL AND 조건과 OR 조건을 조합하여 SELECT, INSERT, UPDATE 또는 DELETE문으로 여러 조건을 테스트할 수 있습니다.
이러한 조건을 결합할 때 괄호를 사용하여 데이터베이스가 각 조건을 평가하는 순서를 알 수 있도록 하는 것이 중요합니다.
(마치 수학 시간에 연산의 순서를 배울 때와 같습니다!
)
구문
SQL에서 AND 조건과 OR 조건을 함께 사용하는 구문은 다음과 같습니다.
WHERE condition1
AND condition2
...
OR condition_n;
매개변수 및 인수
condition1, condition2, …condition_n
- 레코드가 선택되는지 여부를 결정하기 위해 평가되는 조건.
메모
- SQL AND 및 OR 조건을 사용하여 여러 조건을 테스트할 수 있습니다.
- 괄호 안의 연산 순서를 잊지 마십시오!
DDL/DML 예제
자습서를 따르려면 테이블을 만드는 DDL과 데이터를 채우는 DML을 받습니다.
그런 다음 자신의 데이터베이스에서 예제를 사용해보십시오.
DDL/DML 취득
예 – SELECT 문에서 ‘AND’및 ‘OR’조건 사용
다음으로 SELECT 문에서 AND 조건과 OR 조건을 함께 사용하는 방법의 예를 살펴 보겠습니다.
이 예제에는 다음 데이터가 있는 suppliers라는 테이블이 있습니다.
supplier_id | supplier_name | 도시 | state |
---|---|---|---|
100 | Microsoft | Redmond | 워싱턴 |
200 | Mountain View | California | |
300 | 오라클 | Redwood City | California |
400 | Kimberly-Clark | Irving | Texas |
500 | Tyson Foods | Springdale | Arkansas |
600 | SC 존슨 | Racine | Wisconsin |
700 | Dole Food Company | Westlake Village | California |
800 | Flowers Foods | Thomasville | Georgia |
900 | Electronic Arts | Redwood City | California |
다음 SQL 문을 입력합니다.
Try it
SELECT *
FROM suppliers
WHERE (state = 'California' AND supplier_id <> 900)
OR (supplier_id = 100);
supplier_id | supplier_name | 도시 | state |
---|---|---|---|
100 | Microsoft | Redmond | 워싱턴 |
200 | Mountain View | California | |
300 | 오라클 | Redwood City | California |
700 | Dole Food Company | Westlake Village | California |
이 예에서는 state가 California이지만 supplier_id가 900이 아닌 모든 공급업체가 반환됩니다.
이 쿼리는 supplier_id가 100인 모든 공급업체를 반환합니다.
괄호는 AND 및 OR 조건이 평가되는 순서를 결정합니다.
수학 시간에 연산 순서로 배운 것과 같습니다!
예 – UPDATE 문에서 ‘AND’및 ‘OR’조건 사용
다음으로 UPDATE 문에서 AND 및 OR 조건을 사용하는 방법을 살펴 보겠습니다.
이 예에서는 다음 데이터가 있는 customers라는 테이블이 있습니다.
customer_id | last_name | first_name | favorite_website |
---|---|---|---|
4000 | 잭슨 | 조 | techonthenet.com |
5000 | 스미스 | 제인 | digminecraft.com |
6000 | Ferguson | 사만다 | bigactivities.com |
7000 | Reynolds | 알렌 | checkyourmath.com |
8000 | 앤더슨 | Paige | NULL |
9000 | 존슨 | Derek | techonthenet.com |
다음으로 AND 및 OR 조건을 사용하여 테이블의 레코드를 업데이트하는 방법을 소개합니다.
다음 UPDATE 문을 입력합니다.
Try it
UPDATE customers
SET favorite_website = 'techonthenet.com'
WHERE customer_id = 6000
OR (customer_id > 7000 AND last_name <> 'Johnson');
SELECT * FROM customers;
다음이 표시되는 결과입니다.
customer_id | last_name | first_name | favorite_website |
---|---|---|---|
4000 | 잭슨 | 조 | techonthenet.com |
5000 | 스미스 | 제인 | digminecraft.com |
6000 | Ferguson | 사만다 | techonthenet.com |
7000 | Reynolds | 알렌 | checkyourmath.com |
8000 | 앤더슨 | Paige | techonthenet.com |
9000 | 존슨 | Derek | techonthenet.com |
이 예에서는 customers 테이블의 모든 favorite_website 값을 customer_id가 6000, customer_id가 7000보다 크고 last_name이 ‘Johnson’이 아닌 레코드가 있는 ‘techonthenet.com’으로 업데이트합니다.
보시다시피 세 번째 줄과 다섯 번째 줄의 favorite_website 값이 업데이트되었습니다.
예 – DELETE 문에서 ‘AND’ 및 ‘OR’ 조건 사용
다음으로 DELETE 문을 사용하여 AND와 OR 조건을 결합하여 레코드를 삭제하는 방법을 살펴 보겠습니다.
이 예에서는 다음 데이터가 있는 제품이라는 테이블이 있습니다.
product_id | product_name | category_id |
---|---|---|
1 | Pear | 50 |
2 | 바나나 | 50 |
3 | 오렌지 | 50 |
4 | 애플 | 50 |
5 | Bread | 75 |
6 | Sliced Ham | 25 |
7 | Kleenex | NULL |
다음 DELETE문을 입력하십시오. Try it
DELETE FROM products
WHERE category_id = 25
OR (product_id < 4 AND product_name <> 'Banana');
세 개의 레코드가 삭제됩니다.
products 테이블에서 데이터를 다시 선택합니다.
SELECT * FROM products;
다음이 표시되는 결과입니다.
product_id | product_name | category_id |
---|---|---|
2 | 바나나 | 50 |
4 | 애플 | 50 |
5 | Bread | 75 |
7 | Kleenex | NULL |
이 예에서는 category_id가 25인 제품 테이블에서 모든 레코드를 삭제합니다.
또한 product_id가 4보다 작고 product_name이 ‘Banana’와 같지 않은 모든 레코드가 제품 테이블에서 삭제됩니다.