Contents
1. 기본 SELECT 문
WHERE 절
2. 심화 SELECT문
GROUP BY 절
HAVING 절
1. 기본 SELECT 문
SELECT문은 SQL에서 가장 많이 사용되는 문법입니다. SELECT문은 이미 구축된 테이블에서 데이터를 추출하고 불러오는 역할을 합니다. SELECT (데이터) FROM (테이블) WHERE (조건)이 기본 구조입니다. 아래와 같이 확장할 수 있습니다.
SELECT 열이름 FROM 테이블 이름
WHERE 조건
GROUP BY 열 이름
HAVING 조건식
ORDER BY 열 이름
LIMIT 숫자;
- SELECT 열이름: 특정 테이블에서 조회하고자 하는 열을 지정합니다.
- FROM 테이블 이름: 데이터를 조회할 테이블의 이름을 지정합니다.
- WHERE 조건: 특정 조건을 만족하는 행만을 선택하기 위해 사용됩니다. WHERE 절이 없으면 모든 행이 선택됩니다.
- GROUP BY 열 이름: 그룹별로 데이터를 묶을 열을 지정합니다. 특정 열 값을 기준으로 그룹을 형성 합니다.
- HAVING 조건식: GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정합니다. GROUP BY의 조건식이라고 할 수 있습니다.
- ORDER BY 열 이름: 결과를 정렬하는 데 사용됩니다. 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있습니다.
- LIMIT 숫자: 반환되는 결과 집합의 행 수를 제한합니다. 특정 수의 행만을 반환하도록 제한합니다.
예를 들어, 직원 테이블에서 부서별로 평균 급여를 계산하고, 평균 급여가 50,000 이상인 부서에서 평균 급여의 상위 5개를 표시하는 SQL 쿼리는 다음과 같습니다.
SELECT DepartmentID, AVG(Salary) AS AvgSalary FROM Employment
GROUP BY Department ID
HAVING AVG(Salary) >= 50000
ORDER BY AvgSalary DESC
LIMIT 5;
WHERE 절
WHERE 절은 SELECT 문의 조건을 나타냅니다. 자주 활용되는 조건 식을 살펴보겠습니다.
- 여러 개의 조건문을 동시에 만족하는 데이터를 조회할 때, 논리 연산자 AND, OR 등을 사용합니다.
SELECT mem_name, height, mem_number FROM member
WHERE height >= 165 AND mem_number >6;
- 숫자형 데이터에서 범위 안에 있는 데이터를 조회할 때, BETWEEN ~ AND를 사용합니다.
SELECT mem_name, height FROM member
WHERE hight BETWEEN 163 AND 165;
- 문자형 데이터에서 특정 문자가 포함된 데이터를 조회할 때, IN()을 사용합니다.
SELECT mem_name, addr FROM member
WHERE addr IN('경기', '서울', '전북');
- 문자형 데이터에서 일부 글자만을 가진 조건을 조회할 때, LIKE를 사용합니다. '우%'는 우로 시작하는 모든 데이터를 의미합니다.
SELECT * FROM member
WHERE mem_name LIKE '우%';
- 문자형 데이터에서 한 글자씩 매칭하기 위해서는 언더바(_)를 사용합니다. '__시대'는 'xx시대' 구조로 이루어진 데이터를 의미합니다.
SELECT * FROM member
WHERE mem_name LIKE '__핑크';
2. 심화 SELECT문
GROUP BY 절
GROUP BY 절은 특정 열의 값에 따라 결과를 그룹화 합니다. 주로 집계 함수와 함께 사용되고, 그룹별로 집계를 수행하고 분류된 결과를 반환합니다. 자주 활용되는 집계 함수는 다음과 같습니다.
집계 함수 | 설명 |
SUM() | 합계 |
AVG() | 평균 |
MIN() | 최소 값 |
MAX() | 최대 값 |
COUNT() | 그룹 별 행의 개수 |
COUNT(DISTINCT) | 그룹 별 유니크 행의 개수 |
각 회원(mem_id) 별로 물품을 구매한 개수(amount)를 합계하여 구하는 쿼리는 다음과 같습니다.
SELECT mem_id "회원 아이디", SUM(amount) "총 구매 개수" FROM buy GROUP BY mem_id;
각 회원(mem_id) 별로 물품을 구매한 평균 개수(amount)를 구하는 쿼리는 다음과 같습니다.
SELECT mem_id, AVG(amount) FROM member
GROUP BY mem_id;
HAVING 절
HAVING 절은 집계 함수에 대해서 조건을 제한합니다. HAVING 절은 반드시 GROUP BY 절 뒤에 나옵니다.
물품을 구매한 개수(amount)를 합계가 5개 이상인 회원(mem_id)을 구하는 쿼리는 다음과 같습니다.
SELECT mem_id, SUM(amount) FROM buy
GROUP BY mem_id
HAVING SUM(amount) > 5;
총 구매 개수가 많은 순서대로 정렬하면 다음과 같습니다.
SELECT mem_idm SUM(amount) FROM buy
GROUP BY mem_id
HAVING SUM(amount) >= 5
ORDER BY SUM(amount) DESC;
반응형
'SQL' 카테고리의 다른 글
SQL 시간 데이터 다루기 (1) | 2024.01.14 |
---|---|
SQL GROUP BY 절 이해하기: 주요 특징 (1) | 2023.12.21 |
SQL 데이터 형식 알아보기(숫자형, 문자형, 날짜형) (0) | 2023.12.15 |
SQL 기초 알아보기 (0) | 2023.12.14 |