SQL문 실습(2) - WHERE MS-SQL

 SQL에서 WHERE 구문은 SQL 데이터 조작 언어(DML)가 특정한 기준을 충족하는 열에만 영향을 미치도록 지정한다. 기준은 구문의 형태로 표현된다. 
 WHERE 구문은 SQL DML에서 의무 사항이 아니라, SQL DML 구문 또는 쿼리에 의해 반환된 결과물에 의해 영향을 받는 열의 수를 제한하도록 사용할 수 있다.
- 출처 : 위키백과 - 

--> IN을 사용해서 해당 조건에 만족하는 데이터들을 가져올 수 있다.
1. Search Customers
(only CustomerID, Country, City, ContactTitle column)
(And Country is "France" and City is "Paris" or "Lyon")
------------------------------------------------------------------------------
SELECT CustomerID, Country, City, ContactTitle
FROM Customers
WHERE Country = 'France' AND City IN ('Paris', 'Lyon')


2. Search Customers
(CotactTitle is "Marketing Manager" and Country is "USA" and City is "Portland" or "Walla Walla")
(Only CustomerID, Country, City, ContactTitle column)
------------------------------------------------------------------------------
SELECT CustomerID, Country, City, ContactTitle
FROM Customers
WHERE ContactTitle = 'Marketing Manager' AND Country = 'USA'
AND City IN('Portland', 'Walla Walla')


--> (>, <, >=, <=) 등의 부등호를 통해서 해당하는 값보다 크거나 작은 조건을 만족하는 데이터를 불러온다. 
3. Search Orders(OrderDate is bigger or equal than 1997-01-01)
------------------------------------------------------------------------------
SELECT *
FROM Orders
WHERE OrderDate >= '1997-01-01'


4. Searh Orders(OrderDate is bigger or equal than 1997-01-01
and OrderDate is smaller than 1997-02-01(not include 1997-02-01))
------------------------------------------------------------------------------
SELECT *
FROM Orders
WHERE OrderDate >= '1997-01-01' AND OrderDate < '1997-02-01'


5. Search Orders
CustomerID is EASTC
OrderDate is bigger or equal than 1997-01-01
and OrderDate is smaller than 1997-02-01(not include 1997-02-01)
------------------------------------------------------------------------------
SELECT *
FROM Orders
WHERE CustomerID = 'EASTC' AND OrderDate >= '1997-01-01' AND 
OrderDate < '1997-02-01'


--> BETWEEN을 활용하면 값 사이에 있는 조건을 만족하는 데이터를 가져올 수 있다.
--> BTEWEEN은 <=, >= 조건과 같다.
6. Search Orders
Freight is bigger or equal than 100
And Freight is smaller or equal than 200
Only Freight, CustomerID, OrderDate column
Use BETWEEN condition
------------------------------------------------------------------------------
SELECT Freight, CustomerID, OrderDate
FROM Orders
WHERE Freight BETWEEN 100 AND 200 


--> LIKE 'A%'는 A로 시작하는 모든 값들의 데이터를 가져온다.
--> 이와 비슷하게 '%A'는 A로 끝나는 모든 값들의 데이터를 가져온다.
--> '%A%'의 경우 중간에 A가 들어간 모든 값들의 데이터를 가져온다.
7. Search Customers
CustomerID Like A%
------------------------------------------------------------------------------
SELECT *
FROM Customers
WHERE CustomerID LIKE 'A%'


8. Search Customers
ContactTitle Like Sales%
------------------------------------------------------------------------------
SELECT *
FROM Customers
WHERE ContactTitle LIKE 'Sales%'


--> ISNULL(컬럼명, 값)을 사용하면 컬럼명이 NULL인 경우 값으로 해당 내용을 교체시킬 수 있다.
9. Search Customers
Region is NULL
And Country is Mexico
Only CustomerID and Country, City, Region column
and When Region column is NULL, Region change to ''
------------------------------------------------------------------------------
SELECT CustomerID, Country, City, ISNULL(Region, '') Region
FROM Customers
WHERE ISNULL(Region, '') = '' AND Country = 'Mexico'

SELECT CustomerID, Country, City, ISNULL(Region, '') Region
FROM Customers
WHERE Region IS NULL AND Country = 'Mexico'

이처럼 WHERE구문에서는 다양한 함수들을 통해서 다양한 조건들을 검색해서
데이터를 표시할 수가 있다.