IN은 특정 값이 존재하는 데이터만 조회
비교연산자, 논리연산자로 대체 가능SELECT * FROM table WHERE column1 IN (10,20,30); # column1이 10이거나 20이거나 30 인 데이터를 조회
SELECT *
FROM orders
WHERE orderdate IN ('2003-02-11', '2003-02-17');
❔ 문제 1: customers 테이블에서 국가(country)가 'USA', 'Canada', 'France' 중 하나인 고객의 customerName을 조회하라.
SELECT customerName
FROM customers
WHERE country IN ('USA' , 'Canada', 'France');
NOT IN은 IN과 반대, 특정 값이 포함되지 않는 데이터를 조회
AND로 묶임SELECT * FROM table WHERE column1 NOT IN (10,20,30); # column1이 10,20,30이 아닌 데이터 조회
SELECT *
FROM employees
WHERE officecode NOT IN (1,2,3);
SELECT *
FROM employees
WHERE officecode <> 1 and officecode <> 2 and officecode <>3;
IS NULL : column의 값이 NULL인 데이터 조회
IS NOT NULL : column의 값이 NULL이 아닌 값 조회
취업에는 안중요할 수 있으나 나중에 직접 DB를 만들 때는 중요할 수 있음
데이터가 NULL값이다 라는 건 데이터가 들어가있지 않다는 것SELECT * FROM orders WHERE comments IS NULL #또는 IS NOT NULL
❔ 문제 2: employees 테이블에서 상사(reportsTo)가 지정되지 않은 직원의 firstName과 lastName을 조회하라.
SELECT firstName, lastName
FROM employees
WHERE reportsTo IS NULL;
ORDER BY : SQL 쿼리의 결과를 특정 컬럼 또는 여러 컬럼을 기준으로 정렬.
기본적으로 오름차순(ASC)으로 정렬(ASC 생략 가능).
내림차순(DESC)으로 정렬하려면 DESC 키워드를 사용해야 함.
ORDER BY는 WHERE절(생략 가능) 다음에 사용SELECT * FROM table WHERE ~ ORDER BY 컬럼명1 desc, 컬럼명2 asc, ... ;
SELECT LASTNAME, FIRSTNAME, OFFICECODE
FROM employees
ORDER BY OFFICECODE
LIMIT 8;
SELECT *
FROM orderdetails
ORDER BY
quantityordered DESC,
priceEach asc ;
❔ 문제 3: products 테이블에서 제품이름(productName)을 조회하되, 가격(buyPrice)을 기준으로 내림차순으로 정렬하라.
SELECT productName
FROM products
ORDER BY buyPrice DESC;