본문 바로가기
정보처리기사/[이전] 필기&실기 개념

정보처리기사 정처기 | SQL SELECT 문법 - 데이터 조작어(Data Manipulation Language, DML) | 필기&실기 개념

by YUNI Heo 2023. 7. 10.
반응형

 

✅ SELECT 문법

https://www.programiz.com/sql/select

SELECT 문법은 데이터베이스 테이블에서 데이터를 조회하는 SQL 명령어입니다. SELECT 문을 사용하면 테이블에서 원하는 열(칼럼)의 데이터를 선택하고, 조건을 지정하여 필터링할 수 있습니다. SELECT 문은 데이터를 읽기만 하므로 원본 데이터는 변경되지 않습니다.

 

💡 SELECT 문장 구조

  • SELECT: 조회할 열의 목록을 지정합니다. 열1, 열2 등은 조회 결과에 포함될 열의 이름입니다.
  • FROM: 데이터를 조회할 테이블의 이름을 지정합니다.
  • WHERE: 조회할 행을 선택하는 조건을 지정합니다. 조건을 만족하는 행만 조회됩니다.
SELECT 열1, 열2, ...
FROM 테이블명
WHERE 조건절;

예를 들어, "Employees"라는 테이블에서 직급이 "Manager"인 직원들의 이름과 연봉을 조회하려면 다음과 같이 SELECT 문장을 작성할 수 있습니다.

SELECT 이름, 연봉
FROM Employees
WHERE 직급 = 'Manager';

 

💡 SELECT - WHERE IN 문법

SELECT - WHERE IN 문법은 특정 열의 값이 주어진 값 목록 중 하나와 일치하는지 여부를 확인하는 데 사용되는 SQL 문법입니다. IN 문법은 여러 개의 값을 비교하고자 할 때 유용하며, 비교 대상 값들은 쉼표로 구분하여 목록으로 제공됩니다.

SELECT 열1, 열2, ...
FROM 테이블명
WHERE 열 IN (값1, 값2, 값3, ...);

예를 들어, "Customers" 테이블에서 특정 국가에 속하는 고객들의 정보를 조회하고 싶다고 가정해봅시다. 이때 IN 문법을 사용하여 해당 국가들을 지정할 수 있습니다. "Customers" 테이블에서 "Country" 열의 값이 'USA', 'Canada', 'UK' 중 하나와 일치하는 고객들의 모든 열을 조회합니다. 결과로는 해당 국가에 속하는 고객들의 정보가 반환됩니다.

SELECT *
FROM Customers
WHERE Country IN ('USA', 'Canada', 'UK');

또 다른 예시로, "Products" 테이블에서 특정 카테고리에 속하는 제품들의 정보를 조회하고자 한다고 가정해봅시다. "Products" 테이블에서 "CategoryID" 열의 값이 1, 3, 5 중 하나와 일치하는 제품들의 모든 열을 조회합니다. 결과로는 해당 카테고리에 속하는 제품들의 정보가 반환됩니다.

SELECT *
FROM Products
WHERE CategoryID IN (1, 3, 5);

 

💡 SELECT - WHERE LIKE 문법

SELECT - WHERE LIKE 문법은 데이터베이스 테이블에서 특정한 문자열을 검색하기 위해 패턴 매칭을 수행하는 SQL 문법입니다. LIKE 절은 문자열을 비교하고자 할 때 유용하며, 다양한 패턴을 사용하여 원하는 문자열을 조회할 수 있습니다.

  • %: 0개 이상의 문자열을 나타냅니다.
  • _: 단일 문자를 나타냅니다.
SELECT 열1, 열2, ...
FROM 테이블명
WHERE 열 LIKE '패턴';

예를 들어, "Products" 테이블에서 "Product Name" 열에서 "Phone"으로 시작하는 제품들을 조회하려면 다음과 같이 SELECT LIKE 문장을 사용할 수 있습니다.

SELECT *
FROM Products
WHERE "Product Name" LIKE 'Phone%';

