목차
- 테이블(Table)이란?
- GROUP BY
- HAVING
- ORDER BY
- 테이블 관련 명령어
- 테이블에 정보 입력하기
테이블(Table)이란?
MySQL에서의 테이블은 데이터베이스에서 데이터를 저장하는 논리적인 공간으로, 테이블은 여러 열(Column)과 행(Row)으로 이루어져 있습니다. 각 열은 특정 유형의 데이터를 저장하고, 각 행은 데이터의 인스턴스를 나타냅니다. 즉, 테이블은 데이터의 구조와 레코드를 정의하며, 데이터를 검색, 삽입, 업데이트, 삭제하는 데 사용됩니다. 테이블은 SQL 쿼리를 통해 생성, 수정, 삭제할 수 있으며, 다른 테이블과 JOIN을 사용하여 관련 데이터를 가져올 수도 있습니다.
GROUP BY
SQL에서 `GROUP BY` 절은 특정 열(들)을 기준으로 데이터를 그룹화하고, 그룹별로 집계 함수를 적용하여 결과를 반환하는 데 사용됩니다. 집계 함수에는 `SUM`, `COUNT`, `AVG`, `MIN`, `MAX` 등이 포함됩니다.
예를 들어, 다음과 같은 `sales` 테이블이 있다고 가정해 보겠습니다.
product_id | sale_date | quantity |
1 | 2023-01-01 | 5 |
1 | 2023-01-02 | 3 |
2 | 2023-01-01 | 7 |
2 | 2023-01-03 | 2 |
3 | 2023-01-01 | 8 |
각 제품별로 총 판매량을 계산하려면 다음과 같이 `GROUP BY` 절을 사용할 수 있습니다.
SELECT product_id, SUM(quantity) as total_sales
FROM sales
GROUP BY product_id;
이 쿼리의 결과는 다음과 같습니다.
product_id | total_sales |
1 | 8 |
2 | 9 |
3 | 8 |
`GROUP BY` 절은 여러 열을 그룹화하는 데도 사용할 수 있습니다. 예를 들어, 제품별로 월별 판매량을 계산하려면 다음과 같이 작성할 수 있습니다.
SELECT product_id, EXTRACT(MONTH FROM sale_date) as sale_month, SUM(quantity) as total_sales
FROM sales
GROUP BY product_id, sale_month;
이 예제에서는 `EXTRACT` 함수를 사용하여 `sale_date`에서 월 정보를 추출하고, 그룹화에 사용했습니다.
HAVING
`HAVING` 절은 `GROUP BY` 절과 함께 사용되며, 그룹화된 결과에 대해 조건을 적용하여 필터링할 때 사용됩니다. 일반적으로 `HAVING` 절은 `GROUP BY` 절 다음에 위치하며, 집계 함수를 포함한 조건을 지정할 수 있습니다.
다음은 `sales` 테이블을 이용한 예시입니다.
product_id | sale_date | quantity |
1 | 2023-01-01 | 5 |
1 | 2023-01-02 | 3 |
2 | 2023-01-01 | 7 |
2 | 2023-01-03 | 2 |
3 | 2023-01-01 | 8 |
제품별로 총 판매량이 7개 이상인 경우만 조회하려면 `GROUP BY` 절과 `HAVING` 절을 함께 사용하면 됩니다.
SELECT product_id, SUM(quantity) as total_sales
FROM sales
GROUP BY product_id
HAVING total_sales >= 7;
이 쿼리의 결과는 다음과 같습니다.
product_id | total_sales |
2 | 9 |
3 | 8 |
여기서 `HAVING` 절은 그룹화된 결과에서 `total_sales`가 7 이상인 것만 선택하도록 지정하고 있습니다. `HAVING` 절에 집계 함수를 직접 사용하는 것도 가능합니다.
SELECT product_id, SUM(quantity) as total_sales
FROM sales
GROUP BY product_id
HAVING SUM(quantity) >= 7;
이 예제에서도 동일한 결과가 반환됩니다.
ORDER BY
SQL의 "ORDER BY" 절은 하나 이상의 열을 기준으로 쿼리 결과를 오름차순 또는 내림차순으로 정렬하는 데 사용됩니다. 기본적으로 정렬은 오름차순으로 수행됩니다. 결과를 내림차순으로 정렬하려면 "DESC" 키워드를 사용할 수 있습니다. 예를 들어, 총 판매량이 7개 이상인 제품을 판매량 기준으로 내림차순 정렬하려면 다음과 같이 작성할 수 있습니다.
SELECT product_id, SUM(quantity) as total_sales
FROM sales
GROUP BY product_id
HAVING total_sales >= 7
ORDER BY total_sales DESC;
결과는 다음과 같습니다.
product_id | total_sales |
2 | 9 |
3 | 8 |
이 쿼리는 제품별로 그룹화하고(`GROUP BY`), 총 판매량이 7 이상인 것만 선택(`HAVING`)한 후, 총 판매량 기준으로 내림차순 정렬(`ORDER BY`)합니다.
`HAVING` 절에 직접 집계 함수를 사용하는 경우에도 `ORDER BY` 절을 추가할 수 있습니다.
SELECT product_id, SUM(quantity) as total_sales
FROM sales
GROUP BY product_id
HAVING SUM(quantity) >= 7
ORDER BY total_sales DESC;
이 예제에서도 동일한 결과가 반환됩니다.
테이블 관련 명령어
SQL에서 테이블을 관리하는 주요 작업은 테이블 생성, 수정, 삭제입니다. 아래에서 각 작업에 대한 설명과 예시를 제공하겠습니다.
1. 테이블 생성 (CREATE TABLE):
테이블을 생성하려면 CREATE TABLE 문을 사용하고, 열 이름과 데이터 유형을 지정해야 합니다. 기본 키와 외래 키 등의 제약 조건도 추가할 수 있습니다.
예시:
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100) UNIQUE,
hire_date DATE
);
2. 테이블 수정 (ALTER TABLE):
테이블을 수정하려면 ALTER TABLE 문을 사용하고, 열을 추가, 삭제 또는 수정할 수 있습니다. 제약 조건도 변경할 수 있습니다.
예시 1(열 추가):
ALTER TABLE employees
ADD phone_number VARCHAR(20);
예시 2(열 수정):
ALTER TABLE employees
MODIFY email VARCHAR(150) UNIQUE;
예시 3(열 삭제):
ALTER TABLE employees
DROP COLUMN phone_number;
3. 테이블 삭제 (DROP TABLE):
테이블을 삭제하려면 DROP TABLE 문을 사용합니다. 이 작업은 되돌릴 수 없으므로 주의하세요.
예시:
DROP TABLE employees;
이러한 명령은 데이터베이스 관리 시스템(DBMS)에서 테이블 구조를 관리할 수 있게 해줍니다. 어떤 작업을 수행할지 결정할 때에는 데이터 요구 사항과 목표를 고려해야 합니다.
테이블에 정보 입력하기
SQL에서 검색 결과를 기존 테이블에 입력하거나 새로운 테이블을 생성하며 입력하는 방법은 다음과 같습니다.
1. 기존 테이블에 검색 결과를 입력하기 (INSERT INTO SELECT):
INSERT INTO SELECT 문을 사용하여 검색 결과를 기존 테이블에 추가할 수 있습니다. 이 방법을 사용하려면 원본 테이블에서 검색된 열과 대상 테이블의 열이 일치해야 합니다.
예시:
INSERT INTO target_table (column1, column2, column3)
SELECT column1, column2, column3
FROM source_table
WHERE condition;
2. 새로운 테이블을 생성하며 검색 결과를 입력하기 (CREATE TABLE AS SELECT):
CREATE TABLE AS SELECT 문을 사용하여 검색 결과를 새 테이블에 입력할 수 있습니다. 이 작업은 원본 테이블에서 검색된 데이터를 기반으로 새로운 테이블을 생성하며, 구조와 인덱스는 복사되지 않습니다.
예시:
CREATE TABLE new_table
AS
SELECT column1, column2, column3
FROM source_table
WHERE condition;
이러한 방법을 사용하여 SQL 쿼리를 기반으로 기존 테이블에 데이터를 추가하거나 새 테이블을 생성할 수 있습니다. 어떤 방법을 사용할지는 요구 사항과 목표에 따라 결정하게 됩니다.
'SQL' 카테고리의 다른 글
[SQL] MySQL 서브 쿼리(SUBQUERY)란? (0) | 2023.04.23 |
---|---|
[SQL] SQL JOIN의 종류와 예시 (0) | 2023.04.23 |
[MySQL] MySQL 쿼리(Query)와 다양한 연산자 (2) | 2023.04.22 |
[MySQL] DB 타입과 MySQL 언어 (0) | 2023.04.22 |
[MySQL] MySQL Community버전(무료) 다운로드 하기 (0) | 2023.04.22 |