기본 질의문 (Basic Query Statements)
SQL의 기본 질의문은 데이터를 조회하는 데 사용됩니다. 가장 기본적인 질의문에는 SELECT, FROM, WHERE 절이 포함됩니다.
SELECT
SELECT 절은 테이블에서 조회할 열을 지정합니다. 모든 열을 조회하려면 *를 사용할 수 있습니다.
예제: 모든 열 조회
SELECT * FROM Employees;
이 쿼리는 Employees 테이블의 모든 열과 모든 행을 조회합니다.
FROM
FROM 절은 데이터를 조회할 테이블을 지정합니다. SELECT 절에서 조회할 열을 지정한 후, FROM 절을 사용하여 데이터가 저장된 테이블을 지정합니다.
예제: 특정 테이블에서 데이터 조회
SELECT Name, Position FROM Employees;
이 쿼리는 Employees 테이블에서 Name과 Position 열의 데이터를 조회합니다.
WHERE
WHERE 절은 데이터를 필터링하는 조건을 지정합니다. 특정 조건을 만족하는 데이터만을 조회할 때 사용됩니다.
예제: 조건에 따라 데이터 조회
SELECT Name, Salary FROM Employees WHERE Salary > 60000;
이 쿼리는 Salary가 60000보다 큰 직원의 Name과 Salary를 조회합니다.
집계 함수 (Aggregate Functions)
집계 함수는 데이터 집합에 대한 통계 정보를 계산하는 데 사용됩니다. 주요 집계 함수로는 COUNT, SUM, AVG, MAX, MIN이 있습니다.
COUNT
COUNT 함수는 지정된 열 또는 전체 행의 개수를 반환합니다.
예제: 행의 개수 조회
SELECT COUNT(*) AS TotalEmployees FROM Employees;
이 쿼리는 Employees 테이블의 총 행 수를 조회합니다.
SUM
SUM 함수는 지정된 열의 총합을 반환합니다.
예제: 총 급여 계산
SELECT SUM(Salary) AS TotalSalary FROM Employees;
이 쿼리는 Employees 테이블의 모든 직원 급여의 총합을 계산합니다.
AVG
AVG 함수는 지정된 열의 평균값을 반환합니다.
예제: 평균 급여 계산
SELECT AVG(Salary) AS AverageSalary FROM Employees;
이 쿼리는 Employees 테이블의 평균 급여를 계산합니다.
MAX
MAX 함수는 지정된 열의 최대값을 반환합니다.
예제: 최고 급여 조회
SELECT MAX(Salary) AS HighestSalary FROM Employees;
이 쿼리는 Employees 테이블의 최고 급여를 조회합니다.
MIN
MIN 함수는 지정된 열의 최소값을 반환합니다.
예제: 최저 급여 조회
SELECT MIN(Salary) AS LowestSalary FROM Employees;
이 쿼리는 Employees 테이블의 최저 급여를 조회합니다.
그룹화 (Grouping Data)
GROUP BY와 HAVING 절을 사용하여 데이터를 그룹화하고 집계할 수 있습니다. GROUP BY는 데이터를 그룹화하고, HAVING은 그룹화된 데이터에 조건을 적용합니다.
GROUP BY
GROUP BY 절은 하나 이상의 열을 기준으로 데이터를 그룹화합니다. 집계 함수와 함께 사용되어 그룹별로 집계된 결과를 반환합니다.
예제: 부서별 평균 급여 계산
SELECT DepartmentID, AVG(Salary) AS AverageSalary FROM Employees GROUP BY DepartmentID;
이 쿼리는 DepartmentID를 기준으로 데이터를 그룹화하고, 각 부서의 평균 급여를 계산합니다.
HAVING
HAVING 절은 GROUP BY로 그룹화된 결과에 조건을 적용합니다. WHERE 절과 유사하지만, GROUP BY 이후 집계된 데이터를 필터링할 때 사용됩니다.
예제: 평균 급여가 60000 이상인 부서 조회
SELECT DepartmentID, AVG(Salary) AS AverageSalary FROM Employees GROUP BY DepartmentID HAVING AVG(Salary) >= 60000;
이 쿼리는 DepartmentID를 기준으로 그룹화한 후, 평균 급여가 60000 이상인 부서만 조회합니다.
정렬 (Sorting Data)
ORDER BY 절은 쿼리 결과를 정렬하는 데 사용됩니다. 정렬 기준으로 하나 이상의 열을 지정할 수 있으며, 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있습니다.
ORDER BY
예제: 급여에 따라 오름차순 정렬
SELECT Name, Salary FROM Employees ORDER BY Salary ASC;
이 쿼리는 Employees 테이블의 데이터를 급여 기준으로 오름차순으로 정렬하여 조회합니다.
예제: 급여에 따라 내림차순 정렬
SELECT Name, Salary FROM Employees ORDER BY Salary DESC;
이 쿼리는 Employees 테이블의 데이터를 급여 기준으로 내림차순으로 정렬하여 조회합니다.
조인 (Joining Tables)
조인은 두 개 이상의 테이블을 연결하여 관련 데이터를 조회하는 데 사용됩니다. 주요 조인 유형으로는 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN이 있습니다.
INNER JOIN
INNER JOIN은 두 테이블에서 공통된 열의 값이 일치하는 행만을 반환합니다.
예제: INNER JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
이 쿼리는 Employees와 Departments 테이블을 DepartmentID를 기준으로 조인하여 직원의 이름과 부서 이름을 조회합니다.
LEFT JOIN
LEFT JOIN은 왼쪽 테이블의 모든 행과, 오른쪽 테이블에서 일치하는 행을 반환합니다. 오른쪽 테이블에 일치하는 행이 없으면 NULL 값이 반환됩니다.
예제: LEFT JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
이 쿼리는 Employees 테이블의 모든 행과, Departments 테이블에서 일치하는 부서 이름을 반환합니다. 부서가 없는 직원의 경우 DepartmentName은 NULL입니다.
RIGHT JOIN
RIGHT JOIN은 오른쪽 테이블의 모든 행과, 왼쪽 테이블에서 일치하는 행을 반환합니다. 왼쪽 테이블에 일치하는 행이 없으면 NULL 값이 반환됩니다.
예제: RIGHT JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
이 쿼리는 Departments 테이블의 모든 행과, Employees 테이블에서 일치하는 직원의 이름을 반환합니다. 직원이 없는 부서의 경우 Name은 NULL입니다.
FULL JOIN
FULL JOIN은 왼쪽과 오른쪽 테이블의 모든 행을 반환하며, 일치하지 않는 경우 NULL 값을 반환합니다. LEFT JOIN과 RIGHT JOIN의 조합과 유사합니다.
예제: FULL JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees FULL JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
이 쿼리는 Employees와 Departments 테이블의 모든 행을 반환합니다. 일치하는 행은 결합되어 반환되고, 일치하지 않는 경우에는 NULL 값이 포함됩니다.
결론 (Conclusion)
SQL 질의문은 데이터베이스에서 필요한 정보를 효율적으로 조회하고 조작하는 데 필수적인 도구입니다. 기본 질의문, 집계 함수, 그룹화, 정렬, 조인 등의 기능을 이해하고 활용하면, 복잡한 데이터 분석과 보고서를 생성할 수 있습니다. SQL을 통해 데이터베이스에서 정보를 효율적으로 추출하고, 데이터를 집계 및 정렬하며, 여러 테이블의 데이터를 결합하여 통찰력 있는 분석을 수행할 수 있습니다.
