ORDER BY는 SQL 쿼리에서 데이터를 정렬하는 방법 중 하나이다. ORDER BY를 사용하면 쿼리 결과를 지정된 열을 기준으로 오름차순 또는 내림차순으로 정렬할 수 있다.
SELECT column1, column2, column3, ...
FROM table_name
ORDER BY column_name ASC|DESC;
예제) "employees" 테이블에서 사원의 이름과 연봉을 내림차순으로 정렬하여 가져오는 쿼리
SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC;
예제) "employees" 테이블에서 사원 이름을 오름차순으로, 연봉을 내림차순으로 정렬하여 가져오는 쿼리
SELECT first_name, last_name, salary
FROM employees
ORDER BY first_name ASC, salary DESC;
데이터를 비교하는데 사용되는 연산자. 데이터를 비교하여 검색 조건을 만들거나 WHERE, HAVING, JOIN 절 등에서 조건을 지정하는데 사용된다.
= : 값이 같은지 비교합니다.
<> 또는 != : 값이 다른지 비교합니다.
> : 왼쪽 값이 오른쪽 값보다 큰지 비교
<> 또는 != : 값이 아닌것
< : 왼쪽 값이 오른쪽 값보다 작은지 비교
>= : 왼쪽 값이 오른쪽 값보다 크거나 같은지 비교
<= : 왼쪽 값이 오른쪽 값보다 작거나 같은지 비교
BETWEEN : 값이 범위 내에 있는지 비교
LIKE : 값이 특정 패턴과 일치하는지 비교
IN : 값이 지정된 목록 내에 있는지 비교
예제) "employees" 테이블에서 "John"이라는 이름을 가진 사원이 아닌 모든 사원을 찾는 쿼리
SELECT * FROM employees WHERE first_name <> 'John';
SELECT * FROM employees WHERE salary < 50000;
and 연산자는 두 개 이상의 조건을 모두 만족할 때 결과가 참(true)이 된다. and 연산자는 모든 조건이 참일 때 참이 되며, 그렇지 않으면 거짓(false)이 된다.
예제) products 테이블에서 가격이 50보다 크고, 재고가 10 이상인 제품을 검색
SELECT * FROM products WHERE price > 50 AND stock >= 10;
or 연산자는 두 개 이상의 조건 중에 하나 이상이 참일 때 결과가 참이 된다. or 연산자는 조건 중에서 하나 이상이 참일 때 참이 되며, 그렇지 않으면 거짓(false)이 된다.
예제) customers 테이블에서 도시가 '서울'이거나, '인천'에 거주하는 고객을 검색
SELECT * FROM customers WHERE city = '서울' OR city = '인천';
and와 or 연산자를 복합적으로 사용하여 복잡한 검색 조건을 만들 수 있다. 예를 들어, 가격이 50보다 크거나 100보다 작고, 재고가 10 이상인 제품을 검색하려면 다음과 같이 SQL문을 작성할 수 있다.
SELECT * FROM products WHERE (price > 50 OR price < 100) AND stock >= 10;
NOT 연산자는 부정(negation) 연산자로, 주어진 조건을 만족하지 않는 경우를 찾을 때 사용한다.
students
+----+-----------+------------+
| id | name | age |
+----+-----------+------------+
| 1 | Alice | 20 |
| 2 | Bob | 22 |
| 3 | Charlie | 18 |
+----+-----------+------------+
예제) 나이가 20살이 아닌 학생들의 이름
SELECT name FROM students WHERE NOT age = 20;
예제) 이름이 'Alice'가 아닌 학생들의 이름
SELECT name FROM students WHERE NOT name = 'Alice';
BETWEEN 연산자는 특정 범위 내에 있는 값을 조회할 때 사용된다. BETWEEN 연산자는 value BETWEEN low AND high와 같은 형태로 사용한다.
예제) orders 테이블에서 order_date가 2023년 1월 1일부터 2023년 3월 31일 사이인 주문을 조회
SELECT *
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-03-31';
예제) products 테이블에서 price가 10에서 20 사이인 제품을 조회
SELECT *
FROM products
WHERE price BETWEEN 10 AND 20;
IN 연산자는 WHERE 절에서 여러 값을 비교할 때 사용한다.
예제) customers 테이블에서 city가 "Seoul", "Busan", "Daegu" 중 하나인 고객들을 조회
SELECT *
FROM customers
WHERE city IN ('Seoul', 'Busan', 'Daegu');
예제) orders 테이블에서 status가 "shipped", "delivered" 중 하나이고 total_amount가 100 이상인 주문을 조회
SELECT *
FROM orders
WHERE status IN ('shipped', 'delivered') AND total_amount >= 100;
LIKE 연산자는 WHERE 절에서 문자열 패턴을 비교할 때 사용한다.
예제) employees 테이블에서 last_name이 "S"로 시작하는 직원들을 조회
SELECT *
FROM employees
WHERE last_name LIKE 'S%';
예제) products 테이블에서 product_name에 "apple"이 포함된 상품들을 조회
SELECT *
FROM products
WHERE product_name LIKE '%apple%';