mysql 11

[DB] 데이터베이스 인덱스(Index)란?

데이터베이스 성능이 점점 느려질 때, 대부분의 초보 개발자는 쿼리만 고치려 합니다. 하지만 진짜 해답은 인덱스(Index)에 있습니다.인덱스는 쿼리 성능을 획기적으로 개선할 수 있는 도구이지만, 잘못 사용하면 오히려 시스템에 부담을 줄 수 있죠.이번 포스팅에서는 인덱스의 개념, 동작 방식, 실무 적용 방법까지 한눈에 이해할 수 있도록 정리해보았습니다. 📌 1. 인덱스(Index)란?인덱스는 책의 목차처럼, 데이터베이스에서 특정 데이터를 더 빠르게 조회할 수 있도록 만들어진 검색 도우미입니다.일반적으로는 B-Tree(균형 트리) 구조로 만들어져 있으며, 특정 컬럼 값을 기준으로 정렬된 구조를 유지합니다.예를 들어, 수만 건의 회원 중 이름이 '홍길동'인 사람을 찾을 때, 인덱스가 없다면 모든 데이터를 ..

데이터베이스 2025.05.09

[DB] 자주 쓰는 SQL 쿼리 패턴 10가지 정리

SQL은 데이터베이스를 다루는 데 있어 필수적인 언어입니다. 하지만 문법을 안다고 해서 바로 실무에 적용하기는 쉽지 않죠. 정작 프로젝트를 진행하다 보면 “어떤 쿼리를 어떻게 작성해야 하지?” 하는 고민에 자주 부딪히게 됩니다.이번 포스팅에서는 실무에서 자주 사용되는 SQL 쿼리 패턴 10가지를 간결하게 정리해보았습니다. 기본적인 조회부터 집계, 조인, 수정/삭제까지, 자주 쓰는 구조들을 한눈에 확인해보세요. ✅ 1. 기본 SELECT 조회SELECT name, email FROM users WHERE status = 'active';가장 기본이 되는 조회 구문조건 필터링, 정렬, 페이징과 자주 함께 사용됨 🔍 2. LIKE를 이용한 검색SELECT * FROM products WHERE name L..

데이터베이스 2025.05.08

[SQL] SQL 조인의 종류

SQL(Structured Query Language)에서 조인(JOIN)은 여러 테이블에서 데이터를 결합하고 관련 정보를 가져오는 데 사용됩니다. 데이터베이스 설계 시 데이터를 여러 테이블로 나누어 관리하는 것이 일반적이므로, 조인은 데이터 간의 관계를 바탕으로 필요한 정보를 효율적으로 조회하는 데 핵심적인 역할을 합니다. 1. 조인의 종류INNER JOIN두 테이블에서 공통된 값을 가진 행만 반환교집합에 해당하는 데이터를 조회할 때 사용 LEFT JOIN (LEFT OUTER JOIN)왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 행을 반환일치하지 않는 경우 NULL을 반환왼쪽 테이블의 데이터를 우선적으로 보고자 할 때 사용 RIGHT JOIN (RIGHT OUTER JOIN)오른쪽 테이블의 모..

데이터베이스 2025.01.08

[Today's Query] 부서별 연봉 3위까지 사원의 이름과 연봉 조회 (2025/01/08)

WITH tbl_ranking AS ( SELECT RANK() OVER(partition by d.dept_no ORDER BY s.salary DESC) AS ranking, CONCAT(e.first_name, ' ', e.last_name) AS name, s.salary, d2.dept_name FROM ( SELECT emp_no, MAX(salary) AS salary FROM salaries GROUP BY emp_no ) AS s JOIN employees AS e ON e.emp_no = s.emp_no JOIN dept_emp AS d ON e.emp_no = d.emp_no JOIN departments AS d2 ON d2.dept_no = d.dept_..

[Today's Query] 부서 이동 경험이 있는 사원들의 현재 부서를 조회 (2025/01/07)

부서 이동 경험이 있는 사원들의 정보와 현재 부서를 조회하세요.SELECT e.emp_no, CONCAT(e.first_name, ' ', e.last_name) AS name, e.hire_date, d.dept_name, de.to_dateFROM dept_emp AS de JOIN departments AS d ON d.dept_no = de.dept_noJOIN employees AS e ON de.emp_no = e.emp_noWHERE to_date = '9999-01-01' AND e.emp_no IN ( SELECT e.emp_no FROM dept_emp AS d JOIN employees AS e ON ..

[Today's Query] 부서 평균 연봉보다 연봉이 높은 사원을 조회 (2025/01/06)

문제최신 연봉이 부서 최신 연봉의 평균보다 높은 사원을 조회하세요.WITH LatestSalaries AS ( SELECT emp_no, salary, ROW_NUMBER() OVER (PARTITION BY emp_no ORDER BY from_date DESC) AS rn FROM salaries),avgSalary AS ( SELECT b.dept_no, AVG(a.salary) AS avg_salary FROM (SELECT emp_no, salary FROM LatestSalaries WHERE rn = 1) AS a JOIN dept_emp AS b ON a.emp..

[Today's Query] 재직 중인 개발부서 사원의 최신 연봉 정보를 출력 (2025/01/04)

문제재직 중인 개발(Development)부서의 사원 목록과 가장 최신 연봉 정보를 출력SELECT a.emp_no, CONCAT(a.first_name, ' ', a.last_name) AS emp_name, b.salaryFROM employees AS aJOIN dept_emp AS c ON a.emp_no = c.emp_noJOIN departments AS d ON c.dept_no = d.dept_noJOIN salaries AS b ON a.emp_no = b.emp_noWHERE d.dept_name = 'Development' AND c.to_date > now() AND b.from_date = (..