또 다른 예시로, "Customers" 테이블에서 "Customer Name" 열에서 "John"이 포함된 고객들의 정보를 조회하고자 한다고 가정해봅시다.

SELECT *
FROM Customers
WHERE "Customer Name" LIKE '%John%';

 

💡 SELECT - COUNT 문법

SELECT COUNT 문법은 주어진 열 또는 상수의 값의 수를 반환하는 SQL 문법입니다. COUNT 함수는 주어진 열의 행 수를 계산하여 결과를 반환합니다. NULL 값은 계산에서 제외됩니다. COUNT 함수는 특정 열의 행 수를 계산할 때 유용하게 사용될 수 있습니다. 예를 들어, 고유한 고객의 수, 주문의 수, 특정 조건을 만족하는 행의 수 등을 계산할 수 있습니다.

SELECT COUNT(열)
FROM 테이블명;

예를 들어, "Orders" 테이블에서 "CustomerID" 열의 고유한 값의 수를 조회하려면 다음과 같이 SELECT COUNT 문장을 사용할 수 있습니다. DISTINCT 키워드를 사용하여 중복을 제외한 고유한 값만을 계산하도록 지정하였습니다.

SELECT COUNT(DISTINCT CustomerID)
FROM Orders;

 

💡 SELECT - DISTINCT 문법

SELECT DISTINCT 문법은 중복된 값을 제거하여 유일한 값만을 선택하는 SQL 문법입니다. DISTINCT 키워드는 SELECT 문에 적용되며, 주어진 열(들)에 대해 중복된 값들을 하나로 압축하여 반환합니다. SELECT DISTINCT 문법은 특정 열의 중복된 값을 제거하여 유일한 값을 조회할 때 유용합니다. 다양한 열에 대해 중복을 제거하여 고유한 값을 선택할 수 있습니다.

SELECT DISTINCT 
    열1, -- 열1 선택
    열2 -- 열2 선택
FROM 
    테이블명; -- 테이블명에서 조회

예를 들어, "Customers" 테이블에서 "Country" 열의 중복을 제거하고 유일한 국가 값을 조회하고자 한다고 가정해봅시다. 이때 SELECT DISTINCT 문장을 사용하여 중복을 제거한 국가 값을 반환할 수 있습니다.

 

SELECT DISTINCT Country
FROM Customers;

 

💡 SELECT - GROUP BY 문법 (테이블 그룹화)

SELECT GROUP BY 문법은 SELECT 문에서 집계 함수(Aggregate Function)를 사용하여 그룹화된 데이터를 집계하는 SQL 문법입니다. 그룹화할 열을 지정하고, 집계 함수를 적용하여 그룹별로 집계된 결과를 얻을 수 있습니다. HAVING 절을 사용하여 그룹화된 결과에 대한 조건을 추가할 수도 있습니다.

SELECT
    열1, 집계함수(열2) -- 열1 그룹화, 열2 집계 함수를 적용하여 결과를 얻음
FROM
    테이블명 -- 테이블명에서 데이터를 가져옴
GROUP BY
    열1 -- 열1을 기준으로 그룹화
HAVING
    조건; -- 그룹화된 결과에 대한 조건

예를 들어, "Sales" 테이블에서 "Region" 별로 매출 총액을 조회하고자 한다고 가정해봅시다. 이때 SELECT GROUP BY 문장을 사용하여 "Region" 별로 그룹화된 매출 총액을 얻을 수 있습니다. "Sales" 테이블에서 "Region" 열을 기준으로 그룹화하고, SUM 함수를 사용하여 "SalesAmount" 열의 총합을 계산하여 "TotalSales"로 출력합니다. 결과로는 "Region" 별로 그룹화된 매출 총액이 반환됩니다.

 

SELECT Region, SUM(SalesAmount) AS TotalSales
FROM Sales
GROUP BY Region;

 

💡 SELECT - ORDER BY 문법 (테이블 정렬)

SELECT ORDER BY 문법은 SELECT 문으로 선택한 결과를 특정 열의 값을 기준으로 정렬하는 SQL 문법입니다. 오름차순(ASC)이나 내림차순(DESC)으로 정렬할 수 있습니다.

