02-02) SQL기초-02

slow_starter·2025년 6월 30일
0

모두의연구소-DS4기

목록 보기
16/30
post-thumbnail

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;
-- employees 테이블에서
-- department별로 직원 수(COUNT(*))를 세고,
-- 부서별로 묶음 (GROUP BY department)
  • HAVING 함수
    • 집계함수를 사용하여 조건을 비교할 때 사용
    • WHERE은 집계함수 사용이 안되며, 개별 행에 적용
      (GROUP BY 전에 사용)
  • HAVING 함수 예시
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;
-- 부서별로 묶고(GROUP BY department)
-- 직원 수가 10명 초과인 부서만 필터링 (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;
-- employees 테이블과 departments 테이블을 조인
-- 공통된 department_id 필드를 기준으로
-- 직원 이름 + 부서 이름을 함께 조회
  • INNER JOIN (세 테이블 결합 예시)
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;
-- orders 테이블에서 주문 정보를 가져옴
-- customers 테이블과 조인하여 고객 이름을 가져오고
-- products 테이블과 조인하여 상품 이름도 함께 표시
-- 즉, 고객이 어떤 상품을 주문했는지 알 수 있음

05. 데이터 이어붙이기(UNION)

  • UNION 함수
    • 테이블을 아래로, 세로로 붙이는 형태
    • 위 테이블과 아래 테이블 컬럼명이 달라도 UNION을 적용 가능
    • 그렇지만 위 테이블과 아래 테이블 컬럼수 다르면 UNION 사용 불가능
    • UNION은 중복 제거, UNION ALL은 중복 포함

06. 서브쿼리(SubQuery)

  • 하나의 쿼리문 안에 포함되어 있는 또 다른 쿼리
  • 서브쿼리 특징
    • 괄호()로 묶어서 사용
    • 연산자의 오른쪽에 위치
    • 서브쿼리 내에서 ORDER BY 미지원
  • 단일행 서브쿼리 예시
SELECT name
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
); 
-- 서브쿼리 결과가 오직 1행 1열인 경우
--  =, >, <, >=, <=, != 같은 비교 연산자로 비교 가능
  • 다중행 서브쿼리 예시
SELECT name
FROM employees
WHERE department_id IN (
    SELECT id
    FROM departments
    WHERE location = 'Seoul'
);
-- 서브쿼리 결과가 여러 행이 나오는 경우
-- IN, ANY, ALL, EXISTS 같은 연산자가 필요
  • FROM절 subquery
    • 주로 가상의 테이블처럼 활용
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 연습할 만한 곳들

profile
2025화이팅!

0개의 댓글