SQL
SQL에는 DDL(정의어) / DML(조작어) / DCL(제어어)가 있다.
- DDL : CREATE 테이블 / ALTER 테이블 / DROP 테이블
- DML : SELECT / INSERT / UPDATE / DELETE
- DCL : GRANT (=권한 부여) / REVOKE (=권한 삭제)
기본적인 문법은 아래와 같다.
SELECT (중복 제거 시 DISTINCT) 속성들 FROM 테이블 WHERE 조건
GROUP BY(일반적으로 집계함수와 함께) 속성 HAVING(일반적으로 GROUP BY와 함께) 조건
ORDER BY 속성(기본 오름차순, 내림차순 시 DESC);
- 예제
1. 특정 직원의 급여 정보 조회
- employees 테이블에서 **부서가 "Sales"**인 직원들의 **이름(name)**과 **급여(salary)**를 조회하세요.
SELECT name, salary FROM employees WHERE department = 'Sales';
2. 급여가 평균 이상인 직원 수
SELECT COUNT(*) FROM employees WHERE (SELECT AVG(salary) FROM employees) <= salary;
# 서브쿼리를 통해 평균 급여를 구한 뒤 count 수행
3. 부서별 평균 급여 및 조건
- 각 부서별로 평균 급여를 구하고, 평균 급여가 5000 이상인 부서만 조회하세요.
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) >= 5000;
4. 평균 급여 이상인 부서와 해당 부서의 평균 급여 조회
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) >= (SELECT AVG(salary) FROM employees);
5. 두 테이블 JOIN - 주로 id 값이 있는 경우 활용
- INNER JOIN : 테이블에서 일치하는 데이터만
SELECT s.name, e.course
FROM students s
INNER JOIN enrollments e ON s.student_id = e.student_id;
- FULL OUTER JOIN : 두 테이블의 모든 데이터 join. 없으면 NULL로 표시됨.
SELECT s.name, e.course
FROM students s
FULL OUTER JOIN enrollments e ON s.student_id = e.student_id;
'CS > Database' 카테고리의 다른 글
[데이터베이스] 13. NoSQL and Big Data Storage Systems (Ch. 24, 25) (0) | 2023.12.10 |
---|---|
[데이터베이스] 12. Distributed Database Concepts (Ch. 23) (0) | 2023.12.10 |
[데이터베이스] 11. Database recovery techniques (Ch. 22) (0) | 2023.12.10 |
[데이터베이스] 10. Concurrency Control Techniques (Ch. 21) (0) | 2023.12.09 |
[데이터베이스] 8. Functional Dependencies and Normalization for Relational Databases (Ch. 14) (0) | 2023.12.09 |