지역별 주류 판매 데이터 분석 - SQL

dpwl·2024년 6월 16일
0

Data Analysis with SQL

목록 보기
111/120

1. SQL Query의 종류와 동작

1) Data Definition Language (DDL)

  • 데이터를 정의할 때 사용하는 언어
  • 테이블을 만드는 CREATE, 테이블을 제거하는 DROP 등

2) Data Manipulation Language (DML)

  • 데이터베이스에 데이터를 저장할 때 사용하는 언어
  • 새로운 데이터를 추가하는 INSERT, 데이터를 삭제하는 DELETE나, 변경하는 UPDATE 등

3) Data Control Language (DCL)

  • 데이터베이스에 대한 접근 권한과 관련된 문법

4) Data Query Language (DQL)

  • 정해진 Schema 내에서 query할 수 있는 언어
  • SELECT가 DQL에 해당
  • DQL을 DML의 일부분으로 취급하기도함

5) Transaction Control Language (TCL)

  • DML을 거친 데이터의 변경사항을 수정
  • COMMIT, ROLLBACK 등

2. 유용한 기초 Query문

USE [schema];	-- default로 사용할 schema 설정
USE mydb;
SHOW [필요한 정보];	-- DB, table 등의 정보를 알고 싶을 때 사용
SHOW DATABASES;	-- Database 목록

SHOW TABLES FROM mydb;	-- 특정 Database에 있는 Table 목록

SHOW COLUMNS FROM mydb.city_data;	-- 특정 table의 정보
SELECT *
FROM INFORMATION_SCHEMA.[table];	-- DB, table에 대한 정보를 담고 있는 DB
SELECT *
FROM INFORMATION_SCHEMA.TABLES;

SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'mydb';

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'city_data';

3. Query 실행 순서

SELECT a.City, a.ItemNumber, SUM(a.BottleSold) bottlesold_sum
FROM city_data a
JOIN item_meta b
On a.ItemNumber = b.ItemNumber
GROUP BY 1, 2	-- SELECT의 1, 2번 컬럼으로 group by
HAVING bottlesold_sum > 1000	-- SELECT의 bottlesold_sum으로 group 필터링
ORDER BY bottlesold_sum DESC
LIMIT 5;

GROUP BY와 ORDER BY 절에서 숫자 참조를 사용할 수 있습니다. 이 숫자는 SELECT 절에 있는 열의 순서를 참조한다.

SQL 실행 순서상 GROUP BY는 SELECT보다 먼저 실행되지만, SELECT의 컬럼을 숫자로 지정할 수 있는 이유는 무엇일까?

SELECT @@sql_mode;	-- ONLY_FULL_GROUP_BY

MySQL에서는 ONLY_FULL_GROUP_BY 모드가 설정되어 있을 때, SELECT 구문에서 지정된 필드를 GROUP BY에서 숫자로 참조할 수 있다. 이 모드에서는 SELECT에 명시된 컬럼 번호를 GROUP BY에서 사용할 수 있어 문법적으로 유연성을 제공한다.

profile
거북선통통통통

0개의 댓글