โถ๏ธSELECT
(๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ)
๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ด ํ
์ด๋ธ์์ ์ํ๋ ๋ฐ์ดํฐ ์ถ์ถํ๋ ๋ช
๋ น์ด
SELECT ์ ์ฌ์ฉํด์ผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ํ์ฉํ ์ ์๋ค.
"์คํ์์"→ From๋ค์์ Select
--๊ธฐ๋ณธ๊ตฌ๋ฌธ
SELECT
์กฐํํ๋ ค๋ ์ด์ด๋ฆ
FROM
ํ
์ด๋ธ_์ด๋ฆ;
-- ์ฐ์ฐ์: ์ซ์ ๋ฟ๋ง ์๋๋ผ ๋ฌธ์๋ ๋น๊ต ๊ฐ๋ฅ
SELECT
*
FROM
city
WHERE
city.Name < "C"; (c๋ณด๋ค ์์ ๋ฌธ์์ด๋ง ์ ํ)
SELECT
*
FROM
city
WHERE
city.Name < "C"
AND
city.CountryCode = "KOR"; (country code๊ฐ kor ์ด๋ฉด์ city name์ด c๋ณด๋ค ์์ ๋ฌธ์์ด)
โถ๏ธAS(alias)
์ํ๋ ์ด๋ฆ์ ๋ถ์ผ ์ ์๋ค.
์๋ต ๊ฐ๋ฅ
→์ด์ ์ด๋ฆ์ด ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ, ๋ณ์นญ ์ฌ์ฉํ๋ฉด ์ข๋ค
→ํ
์ด๋ธ ์ด๋ฆ, ์ด ์ด๋ฆ, WHERE์ ์ฌ์ฉ ๊ฐ๋ฅ
→-๊ธธ์ด์ ๋ณด๊ธฐ ํ๋ ์ปฌ๋ผ์ด๋ ๊ณ์ฐ์์ด ๋ณต์กํ ์ปฌ๋ผ์ ๋ณ์นญ์ ์ฌ์ฉํ๋ฉด ์ข๋ค.
→๋ณ์นญ ์ฌ์ฉ์ ์์ ๋ฐ์ดํ(' ')์ฌ์ฉ์ ๊ถ์ฅ
โ
์์
city ํ ์ด๋ธ์์ ๋์์ด๋ฆ, ๊ตญ๊ฐ์ฝ๋, ์ธ๊ตฌ์์ alias๋ถ์ฌ์ ์กฐํ
SELECT
c.Name AS '์ง์ญ๋ช
',
c.CountryCode AS '๊ตญ๊ฐ์ฝ๋',
c.Population AS '์ธ๊ตฌ์'
FROM
city AS c;
= ์คํ ๊ฒฐ๊ณผ

โถ๏ธWHERE
์กฐ๊ฑด์ ์ง์ ํ๋ WHERE์
์ํ๋ ๋ฐ์ดํฐ๋ง ๋ณด๊ณ ์ถ์ ๋
์กฐํํ๋ ค๋ ๊ฒฐ๊ณผ์ ํน์ ํ ์กฐ๊ฑด์ ์ค์ ์ํ๋ ๋ฐ์ดํฐ๋ง ๋ณด๊ณ ์ถ์ ๋ ์ฌ์ฉ
WHERE์ ์์ด ์กฐํํ๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ ์กฐํ(ํ
์ด๋ธ์ ๋ชจ๋ ํ)
"์คํ์์"→ FROM -WHERE-SELECT
-- ๊ธฐ๋ณธ๊ตฌ๋ฌธ
SELECT
์กฐํํ๋ ค๋ ์ด์ด๋ฆ
FROM
ํ
์ด๋ธ_์ด๋ฆ;
WHERE
์กฐ๊ฑด;
โ ์์
cityํ ์ด๋ธ์์ ๊ตญ๊ฐ ์ฝ๋๊ฐ USA์ธ ๋์์ด๋ฆ ์ธ๊ตฌ์๋ฅผ ์กฐํ
SELECT
C.Name AS '๋์์ด๋ฆ',
C.Population AS '์ธ๊ตฌ์'
FROM
city AS C
WHERE
C.CountryCode ="USA";
= ์คํ ๊ฒฐ๊ณผ

