1) Data Definition Language (DDL)
2) Data Manipulation Language (DML)
3) Data Control Language (DCL)
4) Data Query Language (DQL)
5) Transaction Control Language (TCL)
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';
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에서 사용할 수 있어 문법적으로 유연성을 제공한다.