Developer's Development
3.1.10 [DB] SELECT 본문
SELECT
MySQL의 가장 기본적인 명령어로, 특정 테이블에서 원하는 데이터를 조회해서 가져오는 데 사용된다.
-- 단일 컬럼 조회
SELECT menu_name FROM tbl_menu;
-- 다중 컬럼 조회
SELECT menu_code, menu_name, menu_price, category_code FROM tbl_menu;
-- 전체 컬럼 조회
SELECT * FROM tbl_menu;
WHERE
특정 조건에 맞는 레코드만을 선택하는 데 사용되며, 다양한 방법으로 조건을 설정할 수 있다.
1) 비교 연산자: 같음(=), 같지 않음(!=, <>)
2) AND
3) OR
4) BETWEEN
5) LIKE
6) IN
7) IS (NOT) NULL
ORDER BY
SELECT문과 함께 사용되며, 결과 집합을 특정 열이나 열들의 값에 따라 정렬하는 데 사용한다.
오름차순(기본, ASC), 내림차순(DESC)
-- 다중 조건 정렬
SELECT menu_code, menu_name, menu_price
FROM tbl_menu
ORDER BY menu_price DESC, menu_name;
-- 컬럼의 연산 결과로 정렬
SELECT menu_code, menu_name, menu_price, menu_code * menu_price
FROM tbl_menu
ORDER BY menu_code * menu_price;
-- 별칭을 사용한 정렬
SELECT menu_code, menu_name, menu_price, menu_code * menu_price as '연산결과'
FROM tbl_menu
ORDER BY '연산결과';
-- 오름차순 정렬 시 기본적으로 (default) NULL이 맨처음
-- IS NULL을 붙이면 NULL을 맨끝으로 보냄 (IS NULL ASC) : ASC 생략 가능
SELECT category_code, category_name, ref_category_code
FROM tbl_category
ORDER BY ref_category_code IS NULL;
-- 내림차순 정렬 시 기본적으로 (default) NULL이 맨끝
-- IS NULL을 붙이면 NULL을 맨처음으로 보냄 (IS NULL DESC) : DESC 생략 불가
SELECT category_code, category_name, ref_category_code
FROM tbl_category
ORDER BY ref_category_code IS NULL DESC, ref_category_code DESC;
DISTINCT
중복된 값을 제거하는 데 사용된다. 컬럼에 있는 컬럼값들의 종류를 쉽게 파악할 수 있다.
-- 단일 컬럼 DISTINCT
SELECT DISTINCT category_code
FROM tbl_menu
ORDER BY category_code;
-- 단일 컬럼 DISTINCT with NULL
SELECT DISTINCT ref_category_code
FROM tbl_category;
-- 다중 컬럼 DISTINCT
SELECT DISTINCT category_code, orderable_status
FROM tbl_menu
ORDER BY category_code, orderable_status;
LIMIT
SELECT문의 결과 집합에서 반환할 행의 수를 제한하는 데 사용된다.
offset: 시작할 행의 번호(인덱스 체계), row_count: 이후 행부터 반환 받을 행의 개
SELECT
select_list
FROM
table_name
LIMIT [offset,] row_count;
-- row count = 3
SELECT menu_code, menu_name, menu_price
FROM tbl_menu
ORDER BY menu_price DESC
LIMIT 3;
-- offset = 2, row count = 5
SELECT menu_code, menu_name, menu_price
FROM tbl_menu
ORDER BY menu_price DESC
LIMIT 2, 5;
GROUPING (GROUP BY)
GROUP BY절은 결과 집합을 특정 열의 값에 따라 그룹화 하는 데 사용된다.
HAVING은 GROUP BY 절과 함께 사용해야 하며, 그룹에 대한 조건을 적용하는 데 사용된다.
-- 다중 컬럼 GROUP BY
SELECT category_code, menu_price, COUNT(*)
FROM tbl_menu
GROUP BY category_code, menu_price;
# HAVING
SELECT category_code, COUNT(*)
FROM tbl_menu
GROUP BY category_code
HAVING category_code BETWEEN 5 AND 8;
# ROLLUP
-- 컬럼 한 개를 활용해 GROUP BY 후 ROLLUP -> 총계(합계)
SELECT category_code, SUM(menu_price)
FROM tbl_menu
GROUP BY category_code
WITH ROLLUP;
-- 컬럼 두 개를 활용해 GROPU BY 후 ROLLUP -> 중계 + 총계
-- 먼저 나온 컬럼의 총합을 구하고, 이후에 나오는 컬럼의 총합까지 구하는 방식
SELECT category_code, menu_price, COUNT(*)
FROM tbl_menu
GROUP BY category_code, menu_price
WITH ROLLUP;'프로그래밍과 데이터 기초 > DB' 카테고리의 다른 글
| 3.1.13 [Python] MySQL 연동 (0) | 2025.07.08 |
|---|---|
| 3.1.12 [DB] JOIN, SUBQUERY (1) | 2025.07.08 |
| 3.1.11 [DB] DML (0) | 2025.07.08 |
| 3.1.9 [DB] 데이터 모델링 (3) | 2025.07.07 |
| 3.1.8 [DB] 데이터베이스 (2) | 2025.07.06 |