โถ๏ธBETWEEN ~ AND
๋ฒ์๋ฅผ ์ง์
โ ์์
cityํ ์ด๋ธ์์ ์ธ๊ตฌ์๊ฐ 3๋ฐฑ๋ง์์ 5๋ฐฑ๋ง ์ฌ์ด์ธ ์ ์ฒด ์ปฌ๋ผ์ ์กฐํ
SELECT
*
FROM
city AS C
WHERE
C.Population BETWEEN 3000000 AND 5000000;
=์คํ๊ฒฐ๊ณผ

โถ๏ธ์งํฉ, IN( )
OR: ์ฌ์ฉ์ ํ๋ ์ฉ ๋น๊ตํด ์ฑ๋ฅ์ด ์ ํ
IN : ์ฌ์ฉ์ ๊ฐ๊ฒฐํ๊ฒ ์์ฑ ๊ฐ๋ฅ,
โ ์์
๊ตญ๊ฐ ์ฝ๋๊ฐ KOR์ด๊ฑฐ๋ USA์ด๊ฑฐ๋ NLD์ธ ๋์์ด๋ฆ, ๊ตญ๊ฐ์ฝ๋, ์ธ๊ตฌ์ ์กฐํ
(IN ์ฌ์ฉ์ ํจ์ฌ ์ฟผ๋ฆฌ๋ฌธ์ด ๊ฐ๊ฒฐํด์ง)
-- OR ์ฌ์ฉ์
SELECT
c.Name AS '๋์์ด๋ฆ',
c.CountryCode AS '๋์์ฝ๋',
c.Population AS '์ธ๊ตฌ์'
FROM
city AS c
WHERE
c.CountryCode = "KOR"
or
c.CountryCode = "USA"
or
c.CountryCode = "NLD";
-- IN ์ฌ์ฉ์
SELECT
c.Name AS '๋์์ด๋ฆ',
c.CountryCode AS '๋์์ฝ๋',
c.Population AS '์ธ๊ตฌ์'
FROM
city AS c
WHERE
c.CountryCode IN ("KOR","USA","NLD");
=์คํ๊ฒฐ๊ณผ (๋๊ฐ ์คํ๊ฒฐ๊ณผ๋ ๊ฐ์)

โถ๏ธLIKE
๋ฌธ์์ด์ ๋ด์ฉ์ ๊ฒ์
LIKE ํค์๋๋ฅผ ์ฌ์ฉํด ๋ฌธ์๋ฅผ ํํฐ๋ง ํ๋ค
% ๊ธฐํธ๋ ๊ทธ์๋ฆฌ์ ์ด๋ค ๊ฐ์ด ๋ค์ด์๋ ์๊ด์๋ค๋ ์๋ฏธ
EX) LIKE'ํ๊ตญ%' --> ํ๊ตญ์ผ๋ก ์์ํ๋ ๋ฌธ์์ด์ ์ฐพ๋๋ฐ, ํ๊ตญ ๋ค์ ์๋ฌด๊ฑฐ๋ ๋ถ์ด๋ ์๊ด์์(์์ ๋ถ์ผ๋ฉด ์์ฐพ์์ง)
EX) LIKE'%ํ๊ตญ%' --> ์ ๋ค ์ด๋ค ๋ฌธ์์ด์ด ์๋ ์๊ด์๋๋ฐ ํ๊ตญ์ด๋ผ๋ ๋จ์ด๊ฐ ๋ค์ด๊ฐ ๋ฌธ์์ด์ ๊ฒ์
→LIKE์ฌํ
LIKE'ํ๊ตญ___'(์ธ๋๋ฐ3๊ฐ) = 5๊ธ์ ํ์, ํ๊ตญ000
LIKE'_๊ตญ'(์ธ๋๋ฐ1๊ฐ) = 2๊ธ์ ํ์ , 0๊ตญ
LIKE'__ํํฌ'(์ธ๋๋ฐ2๊ฐ) = 4๊ธ์ ํ์ , 00ํํฌ
→ํน์ ๋ฌธ์ ์ ์ธ ํ์
LIKE'a%' = a+์๋ฌด ๋ฌธ์์ด
NOT LIKE'a%' = a๋ก ์์ํ์ง ์๋ + ์๋ฌด ๋ฌธ์์ด
โ ์์
city ํ ์ด๋ธ์์ ๊ตญ๊ฐ์ฝ๋์ ๋ท๊ธ์๊ฐ 'OR'์ธ ๋์์ด๋ฆ ๋์์ฝ๋ ์ธ๊ตฌ์ ์กฐํ
-- ๊ธฐ๋ณธ๊ตฌ๋ฌธ
SELECT
์กฐํ ํ ์ด ์ด๋ฆ
FROM
ํ
์ด๋ธ ์ด๋ฆ
WHERE
์กฐํ ํ ์ปฌ๋ผ ๋ช
LIKE
'ใ
ใ
%';
-- ์์
SELECT
c.Name AS '๋์์ด๋ฆ',
c.CountryCode AS '๋์์ฝ๋',
c.Population AS '์ธ๊ตฌ์'
FROM
city AS c
WHERE
c.CountryCode
LIKE
'%OR';
=์คํ๊ฒฐ๊ณผ

