예제를 위한 테이블 생성
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50),
salary INT,
hire_date DATE
);
CREATE TABLE departments (
id INT PRIMARY KEY,
name VARCHAR(50)
);
INSERT INTO employees (id, name, department, salary, hire_date) VALUES
(1, 'Alice', 'Engineering', 70000, '2020-01-15'),
(2, 'Bob', 'Engineering', 80000, '2019-03-12'),
(3, 'Charlie', 'Sales', 50000, '2021-08-23'),
(4, 'David', 'Sales', 55000, '2021-06-12'),
(5, 'Eva', 'HR', 60000, '2022-02-20');
INSERT INTO departments (id, name) VALUES
(1, 'Engineering'),
(2, 'Sales'),
(3, 'HR');
1,2,3번을 조합하여 SELECT문 작성
1.SELECT (최종적으로 조회할 혹은 화면에 나타낼 칼럼)
AVG(), MAX(), MIN() 등 사용가능
2.FROM (선택할 테이블)
3.WHERE (칼럼조건) or GROUP BY (그룹별) or ORDER BY (정렬)
예제를 통한 SELECT 정리
급여가 60000 이상인 직원 조회
SELECT name, salary
FROM employees
WHERE salary >= 60000;
부서별 평균 급여 조회
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;
2021년에 입사한 직원 조회
SELECT name, hire_date
FROM employees
WHERE YEAR(hire_date) = 2021;
급여가 높은 순(내림차순)으로 직원 정렬
SELECT name, salary
FROM employees
ORDER BY salary DESC;
부서별 최고 급여 조회
SELECT department, name, salary
FROM employees e1
WHERE salary = (
SELECT MAX(salary)
FROM employees e2
WHERE e1.department = e2.department
);
'데이터베이스' 카테고리의 다른 글
SELECT문 처리 우선순위 정리 (0) | 2024.11.17 |
---|---|
인덱스 index (1) | 2024.11.16 |
동시성 제어 (0) | 2024.04.12 |
트랜잭션 (Transaction) (1) | 2024.04.09 |
스키마 (Schema) (0) | 2024.04.08 |