기본 질의문 (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을 통해 데이터베이스에서 정보를 효율적으로 추출하고, 데이터를 집계 및 정렬하며, 여러 테이블의 데이터를 결합하여 통찰력 있는 분석을 수행할 수 있습니다.