SELECT *
FROM 테이블명
ORDER BY 열1 [ASC | DESC], 열2 [ASC | DESC];

예를 들어, "Customers" 테이블에서 "CustomerName" 열을 기준으로 오름차순으로 정렬하여 조회하고자 한다고 가정해봅시다. 이때 SELECT ORDER BY 문장을 사용하여 "CustomerName" 열을 오름차순으로 정렬할 수 있습니다.

 

SELECT *
FROM Customers
ORDER BY CustomerName ASC;

또 다른 예시로, "Products" 테이블에서 "Price" 열을 내림차순으로 정렬하고, 동일한 가격의 제품들 중에서는 "ProductName" 열을 오름차순으로 정렬하고자 한다고 가정해봅시다. "Products" 테이블에서 모든 열을 조회하며, "Price" 열을 내림차순으로 정렬하고, 동일한 가격의 제품들은 "ProductName" 열을 오름차순으로 정렬하여 결과를 반환합니다.

SELECT *
FROM Products
ORDER BY Price DESC, ProductName ASC;

 

✅ SELECT 조인

조인을 활용하면 두 개 이상의 테이블을 연결하여 원하는 정보를 효율적으로 가져올 수 있습니다. 조인은 데이터베이스에서 매우 중요한 개념이므로 다양한 상황에 따라 적절한 조인 방법을 선택하여 데이터를 처리하는 것이 중요합니다.

 

💡 내부조인(Inner Join)

내부조인은 두 개의 테이블에서 조인 조건에 만족하는 행만을 결과로 반환하는 조인 방법입니다. 

-- 테이블1과 테이블2를 INNER JOIN하여 모든 열을 조회하는 SELECT 문장
SELECT *
FROM 테이블1
INNER JOIN 테이블2
ON 테이블1.열 = 테이블2.열; -- 테이블1과 테이블2의 열을 JOIN하여 조회

예를 들어, "Customers" 테이블과 "Orders" 테이블이 있을 때, 고객 정보와 해당 고객이 주문한 주문 정보를 조회하기 위해 INNER JOIN을 사용할 수 있습니다. "Customers" 테이블과 "Orders" 테이블을 CustomerID 열을 기준으로 INNER JOIN하여 모든 열을 조회합니다. 결과로는 고객과 그 고객이 주문한 주문 정보가 포함된 행들이 반환됩니다.

SELECT *
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

 

💡 왼쪽 외부조인(Left Outer Join)

왼쪽 외부조인은 왼쪽 테이블의 모든 행과 조인 조건에 만족하는 오른쪽 테이블의 행을 결합하는 조인 방법입니다. 

-- 테이블1과 테이블2를 LEFT OUTER JOIN하여 모든 열을 조회하는 SELECT 문장
SELECT *
FROM 테이블1
LEFT OUTER JOIN 테이블2
ON 테이블1.열 = 테이블2.열; -- 테이블1의 열과 테이블2의 열을 LEFT OUTER JOIN하여 조회

예를 들어, "Customers" 테이블과 "Orders" 테이블이 있을 때, 모든 고객과 그 고객이 주문한 주문 정보를 조회하기 위해 LEFT OUTER JOIN을 사용할 수 있습니다. "Customers" 테이블과 "Orders" 테이블을 CustomerID 열을 기준으로 LEFT OUTER JOIN하여 모든 열을 조회합니다. 결과로는 모든 고객의 정보와 그 고객이 주문한 주문 정보가 포함된 행들이 반환됩니다. 오른쪽 테이블인 "Orders" 테이블의 일부 행은 NULL 값이 될 수 있습니다.

SELECT *
FROM Customers
LEFT OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

 

💡 오른쪽 외부조인(Right Outer Join)

오른쪽 외부조인은 오른쪽 테이블의 모든 행과 조인 조건에 만족하는 왼쪽 테이블의 모든 행을 결합하는 조인 방법입니다. 

