CS/Database

[SQL] SQL 기초 정리 (문법 및 예제)

공영재 2025. 1. 7. 20:20

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;

 

loading