โถ๏ธDISTINCT
์ค๋ณต์ ์ ๊ฑฐํจ
SQL์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ณต์ ์ ๊ฑฐ ํ์ง ์์ (์กฐํ์)
๊ฐ์ ๊ฐ์ด ์ฌ๋ฌ๊ฐ ๋์ฌ ์ ์์
DISTINT๋ ํ๋์ ROW๊ธฐ์ค์ผ๋ก ์ ์ฒด์ปฌ๋ผ์ ๋น๊ต
"๋๊ฐ์ ROW๊ฐ์ด ๋์ผ"ํด์ผ ์ ๊ฑฐ ๊ฐ๋ฅ
โ ์์
1)cityํ ์ด๋ธ์์ ๊ตญ๊ฐ์ฝ๋๊ฐ ์ค๋ณต๋ ๊ฐ์ ์ ๊ฑฐํด ์กฐํ
2)cityํ ์ด๋ธ์์ ๊ตญ๊ฐ์ฝ๋์ ์ธ๊ตฌ์๊ฐ ์ค๋ณต๋ ๊ฐ์ ์ ๊ฑฐํด ์กฐํ
SELECT DISTINCT
c.CountryCode
FROM
city AS c;
SELECT DISTINCT
c.CountryCode,
c.Population
FROM
city AS c;
=์คํ๊ฒฐ๊ณผ

โถ๏ธLIMIT
์กฐํ๋๋ ๋ฐ์ดํฐ ์ ํ
LIMIT ์ซ์;
โ ์์ (LIKE LIMIT ์ฌ์ฉ)
cityํ ์ด๋ธ์์ ๊ตญ๊ฐ์ฝ๋๊ฐ A,E,I๋ก ์์ํ์ง ์๊ณ A,O,U๋ก ๋๋์ง ์ ๊ตญ๊ฐ์ด๋ฆ๊ณผ ๊ตญ๊ฐ ์ฝ๋ 100๊ฐ๋ง ์กฐํ
SELECT
c.Name,
c.CountryCode
FROM
city AS c
WHERE
c.CountryCode NOT LIKE 'A%'
AND
c.CountryCode NOT LIKE 'E%'
AND
c.CountryCode NOT LIKE 'I%'
AND
c.CountryCode NOT LIKE '%A'
AND
c.CountryCode NOT LIKE '%O'
AND
c.CountryCode NOT LIKE '%U'
LIMIT 100;
=์คํ๊ฒฐ๊ณผ

