ANIMAL_INS ํ
์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ
์ด๋ธ์
๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข , ๋ณดํธ ์์์ผ, ๋ณดํธ ์์ ์ ์ํ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค. |
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
1) ์ต์๊ฐ ๊ตฌํ๊ธฐ
๋๋ฌผ ๋ณดํธ์์ ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ๋๋ฌผ์ ์ธ์ ๋ค์ด์๋์ง ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. |
SELECT datetime
FROM animal_ins
ORDER BY datetime
LIMIT 1;
๋ ์ง์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ฉด ๊ฐ์ฅ ์ค๋๋ ๋ ์ง๋ถํฐ ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋จ
๊ทธ ๋ฐ์ดํฐ ์ค ๊ฐ์ฅ ์ฒซ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ์ฌ ๊ฒฐ๊ณผ ๋์ถ !
2) ๋๋ฌผ ์ ๊ตฌํ๊ธฐ
๋๋ฌผ ๋ณดํธ์์ ๋๋ฌผ์ด ๋ช ๋ง๋ฆฌ ๋ค์ด์๋์ง ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. |
SELECT COUNT(*) AS count
FROM animal_ins;
3) ์ค๋ณต ์ ๊ฑฐํ๊ธฐ
๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ด๋ฆ์ ๋ช ๊ฐ์ธ์ง ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ์ด๋ฆ์ด NULL์ธ ๊ฒฝ์ฐ๋ ์ง๊ณํ์ง ์์ผ๋ฉฐ ์ค๋ณต๋๋ ์ด๋ฆ์ ํ๋๋ก ์นฉ๋๋ค. |
SELECT COUNT(DISTINCT(name)) AS count
FROM animal_ins
WHERE name IS NOT NULL;
์ด๋ฆ์ด NULL์ธ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ DISTINCT ์ ์ ์ด์ฉํ์ฌ ์ค๋ณต ์ ๊ฑฐ
4) ๊ณ ์์ด์ ๊ฐ๋ ๋ช ๋ง๋ฆฌ ์์๊น
๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ ์ค ๊ณ ์์ด์ ๊ฐ๊ฐ ๊ฐ๊ฐ ๋ช ๋ง๋ฆฌ์ธ์ง ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ณ ์์ด๋ฅผ ๊ฐ๋ณด๋ค ๋จผ์ ์กฐํํด์ฃผ์ธ์. |
SELECT animal_type
, COUNT(*) AS count
FROM animal_ins
GROUP BY animal_type
ORDER BY animal_type;
๋๋ฌผ ์ข (animal_type) ๋ณ๋ก ๊ทธ๋ฃนํ ํด์ค ํ,
์ค๋ฆ์ฐจ์ ์ ๋ ฌ ์กฐ๊ฑด์ ์ด์ฉํ์ฌ ๊ณ ์์ด๊ฐ ๊ฐ์์ง๋ณด๋ค ๋จผ์ ์ถ๋ ฅ๋๊ฒ ํจ ('c'at → 'd'og)
5) NULL ์ฒ๋ฆฌํ๊ธฐ
์
์ ๊ฒ์ํ์ ๋๋ฌผ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ค ํฉ๋๋ค. ๋๋ฌผ์ ์๋ฌผ ์ข , ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ์์ด๋ ์์ผ๋ก ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ํ๋ก๊ทธ๋๋ฐ์ ๋ชจ๋ฅด๋ ์ฌ๋๋ค์ NULL์ด๋ผ๋ ๊ธฐํธ๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์ด๋ฆ์ "No name"์ผ๋ก ํ์ํด ์ฃผ์ธ์. |
SELECT animal_type
, IFNULL(name, 'No name') AS name
, sex_upon_intake
FROM animal_ins
ORDER BY animal_id;
MySQL์์ ์ปฌ๋ผ์ ๊ฐ์ด NULL์ธ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ ํจ์์๋
IFNULL, COALESCE ๋ฑ์ ํจ์๊ฐ ์กด์ฌํจ
์ด ๋ฌธ์ ์์๋ ์ด๋ฆ ์ปฌ๋ผ์ด NULL ๊ฐ์ผ ๊ฒฝ์ฐ์
๋ค๋ฅธ ๋ฌธ์์ด๋ก ์นํํด์ฃผ์ด์ผํ๋ฏ๋ก INFULL ํจ์ ์ฌ์ฉ !
-
IFNULL : ํด๋น ์ปฌ๋ผ์ ๊ฐ์ด NULL์ผ ๋, ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ถ๋ ฅํด์ฃผ๋ ํจ์
SELECT IFNULL(์ปฌ๋ผ๋ช , "NULL์ผ ๊ฒฝ์ฐ ๋์ฒด ๊ฐ" FROM ํ ์ด๋ธ๋ช ; |
-
COALESCE : ์ง์ ํ ํํ์๋ค ์ค NULL์ด ์๋ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ ํจ์
SELECT COALESCE(์ปฌ๋ผ๋ช 1, ์ปฌ๋ผ๋ช 1์ด NULL์ธ ๊ฒฝ์ฐ ๋์ฒด ๊ฐ) FROM ํ ์ด๋ธ๋ช ; |
์ด ๋, ํ๋์ ํ๋ ๊ฐ ์ธ์๋ ์ฌ๋ฌ ์ปฌ๋ผ์ ์ง์ ํ์ฌ ์ฐ์์ ์ผ๋ก๋ ํ์ฉํ ์ ์์
SELECT COALESCE(์ปฌ๋ผ๋ช 1, ์ปฌ๋ผ๋ช 2, ์ปฌ๋ผ๋ช 3) FROM ํ ์ด๋ธ๋ช ; |
6) ๋๋ช ๋๋ฌผ ์ ์ฐพ๊ธฐ
๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ ์ด๋ฆ ์ค ๋ ๋ฒ ์ด์ ์ฐ์ธ ์ด๋ฆ๊ณผ ํด๋น ์ด๋ฆ์ด ์ฐ์ธ ํ์๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์ง๊ณ์์ ์ ์ธํ๋ฉฐ, ๊ฒฐ๊ณผ๋ ์ด๋ฆ ์์ผ๋ก ์กฐํํด์ฃผ์ธ์. |
SELECT name
, COUNT(*) AS count
FROM animal_ins
WHERE name IS NOT NULL
GROUP BY name
HAVING COUNT(name) >= 2
ORDER BY name;
์ด๋ฆ์ด ์กด์ฌํ๋ ๋๋ฌผ์ ๋ํด์ (WHERE name IS NOT NULL)
์ด๋ฆ๋ณ ๊ทธ๋ฃน์ ์ง์ด์ค ๋ค ์ด๋ฆ๊ณผ ์นด์ดํธ ์ถ๋ ฅ !
์ด๋ GROUP BY์ ํด๋นํ๋ ์กฐ๊ฑด์ ์ฃผ๊ธฐ ์ํด์ WHERE ์ ์ด ์๋ HAVING ์ ์ฌ์ฉ !
-
WHERE vs HAVING : WHERE ์ ์์๋ ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง HAVING ์ ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
7) ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ
๋ณดํธ์์์๋ ๋ช ์์ ์
์์ด ๊ฐ์ฅ ํ๋ฐํ๊ฒ ์ผ์ด๋๋์ง ์์๋ณด๋ ค ํฉ๋๋ค. 09:00๋ถํฐ 19:59๊น์ง, ๊ฐ ์๊ฐ๋ณ๋ก ์ ์์ด ๋ช ๊ฑด์ด๋ ๋ฐ์ํ๋์ง ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์๊ฐ๋ ์์ผ๋ก ์ ๋ ฌํด์ผํฉ๋๋ค. |
SELECT HOUR(datetime)
, COUNT(*) AS count
FROM animal_outs
WHERE HOUR(datetime) >= 9
AND HOUR(datetime) <= 19
GROUP BY HOUR(datetime)
ORDER BY HOUR(datetime);โ
๋ ์ง ๋ฐ์ดํฐ์์ ์๊ฐ ๋ฐ์ดํฐ๋ง ์ถ์ถํ๊ธฐ ์ํด HOUR ํจ์ ์ฌ์ฉ !
-
YEAR(๋ ์ง) : ์ฐ๋ ์ถ์ถ
-
MONTH(๋ ์ง) : ์ ์ถ์ถ
-
DAY(๋ ์ง) : ์ผ ์ถ์ถ
-
HOUR(๋ ์ง) : ์๊ฐ ์ถ์ถ
-
MINUTE(๋ ์ง) : ๋ถ ์ถ์ถ
-
SECOND(๋ ์ง) : ์ด ์ถ์ถ
8) ๋ฃจ์์ ์๋ผ ์ฐพ๊ธฐ
๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ ์ค ์ด๋ฆ์ด Lucy, Ella, Pickle, Sabrina, Mitty์ธ ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์์ด๋ ์์ผ๋ก ์กฐํํด์ฃผ์ธ์. |
SELECT animal_id
, name
, sex_upon_intake
FROM animal_ins
WHERE name IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY animal_id;
์ฌ๋ฌ ๊ฐ์ ํฌํจํด์ผ ํ๊ธฐ ๋๋ฌธ์
OR ์ ์ ์ฌ์ฉํ์ง ์๊ณ IN ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ์กฐ๊ฑด์ ๋ถ์ฌ -
9) ์ด๋ฆ์ el์ด ๋ค์ด๊ฐ๋ ๋๋ฌผ ์ฐพ๊ธฐ
๋ณดํธ์์ ๋์๊ฐ์ ํ ๋จธ๋๊ฐ ๊ธฐ๋ฅด๋ ๊ฐ๋ฅผ ์ฐพ๋ ์ฌ๋์ด ์ฐพ์์์ต๋๋ค. ์ด ์ฌ๋์ด ๋งํ๊ธธ ํ ๋จธ๋๊ฐ ๊ธฐ๋ฅด๋ ๊ฐ ์ด๋ฆ์ 'el'์ด ๋ค์ด๊ฐ๋ค๊ณ ํฉ๋๋ค. ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ ์ด๋ฆ ์ค, ์ด๋ฆ์ 'EL'์ด ๋ค์ด๊ฐ๋ ๊ฐ์ ์์ด๋์ ์ด๋ฆ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์ด๋ฆ ์์ผ๋ก ์กฐํํด์ฃผ์ธ์. ๋จ, ์ด๋ฆ์ ๋์๋ฌธ์๋ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. |
SELECT animal_id
, name
FROM animal_ins
WHERE name LIKE '%EL%'
AND animal_type = 'Dog'
ORDER BY name;
10) ์ค์ฑํ ์ฌ๋ถ ํ์ ํ๊ธฐ
๋ณดํธ์์ ๋๋ฌผ์ด ์ค์ฑํ๋์๋์ง ์๋์ง ํ์
ํ๋ ค ํฉ๋๋ค. ์ค์ฑํ๋ ๋๋ฌผ์ SEX_UPON_INTAKE ์ปฌ๋ผ์ 'Neutered' ๋๋ 'Sprayed'๋ผ๋ ๋จ์ด๊ฐ ๋ค์ด์์ต๋๋ค. ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ, ์ค์ฑํ ์ฌ๋ถ๋ฅผ ์์ด๋ ์์ผ๋ก ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ์ค์ฑํ๊ฐ ๋์ด์๋ค๋ฉด 'O', ์๋๋ผ๋ฉด 'X'๋ผ๊ณ ํ์ํด์ฃผ์ธ์. |
SELECT animal_id
, name
, CASE
WHEN sex_upon_intake LIKE '%Neutered%'
OR sex_upon_intake LIKE '%Spayed%'
THEN 'O'
ELSE 'X'
END AS ์ค์ฑํ
FROM animal_ins
ORDER BY animal_id;
๋ค์ค ์กฐ๊ฑด์ ์ฌ์ฉํ๊ธฐ ์ํด CASE WHEN Function ์ฌ์ฉ !
11) DATETIME์์ DATE๋ก ํ ๋ณํ
ANIMAL_INS ํ
์ด๋ธ์ ๋ฑ๋ก๋ ๋ชจ๋ ๋ ์ฝ๋์ ๋ํด, ๊ฐ ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ, ๋ค์ด์จ ๋ ์ง๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์์ด๋ ์์ผ๋ก ์กฐํํด์ผ ํฉ๋๋ค. |
SELECT animal_id
, name
, DATE_FORMAT(datetime, '%Y-%m-%d') AS ๋ ์ง
FROM animal_ins
ORDER BY animal_id;
MySQL์์๋ DATE_FORMAT์ ์ฌ์ฉํ๋ฉด ๋ ์ง ํ์์ ์ค์ ํ ์ ์์
-
DATE_FORMAT(๋ ์ง, ํ์) : ๋ ์ง๋ฅผ ์ง์ ํ ํ์์ผ๋ก ์ถ๋ ฅ
๊ตฌ๋ถ๊ธฐํธ | ์ญํ | ๊ตฌ๋ถ๊ธฐํธ | ์ญํ |
%Y | 4์๋ฆฌ ๋ ๋ | %m | ์ซ์ ์ (๋์๋ฆฌ) |
%y | 2์๋ฆฌ ๋ ๋ | %c | ์ซ์ ์ (ํ์๋ฆฌ๋ ํ์๋ฆฌ) |
%M | ๊ธด ์ (์๋ฌธ) | %d | ์ผ์ (๋์๋ฆฌ) |
%b | ์งง์ ์ (์๋ฌธ) | %e | ์ผ์ (ํ์๋ฆฌ๋ ํ์๋ฆฌ) |
%W | ๊ธด ์์ผ (์๋ฌธ) | %l | ์๊ฐ (12์๊ฐ) |
%a | ์งง์ ์์ผ (์๋ฌธ) | %H | ์๊ฐ (24์๊ฐ) |
%i | ๋ถ | %r | hh:mm:ss AM, PM |
%T | hh:mm:SS | %S | ์ด |
'๐ป ๊ณต๋ถ (IT) > ๐ฉ๐ปโ๐ป ์ฝ๋ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] Level 1 ๊ธฐ๋ณธ ๋ฌธ์ (0) | 2021.03.30 |
---|---|
[JAVA] ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (0) | 2021.03.29 |