-- 테이블1과 테이블2를 RIGHT OUTER JOIN하여 모든 열을 조회하는 SELECT 문장
SELECT *
FROM 테이블1
RIGHT OUTER JOIN 테이블2
ON 테이블1.열 = 테이블2.열; -- 테이블2의 열과 테이블1의 열을 RIGHT OUTER JOIN하여 조회

예를 들어, "Customers" 테이블과 "Orders" 테이블이 있을 때, 모든 주문 정보와 해당 주문을 한 고객 정보를 조회하기 위해 RIGHT OUTER JOIN을 사용할 수 있습니다. "Customers" 테이블과 "Orders" 테이블을 CustomerID 열을 기준으로 RIGHT OUTER JOIN하여 모든 열을 조회합니다. 결과로는 모든 주문 정보와 해당 주문을 한 고객의 정보가 포함된 행들이 반환됩니다. 왼쪽 테이블인 "Customers" 테이블의 일부 행은 NULL 값이 될 수 있습니다.

SELECT *
FROM Customers
RIGHT OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

 

💡 완전 외부조인(Full Outer Join)

완전 외부조인은 왼쪽과 오른쪽 테이블에서 모든 행을 결합하는 조인 방법입니다. 

-- 테이블1과 테이블2를 FULL OUTER JOIN하여 모든 열을 조회하는 SELECT 문장.
SELECT *
FROM 테이블1
FULL OUTER JOIN 테이블2
ON 테이블1.열 = 테이블2.열; -- 테이블1과 테이블2를 FULL OUTER JOIN하여 조회

예를 들어, "Customers" 테이블과 "Orders" 테이블이 있을 때, 모든 고객 정보와 주문 정보를 조회하기 위해 FULL OUTER JOIN을 사용할 수 있습니다. "Customers" 테이블과 "Orders" 테이블을 CustomerID 열을 기준으로 FULL OUTER JOIN하여 모든 열을 조회합니다. 결과로는 모든 고객의 정보와 그 고객이 주문한 주문 정보가 포함된 행들이 반환됩니다. 양쪽 테이블의 일부 행은 NULL 값이 될 수 있습니다.

SELECT *
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

 

💡 교차조인(Cross Join)

교차조인은 두 개의 테이블에서 모든 가능한 조합을 결과로 반환하는 조인 방법입니다.

-- 테이블1과 테이블2를 CROSS JOIN하여 모든 열을 조회하는 SELECT 문장
SELECT *
FROM 테이블1
CROSS JOIN 테이블2; -- 테이블1과 테이블2를 CROSS JOIN하여 조회

예를 들어, "Customers" 테이블과 "Products" 테이블이 있을 때, 모든 고객과 모든 상품의 조합을 조회하기 위해 CROSS JOIN을 사용할 수 있습니다. "Customers" 테이블과 "Products" 테이블을 CROSS JOIN하여 모든 열을 조회합니다. 결과로는 모든 고객과 모든 상품의 조합이 포함된 행들이 반환됩니다.

SELECT *
FROM Customers
CROSS JOIN Products;

 

💡 셀프 조인(Self Join)

셀프 조인은 하나의 테이블에서 자기 자신을 조인하는 방법입니다. 

-- 테이블명 a와 테이블명 b를 WHERE 절을 사용하여 JOIN하여 열1과 열2를 조회하는 SELECT 문장
SELECT a.열1, b.열2
FROM 테이블명 a, 테이블명 b
WHERE a.조인_조건 = b.조인_조건; -- 테이블명 a와 테이블명 b를 WHERE 절을 사용하여 JOIN하여 조회

예를 들어, "Employees" 테이블이 있을 때, 직원과 해당 직원의 매니저를 조회하기 위해 SELF JOIN을 사용할 수 있습니다. "Employees" 테이블을 WHERE 절을 사용하여 SELF JOIN하여 직원과 그 직원의 매니저의 이름을 조회합니다. 결과로는 직원의 이름과 해당 직원의 매니저의 이름이 포함된 행들이 반환됩니다.

SELECT a.EmployeeName, b.EmployeeName AS ManagerName
FROM Employees a, Employees b
WHERE a.ManagerID = b.EmployeeID;
반응형