โถ๏ธORDER BY
๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌ
SELECT~FROM~WHERE ํต์ฌ๊ตฌ๋ฌธ
๋ถ๊ฐ์ ์ผ๋ก ์ถ๋ ฅ ๊ฒฐ๊ณผ์ ๋ํด ์ค๋ณต์ ๊ฑฐ, ์ถ๋ ฅ๊ฐฏ์ ์ ํ, ๋ฐ์ดํฐ ์ ๋ ฌ ๊ฐ๋ฅํจ
๊ธฐ๋ณธ: ์ค๋ฆ์ฐจ์ (๊ธฐ๋ณธ)
๋ด๋ฆผ์ฐจ์ : DESC(Descending)
์์น: SELECT~FROM ๋ค์์ ORDER BY ์์น
→์ ๋ ฌ ๋๋ค
-์๋ฌด์กฐ๊ฑด ์์ด ORDER BY ์ฌ์ฉ ์ , PK ์์๋๋ก ์ ๋ ฌ
-RAND()ํจ์ (๋๋คํจ์) ์ฌ์ฉํด ๋๋ค ์ถ๋ ฅ ๊ฐ๋ฅ
→์ ๋ ฌ๊ธฐ์ค์ ์ฌ๋ฌ๊ฐ ๊ฐ๋ฅ
ORDER BY ์ ๋ ฌ๊ธฐ์ค1,์ ๋ ฌ๊ธฐ์ค2;
--1์ ๋จผ์ ใฑใดใท ์์ผ๋ก ์ ๋ ฌ
--๋ค์ 2๋ฅผ ๊ธฐ์ค์ผ๋ก ใฑใดใท ์์ผ๋ก ์ ๋ ฌ
-- ์ค๋ฆ์ฐจ์
SELECT
c.Name,
c.CountryCode
FROM
city AS c
ORDER BY c.CountryCode;
-- ๋ด๋ฆผ์ฐจ์
SELECT
c.Name,
c.CountryCode
FROM
city AS c
ORDER BY c.CountryCode desc;
=์คํ๊ฒฐ๊ณผ

โถ๏ธGROUP BY
๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์ฃผ๋ ์ญํ
์์ฑ ๊ฐ์ด ๊ฐ์ ๊ฐ๋ผ๋ฆฌ ๊ทธ๋ฃน์ ๋ง๋ค ์ ์๋ค
WHERE์ ์ด ์๋ HAVING์ ๋ก ๊ทธ๋ฃน์ถ๋ ฅ "์กฐ๊ฑด์" ์์ฑ ๊ฐ๋ฅ
--๊ธฐ๋ณธ๊ตฌ๋ฌธ
SELECT
์ด_์ด๋ฆ
FROM
ํ
์ด๋ธ_์ด๋ฆ
WHERE
์กฐ๊ฑด์
GROUP BY
๊ทธ๋ฃน_์ง์_์ด_์ด๋ฆ
HAVING
์กฐ๊ฑด์
ORDER BY
์ ๋ ฌ_์ด_์ด๋ฆ
LIMIT ์ซ์;
--์์
SELECT
c.CountryCode,
SUM(c.Population) AS hap
FROM
city AS c
GROUP BY c.CountryCode
having hap > 200000;
โถ๏ธ์ง๊ณํจ์(Aggregate function)
์ข
๋ฅ
1. ํฉ๊ณ ๊ตฌํ๋ SUM( )
2. ํ๊ท ์ ๊ตฌํ๋ AVG( )
3. ์ต์๊ฐ ์ต๋๊ฐ MIN( ) MAX( )
-- SUM
SELECT
c.CountryCode,
SUM(c.Population) AS hap
FROM
city AS c
GROUP BY c.CountryCode
having hap > 200000;
-- AVG
SELECT
c.CountryCode,
AVG(c.Population)
FROM
city AS c
GROUP BY c.CountryCode;
--MIN , MAX
SELECT
MIN(c.Population) AS '์ต์',
MAX(c.Population) AS '์ต๋'
FROM
city AS c;
=์คํ๊ฒฐ๊ณผ

