01. 집계함수
- COUNT(*)
- 모든 행의 개수를 COUNT
- 컬럼의 NULL값 유무 체크 불가능
- COUNT(컬럼명)
- 특정 컬럼의 행의 개수 COUNT, NULL제외
- SUM(컬럼명)
- AVG(컬럼명)
- MAX(컬럼명)
- MIN(컬럼명)
02. GROUP화 하기
- GROUP BY 함수
- GROUP BY는 집계함수와 함께 쓰이며, 특정 컬러 기준으로 그룹화 가능
- SELECT 절에 컬럼명, 집계함수가 같이 기술된 경우, 컬럼명은
GROUP BY에 기술
- GROUP BY 예시
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
- HAVING 함수
- 집계함수를 사용하여 조건을 비교할 때 사용
- WHERE은 집계함수 사용이 안되며, 개별 행에 적용
(GROUP BY 전에 사용)
- HAVING 함수 예시
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;
03. 기본키, 외래키
- 기본키(PRIMARY KEY)
- 테이블은 각각 하나의 기본키를 가짐
- 데이터베이스는 여러 개의 테이블로 구성
- 테이블 간 키를 매개로 연결(이걸 구조화한 그림이 ERD)
- PK로 하나의 컬럼이 지정, NULL값 미허용, 테이블 내 유일성 보장
- 외래키(FOREIGN KEY)
04. 다중 테이블(JOIN)
- JOIN 함수
- 관계형 데이터베이스의 테이블 내의 행들을 연결시켜 주는 문법
- 기본적으로는 INNER JOIN
- JOIN의 종류
- INNER JOIN : 공통된 부분 기준
- OUTER JOIN
- LEFT OUTER JOIN : 왼쪽 테이블 기준
- RIGHT OUTER JOIN : 오른쪽 테이블 기준
- INNER JOIN (두 테이블 결합 예시)
SELECT employees.name, departments.name AS department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id;
SELECT
orders.id AS order_id,
customers.name AS customer_name,
products.name AS product_name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.id
INNER JOIN products
ON orders.product_id = products.id;
05. 데이터 이어붙이기(UNION)
- UNION 함수
- 테이블을 아래로, 세로로 붙이는 형태
- 위 테이블과 아래 테이블 컬럼명이 달라도 UNION을 적용 가능
- 그렇지만 위 테이블과 아래 테이블 컬럼수 다르면 UNION 사용 불가능
- UNION은 중복 제거, UNION ALL은 중복 포함
06. 서브쿼리(SubQuery)
- 하나의 쿼리문 안에 포함되어 있는 또 다른 쿼리
- 서브쿼리 특징
- 괄호()로 묶어서 사용
- 연산자의 오른쪽에 위치
- 서브쿼리 내에서 ORDER BY 미지원
- 단일행 서브쿼리 예시
SELECT name
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
SELECT name
FROM employees
WHERE department_id IN (
SELECT id
FROM departments
WHERE location = 'Seoul'
);
SELECT dept, avg_sal
FROM (
SELECT department_id AS dept, AVG(salary) AS avg_sal
FROM employees
GROUP BY department_id
) AS dept_avg;
07. SQL 연습할 만한 곳들