SQL : IN/NOT IN/IS NULL, ORDER BY

정민·2024년 1월 19일

SQL

목록 보기
5/16

🍀 1. IN/NOT IN/IS NULL


🌱 IN

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');

  • WHERE orderdate ='2003-02-11' OR orderdate ='2003-02-17' 과 같은 결과
  • IN 함수 중요하다. 나중에 자주 사용됨

실습

❔ 문제 1: customers 테이블에서 국가(country)가 'USA', 'Canada', 'France' 중 하나인 고객의 customerName을 조회하라.

SELECT customerName
FROM customers
WHERE country IN ('USA' , 'Canada', 'France');



🌱 NOT IN

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/IS NOT NULL

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;




🍀 2. ORDER BY

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;

  • Default ACS
  • LIMIT은 항상 맨마지막에 작성할 것!
SELECT *
FROM orderdetails
ORDER BY
quantityordered DESC,
priceEach asc ;

  • 다중정렬
  • quantityordered로 먼저 내림차순 정렬, 이후 priceEach로 오름차순 정렬
  • 즉, 다중정렬에서는 앞 쪽 컬럼이 우선순위가 됨
  • quantityordered 77인 경우(중복)에 priceEach가 오름차순 정렬

실습

❔ 문제 3: products 테이블에서 제품이름(productName)을 조회하되, 가격(buyPrice)을 기준으로 내림차순으로 정렬하라.

SELECT productName
FROM products
ORDER BY buyPrice DESC;

  • ORDER BY는 최종적으로 결과를 정렬해서 본다라고 생각하면 되기 때문에 그 이전에 최종적인 결과를 잘 뽑아내는 것이 중요함!!
profile
데이터 공부하는 예비 데이터 분석가, 김정민입니다.

0개의 댓글