4. ํ์ ๊ฐ์๋ฅผ ์ธ๋ COUNT( ): COUNT๋ ํ
์ด๋ธ ๋ชจ๋ ํ์ ๊ฐ์๋ฅผ ์ผ๋ค. ๋๋ ํน์ ์ปฌ๋ผ์ ๊ฐ์๋ฅผ ์ธ๊ณ ์ถ์ ๋
-- ์ ์ฒด ํ ๊ฐ์ ์นด์ดํธ
SELECT
COUNT(*)
FROM
city AS c
WHERE
c.CountryCode ="KOR";
-- ํน์ ์นผ๋ผ ๊ฐ์ ์นด์ดํธ
SELECT
COUNT(c.Name)
FROM
city AS c
WHERE
c.CountryCode ="KOR";
/*
๋๊ฐ์ ๊ฐ์ด ๋์ผ
=NULL๊ฐ์ด ์์ด์ ๊ฐ์
=NULL๊ฐ์ด ์์ผ๋ฉด ๊ฐ์ด ๋ฌ๋ผ์ง
=COUNT์ ํน์ ์ปฌ๋ผ๋ช
์ ์์ฑํ๋ฉด NULL์ ์ธ
=COUNT์ *์ ์์ฑํ๋ฉด NULLํฌํจ
*/
-- COUNT์ DISTINCT ํจ๊ป ์ฌ์ฉํ๊ธฐ
SELECT
COUNT(c.CountryCode)
FROM
city AS c;
= DISTINCT ์ฌ์ฉ ์ํ ๋ ์ถ๋ ฅ ๊ฐ 4079
SELECT
COUNT(distinct c.CountryCode)
FROM
city AS c;
= DISTINCT ์ฌ์ฉ ์ ์ถ๋ ฅ ๊ฐ 232 (์ค๋ณต ๊ฐ ์ ๊ฑฐ)
=์คํ๊ฒฐ๊ณผ

โถ๏ธCASE ~ WHEN ~ THEN ~ ELSE END
WHEN ๊ณผ THEN์ ํ ์์ด๋ค.
WHEN ๊ณผ THEN์ ์ฌ๋ฌ ๊ฐ ์กด์ฌํ ์ ์๋ค.
ELSE๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ๋ง์ง ์์ ๋, ์ถ๋ ฅํ ๊ฐ์ ์์ฑํ ์ ์๋ค.
โ ์์
cityํ ์ด๋ธ์์ ๋์ ์ด๋ฆ๊ณผ ์ธ๊ตฌ ์๊ฐ 9๋ฐฑ๋ง๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด '๋๋์์ ๋๋ค' ์ถ๋ ฅ, 5๋ฐฑ๋ง ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด '์ค๊ธ๋์ ์ ๋๋ค'์ถ๋ ฅ ๋๋จธ์ง๋ '์์ ๋์'๋ก ์ถ๋ ฅํ ์ปฌ๋ผ๋ช ์กฐํ
--๊ธฐ๋ณธ ๊ตฌ๋ฌธ
SELECT
์กฐํ ํ ์ด ์ด๋ฆ,
(CASE
WHEN ์กฐ๊ฑด์
THEN '์ถ๋ ฅ๊ฐ'
ELSE '์์ ๋์' -- ์กฐ๊ฑด์ ๋ง์ง ์์ ๋ ์ถ๋ ฅ๊ฐ
END) AS '๋ณ์นญ'
FROM
ํ
์ด๋ธ ์ด๋ฆ
WHERE
์กฐ๊ฑด์
LIMIT ์ ํ;
--์์
SELECT
C.Name,
(CASE
WHEN C.Population >= 9000000
THEN '๋๋์ ์
๋๋ค.'
WHEN C.Population >= 5000000
THEN '์ค๊ธ๋์ ์
๋๋ค.'
ELSE '์์ ๋์'
END) AS '๋์ํ์
'
FROM
city AS C
WHERE
C.CountryCode ="KOR"
LIMIT 20;
=์คํ๊ฒฐ๊ณผ
