SELECT ~
: ์กฐํํ ์ปฌ๋ผ๋ช
์ ์ ํ
FROM ~
: ์กฐํํ ํ
์ด๋ธ๋ช
์ ์ง์ (์์น์ ํ
์ด๋ธ๋ช
์ ์
๋ ฅ)
WHERE ~
: ์ง์ํ ๋ ํ์ํ ์กฐ๊ฑด์ ์ค์
GROUP BY ~
: ํน์ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃน์ ์ง์ด ์ถ๋ ฅ
ORDER BY ~
: SELECT ๋ค์์ ์ค๋ ์ปฌ๋ผ ์ค ์ ๋ ฌ์ด ํ์ํ ๋ถ๋ถ์ ์ ๋ ฌ (๊ธฐ๋ณธ ์ค์ : ์ค๋ฆ์ฐจ์)
LIMIT ์ซ์
: Displayํ๊ณ ์ ํ๋ ํ์ ์๋ฅผ ์ค์
#ํ
์ด๋ธ์ ๋ชจ๋ ์ปฌ๋ผ๋ช
์ ์ถ์ถํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
SELECT *
FROM ํ
์ด๋ธ ๋ช
#์ถ์ถํ๊ณ ์ถ์ ์ปฌ๋ผ๋ช
์ ์ผํ๋ก ์ฐ๊ฒฐํ์ฌ ๋์ด
SELECT ์ปฌ๋ผ1, ์ปฌ๋ผ2, ์ปฌ๋ผ3,...
FROM ํ
์ด๋ธ๋ช
#์ ํํ ์ปฌ๋ผ์ ์ ์ฒด ๊ฐ์ด ์๋, ์ค๋ณต์ ์ ๊ฑฐํ ๊ฐ๋ง ๋ถ๋ฌ์จ๋ค.
SELECT DISTINCT ์ปฌ๋ผ1
FROM ํ
์ด๋ธ๋ช
#์ปฌ๋ผ 1,2,3์ ์กฐํฉ ์ค์์ uniqueํ ๊ฐ๋ง ๋ถ๋ฌ์จ๋ค.
SELECT DISTINCT ์ปฌ๋ผ1, ์ปฌ๋ผ2, ์ปฌ๋ผ3
FROM ํ
์ด๋ธ๋ช
#COUNT(*): ํ
์ด๋ธ ์ ์ฒด์ row ์๋ฅผ ์ถ๋ ฅ, COUNT(์ปฌ๋ผ): ํด๋น์ปฌ๋ผ์ ์ ์ฒด row ์๋ฅผ ์ถ๋ ฅ
SELECT COUNT(*), COUNT(์ปฌ๋ผ)
FROM ํ
์ด๋ธ๋ช
#ํด๋น ์ปฌ๋ผ์ ์ ์ฒด row์๊ฐ ์๋, ์ค๋ณต ๊ฐ์ ์ ๊ฑฐํ row ์ ์ถ๋ ฅ
SELECT(DISTINCT ์ปฌ๋ผ)
FROM ํ
์ด๋ธ๋ช
#์ปฌ๋ผ์ ๋์ด๊ณผ COUNT๊ฐ ํจ๊ป์ฐ์ด๋ฉด GROUP BY ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ค์ผํจ
SELECT ์ปฌ๋ผ1, COUNT(*)
FROM ํ
์ด๋ธ๋ช
GROUP BY ์ปฌ๋ผ1
#์ปฌ๋ผ1*์ปฌ๋ผ2์ ์กฐํฉ์ ๋ํ ์ปฌ๋ผ3์ row์๋ฅผ ์ถ๋ ฅ
SELECT ์ปฌ๋ผ1, ์ปฌ๋ผ2,COUNT(DISTINCT ์ปฌ๋ผ3)
FROM ํ
์ด๋ธ๋ช
GROUP BY ์ปฌ๋ผ 1, ์ปฌ๋ผ2
์ค๋ณต์ ๊ฑฐ
#1. GROUP BY๋ก ์ค๋ณต์ ๊ฑฐ
SELECT ์ด๋ฆ FROM ๋์๋์ถ๋ด์ญ
GROUP BY ์ด๋ฆ;
#2. DISTINCT๋ก ์ค๋ณต์ ๊ฑฐ
SELECT DISTINCT ์ด๋ฆ FROM ๋์๋์ถ๋ด์ญ;
์ ๋ ฌ
#์ค๋ฆ์ฐจ์
SELECT * FROM ๋์๋์ถ๋ด์ญ
ORDER BY ID ;
#๋ด๋ฆผ์ฐจ์
SELECT * FROM ๋์๋์ถ๋ด์ญ
ORDER BY ID DESC ;
๋ช๊ฐ์ row๋ง ์กฐํ
SELECT * FROM ๋์๋์ถ๋ด์ญ LIMIT 5 ;
๋ฌธ์ํ์ ํน์ ๋ถ๋ถ์ ๋ผ์ด ๋ด๋ ํจ์
LEFT(๋ฌธ์ํ์ปฌ๋ผ,๊ธธ์ด)
: ์ผ์ชฝ๋ถํฐ ์ํ๋ ๊ธธ์ด๋งํผ ์๋ฅด๋ ํจ์RIGHT(๋ฌธ์ํ์ปฌ๋ผ,๊ธธ์ด)
: ์ค๋ฅธ์ชฝ๋ถํฐ ์ํ๋ ๊ธธ์ด๋งํผ ์๋ฅด๋ ํจ์SUBSTR(๋ฌธ์ํ์ปฌ๋ผ,๊ธธ์ด)
orSUBSTRING()
: ์ผ์ ์์ญ๋งํผ์ ์๋ผ๋ ํจ์
#6์ผ -> 6
#๋ง์ง๋ง ์๋ฆฌ๋ง ์ญ์
SELECT *, SUBSTR(๋์ถ์ผ์, 1, (length(๋์ถ์ผ์)-1)) AS ๋์ถ์ผ์_์์
FROM ๋์๋์ถ๋ด์ญ2;
๋ฐ์ดํฐ ํ์
๋ณ๊ฒฝ: CAST()
SELECT *, CAST(SUBSTR(๋์ถ์ผ์, 1, (length(๋์ถ์ผ์)-1)) AS INT) AS ๋์ถ์ผ์_์์
FROM ๋์๋์ถ๋ด์ญ2 ;
ํ๊ท : AVG()
SELECT ID, ์ด๋ฆ, ๋์ถ๋
์
, AVG(CAST(SUBSTR(๋์ถ์ผ์, 1, (length(๋์ถ์ผ์)-1)) AS INT)) AS ๋์ถ์ผ์_ํ๊ท
FROM ๋์๋์ถ๋ด์ญ2
GROUP BY 1,2,3;
WHERE ์
SELECT * FROM ๋์๋์ถ๋ด์ญ2
WHERE
์กฐ๊ฑด1
AND ์กฐ๊ฑด2
AND ์กฐ๊ฑด3
AND (์กฐ๊ฑด 4 OR ์กฐ๊ฑด5);
- ํน์ ๋ฌธ์๋ฅผ ํฌํจํ๋ row๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋
SELECT * FROM ๋์๋์ถ๋ด์ญ2
WHERE ์ด๋ฆ LIKE "๋ฌธ%" ;
- ํน์ ๊ธฐ๊ฐ ํน์ ํน์ ๋ ์ง์ ์ ๋๋ ์ดํ์ row๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋
SELECT * FROM ๋์๋์ถ๋ด์ญ
WHERE ๋์ถ์ผ >= "2020-06-01"
AND ๋์ถ์ผ <= "2020-06-07" ;
SELECT * FROM ๋์๋์ถ๋ด์ญ
WHERE ๋์ถ์ผ BETWEEN "2020-06-01" AND "2020-06-07" ;
- ํน์ ์ซ์ ์ด์ ๋๋ ์ดํ์ row๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋
SELECT *
, CAST(SUBSTR(๋์ถ์ผ์, 1, (length(๋์ถ์ผ์)-1)) AS INT) AS ๋์ถ์ผ์_์์
FROM ๋์๋์ถ๋ด์ญ2
WHERE ๋์ถ์ผ์_์์ > 5 ;
NULL
- NULL ์ด ์๋ ๋ฐ์ดํฐ๋ง
SELECT * FROM ๋์๋์ถ๋ด์ญ
WHERE ๋ฐ๋ฉ์ผ IS NOT NULL;
- NULL ์ธ ๋ฐ์ดํฐ๋ง
SELECT * FROM ๋์๋์ถ๋ด์ญ
WHERE ๋ฐ๋ฉ์ผ IS NULL ;
JOIN
- INNER JOIN
SELECT A.*, B.๋์๋ช
FROM ๋์ถ๋ด์ญ AS A
INNER JOIN ๋์๋ช
AS B
ON A.๋์ID = B.๋์ID;
- LEFT JOIN
SELECT A.*, B.๋์๋ช
FROM ๋์ถ๋ด์ญ AS A
LEFT JOIN ๋์๋ช
AS B
ON A.๋์ID = B.๋์ID;
- FULL OUTER JOIN
SELECT A.*, B.๋์๋ช
FROM ๋์ถ๋ด์ญ AS A
FULL OUTER JOIN ๋์๋ช
AS B
ON A.๋์ID = B.๋์ID
ORDER BY ๋์ID;
'Programming > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HackerRank] Basic Select : Japanese Cities' Attributes (MySQL) (0) | 2022.02.03 |
---|---|
[HackerRank] Basic Select : Select By ID (MySQL) (0) | 2022.02.03 |
[HackerRank] Basic Select : Select All (MySQL) (0) | 2022.02.03 |
SQLite (2) | 2021.11.16 |
MySQL ์ ๋ฆฌ (0) | 2021.01.25 |