[SQLite] SELECT
SQLite에서 SELECT
문은 데이터베이스로부터 데이터를 조회하기 위해 사용되는 가장 기본적인 SQL 명령어 중 하나입니다. 이 명령어를 사용하여 특정 조건에 맞는 데이터를 검색하고, 결과를 정렬하며, 조회되는 데이터의 양을 제한할 수 있습니다. 아래의 설명과 예시를 통해 SELECT
문의 주요 구성 요소를 살펴보겠습니다.
SELECT FROM
SELECT FROM
구문은 데이터베이스의 특정 테이블로부터 하나 이상의 열(column)을 선택하여 데이터를 조회합니다.
SELECT Name, Age FROM Employees;
이 예시는 Employees
테이블에서 Name
과 Age
열의 데이터를 조회합니다.
ORDER BY
ORDER BY
구문은 조회 결과의 순서를 지정할 때 사용됩니다. 기본적으로 오름차순으로 정렬되며, DESC
키워드를 사용하여 내림차순으로 정렬할 수 있습니다.
SELECT Name, Age FROM Employees ORDER BY Age DESC;
이 예시는 Employees
테이블에서 Age
열을 기준으로 내림차순으로 데이터를 정렬하여 Name
과 Age
를 조회합니다.
WHERE
WHERE
구문은 특정 조건에 부합하는 데이터만을 조회할 때 사용됩니다. 이를 통해 필요한 데이터만을 정확하게 필터링할 수 있습니다.
SELECT Name, Age FROM Employees WHERE Age >= 30;
이 예시는 Employees
테이블에서 Age
가 30 이상인 직원의 Name
과 Age
만을 조회합니다.
LIMIT와 OFFSET
LIMIT
구문은 조회되는 데이터의 최대 행 수를 제한합니다. OFFSET
구문은 몇 번째 행부터 데이터를 조회할지 지정할 때 사용됩니다. OFFSET
은 주로 LIMIT
와 함께 사용됩니다.
SELECT Name, Age FROM Employees ORDER BY Age LIMIT 5 OFFSET 2;
이 예시는 Age
를 기준으로 정렬한 결과에서 3번째 행부터 시작하여 최대 5개의 행을 조회합니다. 즉, 2번째 행까지는 건너뛰고 그 다음 행부터 데이터를 가져옵니다.
SQLite에서 GROUP BY
, HAVING
, SELECT ALL
, SELECT DISTINCT
는 데이터 집합을 분석하고 특정 조건에 맞는 데이터를 선택적으로 조회하는 데 사용됩니다. 이러한 구문들은 데이터를 그룹화하고, 그룹화된 데이터에 조건을 적용하며, 중복된 결과를 제어하는 데 유용합니다.
SELECT DISTINCT
SELECT DISTINCT
구문은 중복된 결과를 제거하고 유니크한 데이터만을 선택할 때 사용됩니다. 같은 값을 가진 데이터가 여러 개 있는 경우, 그 중 하나만 결과에 포함됩니다.
SELECT DISTINCT Department FROM Employees;
이 예시는 Employees
테이블에서 중복 없이 모든 부서를 조회합니다.
SELECT DISTINCT
의 반대는 SELECT ALL
로, 이는 중복된 결과를 모두 포함하여 조회합니다. SELECT ALL
은 기본적으로 SELECT
구문과 동일합니다.
GROUP BY
GROUP BY
구문은 선택된 데이터를 특정 열의 값에 따라 그룹화합니다. 주로 집계 함수(AVG, COUNT, MAX, MIN, SUM 등)와 함께 사용되어, 각 그룹에 대한 통계 정보를 계산할 때 사용됩니다.
SELECT Department, COUNT(*) AS EmployeeCount
FROM Employees
GROUP BY Department;
이 예시는 Employees
테이블에서 각 Department
별로 직원 수를 계산합니다.
HAVING
HAVING
구문은 GROUP BY
로 그룹화된 결과에 조건을 적용할 때 사용됩니다. WHERE
구문과 비슷하지만, GROUP BY
로 생성된 그룹에 대한 조건을 지정하는 데 사용됩니다.
SELECT Department, COUNT(*) AS EmployeeCount
FROM Employees
GROUP BY Department
HAVING COUNT(*) > 5;
이 예시는 직원 수가 5명을 초과하는 부서만을 조회합니다.
UNION
UNION
연산자는 두 개 이상의 SELECT
문의 결과를 합칠 때 사용됩니다. 중복된 행은 제거되며, 결과는 유니크한 행들만 포함합니다. UNION ALL
을 사용하면 중복된 행도 포함하여 모든 결과를 합칩니다.
두 개의 테이블 EmployeesA
와 EmployeesB
가 있다고 가정할 때, 각 테이블에서 직원의 이름을 조회하고 이를 합치려면 다음과 같이 UNION
을 사용할 수 있습니다.
SELECT Name FROM EmployeesA
UNION
SELECT Name FROM EmployeesB;
이 쿼리는 EmployeesA
와 EmployeesB
테이블에서 모든 유니크한 직원 이름을 합쳐서 조회합니다.
VALUES
VALUES
는 하나 이상의 행을 직접 생성하여 결과 집합을 만들 때 사용됩니다. 주로 테스트 데이터를 만들거나, INSERT
문에서 여러 행을 한 번에 삽입할 때 사용됩니다.
임시로 직원 이름과 나이를 포함하는 데이터 집합을 생성하려면 다음과 같이 VALUES
를 사용할 수 있습니다.
VALUES ('John Doe', 30), ('Jane Doe', 25);
VALUES
로 생성된 결과 집합을 UNION
과 함께 사용하여 데이터를 합치는 경우도 있습니다.
SELECT Name, Age FROM Employees
UNION ALL
VALUES ('John Doe', 30), ('Jane Doe', 25);
이 예시에서는 Employees
테이블의 모든 직원 정보와 함께, 추가로 두 명의 직원 정보를 포함하는 결과 집합을 생성합니다.