[SQL] MySQL ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๋ฐ ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ์ ๋ฆฌ
SQL(Structured Query Language) ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ (RDBMS) ์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํน์ ๋ชฉ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๊ณ , MySQL์ ์ธ๊ณ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์คํ์์ค์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์์คํ ์ ๋๋ค.
MySQL SELECT ์ ๊ธฐ๋ณธ์ ์ด์ง๋ง ์์ฃผ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค.
SELCET
SELECT [์ปฌ๋ผ๋ช ] FROM [ํ ์ด๋ธ๋ช ];
์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๋ ํ ์ด๋ธ์์ ๊ฐ์ ธ์ฌ์ง
SELECT * FROM [ํ ์ด๋ธ๋ช ];
→ *(astarisk) ๋ชจ๋ ์ปฌ๋ผ์ ๊ฐ์ ธ์ด
SELECT [์ปฌ๋ผ๋ช ] FROM [ํ ์ด๋ธ๋ช ] WHERE [์กฐ๊ฑด] ORDER BY [์ปฌ๋ผ๋ช ] DESC / ASC LIMIT ์ซ์ N;
→ ํ ์ด๋ธ์ ์ ํ๋ ์ปฌ๋ผ์ ํน์ ์กฐ๊ฑด์์ ์ปฌ๋ผ ๋ฐ์ดํฐ์ ๋ด๋ฆผ์ฐจ์ / ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์์ N๊ฐ ๋งํผ๋ง ์ถ๋ ฅ
SELECT [์ปฌ๋ผ๋ช ] FROM [ํ ์ด๋ธ๋ช ] WHERE [์ปฌ๋ผ๋ช ] IN "xx, yy";
→ ์ ํ๋ ์ปฌ๋ผ์ ํน์ ๋ฐ์ดํฐ๊ฐ "xx" ๋๋ "yy" ์ ํฌํจ๋๋ ๊ฒฝ์ฐ ์ถ๋ ฅ
SELECT [์ปฌ๋ผ๋ช ] FROM [ํ ์ด๋ธ๋ช ] WHERE [์ปฌ๋ผ๋ช ] LIKE "%xx%";
→ ์ ํ๋ ์ปฌ๋ผ์ ํน์ ๋ฐ์ดํฐ๊ฐ ~~xx~~ ์ ํํ์ธ ๊ฒฝ์ฐ ์ถ๋ ฅ
SELECT id,title,created,author FROM topic WHERE author='egoing' ORDER BY id DESC LIMIT 2;
→ topic ํ ์ด๋ธ์์ id, title, created, author ์ปฌ๋ผ ๋ฐ์ดํฐ๋ง, author ๊ฐ egoing์ธ ๊ฒฝ์ฐ๋ง, id ๊ฐ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก, ๋ฐ์ดํฐ๋ ์์2๊ฐ๋ง ์ถ๋ ฅํ๋๋ก
UPDATE topic SET description = 'Oracle is ...',title='Oracle' WHERE id=2;
→ id=2 ์ธ ํ์ ์ ๋ฐ์ดํธ
SELECT COUNT(์ปฌ๋ผ๋ช ) FROM [ํ ์ด๋ธ๋ช ];
→ ์ปฌ๋ผ ๋ฐ์ดํฐ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ
SELECT COUNT(*) FROM [ํ ์ด๋ธ๋ช ];
→ ์ ์ฒด ํ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ
SELECT COUNT(DISTINCT ์ปฌ๋ผ๋ช ) FROM [ํ ์ด๋ธ๋ช ];
→ ์ปฌ๋ผ ์ค๋ณต๋์ง ์๋ ๋ฐ์ดํฐ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ
SELECT [์ปฌ๋ผ๋ช ] FROM [ํ ์ด๋ธ๋ช ] GROUP BY [๊ทธ๋ฃนํํ ์ปฌ๋ผ๋ช ];
→ ์ปฌ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ์ฌ ์ถ๋ ฅ
SELECT [์ปฌ๋ผ๋ช ], COUNT(์ปฌ๋ผ๋ช ) AS cnt FROM [ํ ์ด๋ธ๋ช ] GROUP BY [์ปฌ๋ผ๋ช ] HAVING [์กฐ๊ฑด];
→ ์ปฌ๋ผ์ ๋ฐ์ดํฐ ์ด๋ฆ๊ณผ ๋ฐ์ดํฐ ๊ฐ์๋ฅผ ๋ฐ์ดํฐ ์ด๋ฆ์ ๋ฐ๋ผ ๊ทธ๋ฃนํํ์ฌ ์กฐ๊ฑด์ ๋ง๋ ๊ฒฝ์ฐ ์ถ๋ ฅ
SELECT IF(์กฐ๊ฑด, ์ฐธ์ผ ๋, ๊ฑฐ์ง์ผ ๋)
→ IF ์กฐ๊ฑด๋ฌธ
CASE WHEN ์กฐ๊ฑด THEN "๋ฐํ ๊ฐ" WHEN ์กฐ๊ฑด THEN "๋ฐํ ๊ฐ" ELSE "์กฐ๊ฑด์ ํด๋นํ์ง ์๋ ๊ฒฝ์ฐ ๋ฐํ๊ฐ" END
→ switch์ ์ ์ฌํ case ๋ฌธ
SET @๋ณ์์ด๋ฆ := ๋์ ๊ฐ SELECT @๋ณ์์ด๋ฆ := ๋์ ๊ฐ;
→ ๋ณ์ ์ฌ์ฉ๋ฒ
๋ค์ค ํ ์ด๋ธ ์ฐ์ฐ (Join)
- INNER JOIN: Table 1 ๊ณผ Table 2 ๋ชจ๋์ ๋งค์นญ๋๋ ํ๋ง ์ ํ
- LEFT JOIN: Table 1์ ๋ชจ๋ ํ๊ณผ Table 2 ์ค Table 1๊ณผ ๋งค์นญ๋๋ ํ๋ง ์ ํ
- RIGHT JOIN: Table 2์ ๋ชจ๋ ํ๊ณผ Table 1์์ Table 2์ ๋งค์น๋๋ ํ๋ง ์ ํ
- FULL (OUTER) JOIN: Table 1๊ณผ Table 2 ์์ชฝ ๋ชจ๋ ํ์ ์ ํ
SELECT * FROM A LEFT JOIN B ON A.id = B.id;
→ A์ B ํ ์ด๋ธ์ด ๋ถ๋ฆฌ๋์ด ์๋ ์ํ์์ ์ด๋ค์ ์ฐ๊ฒฐ์ฑ์ ํฌํจํ์ฌ ํจ๊ป ๋ณด์ฌ์ฃผ๊ธฐ ์ํด LEFT JOIN ์ผ๋ก A ํ ์ด๋ธ์ ๊ฐ์ ธ์ค๊ณ , Aํ ์ด๋ธ์ id ์ปฌ๋ผ๊ณผ Bํ ์ด๋ธ์ id ์ปฌ๋ผ์ ๋์ผํ๊ฒ ๋ณธ๋ค๋ ๊ธฐ์ค์ ๋ถ์ฌํ๋ค
*ํ ์ด๋ธ ๊ฐ ์ปฌ๋ผ ์ด๋ฆ์ด ์ค๋ณต๋๋ ๊ฒฝ์ฐ [ํ ์ด๋ธ.์ปฌ๋ผ์ด๋ฆ] ์ผ๋ก ์ฌ์ฉ(e.g. A.id, B.id)
ํ๋ก๊ทธ๋๋จธ์ค SQL ๊ณ ๋์ Kit ๋ฌธ์
ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข , ๋ณดํธ ์์์ผ, ๋ณดํธ ์์ ์ ์ํ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
ANIMAL_OUTS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์์ ์ ์ ๋ณด๋ธ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_OUTS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข , ์ ์์ผ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค. ANIMAL_OUTS ํ ์ด๋ธ์ ANIMAL_ID๋ ANIMAL_INS์ ANIMAL_ID์ ์ธ๋ ํค์ ๋๋ค.
1. SELECT
๋ชจ๋ ๋ ์ฝ๋ ์กฐํํ๊ธฐ
ANIMAL_INS ํ ์ด๋ธ๋ฅผ ANIMAL_ID ์์ผ๋ก ์กฐํ
SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
์ญ์ ์ ๋ ฌํ๊ธฐ
ANIMAL_ID ์ NAME์ ANIMAL_ID์ ์ญ์์ผ๋ก ์กฐํ
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC
์ํ ๋๋ฌผ ์ฐพ๊ธฐ
INTAKE_CONDITION์ด "Sick"์ธ ๋๋ฌผ์ ANIMAL_ID์ NAME์ ANIMAL_ID ์์ผ๋ก ์กฐํ
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = "Sick"
ORDER BY ANIMAL_ID
์ด๋ฆฐ ๋๋ฌผ ์ฐพ๊ธฐ
INTAKE_CONDITION์ด "Aged"๊ฐ ์๋ ๋๋ฌผ์ ANIMAL_ID์ NAME์ ANIMAL_ID ์์ผ๋ก ์กฐํ
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != "Aged"
ORDER BY ANIMAL_ID
๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ
ANIMAL_ID์ NAME์ ANIMAL_ID ์์ผ๋ก ์กฐํ
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
์ฌ๋ฌ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ
ANIMAL_ID, NAME, DATETIME์ NAME ์์ผ๋ก ์กฐํ. ๋จ, NAME์ด ๊ฐ์ ๋๋ฌผ ์ค์์ ๋ณดํธ๋ฅผ ๋์ค์ ์์ํ ๋๋ฌผ์ ๋จผ์ ๋ณด์ฌ์ค์ผํ๋ค
*DATETIME : ๋ณดํธ์์์ผ
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC
์์ n๊ฐ ๋ ์ฝ๋
๊ฐ์ฅ ๋จผ์ ๋ณดํธ๋ฅผ ์์ํ ๋๋ฌผ์ NAME ์ ์กฐํ
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
2. SUM, MAX, MIN
์ต๋๊ฐ ๊ตฌํ๊ธฐ
SELECT MAX(DATETIME)
FROM ANIMAL_INS
์ต์๊ฐ ๊ตฌํ๊ธฐ
SELECT MIN(DATETIME)
FROM ANIMAL_INS
๋๋ฌผ ์ ๊ตฌํ๊ธฐ
SELECT COUNT(*)
FROM ANIMAL_INS
์ค๋ณต ์ ๊ฑฐํ๊ธฐ
SELECT COUNT (DISTINCT NAME)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
3. GROUP BY
๊ณ ์์ด์ ๊ฐ๋ ๋ช ๋ง๋ฆฌ ์์๊น
๋๋ฌผ ์ค ๊ณ ์์ด์ ๊ฐ๊ฐ ๊ฐ๊ฐ ๋ช ๋ง๋ฆฌ ์ธ์ง ์กฐํ. ๊ณ ์์ด๋ฅผ ๊ฐ๋ณด๋ค ๋จผ์ ์กฐํ.
SELECT ANIMAL_TYPE, COUNT(*) AS COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
๋๋ช ๋๋ฌผ ์ ์ฐพ๊ธฐ
๋๋ฌผ ์ด๋ฆ ์ค ๋ ๋ฒ ์ด์ ์ฐ์ธ ์ด๋ฆ๊ณผ ํด๋น ์ด๋ฆ์ด ์ฐ์ธ ํ์๋ฅผ ์กฐํ. ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์ง๊ณ์์ ์ ์ธ, ๊ฒฐ๊ณผ๋ ์ด๋ฆ์.
SELECT NAME, COUNT(*) AS cnt
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING cnt>=2
ORDER BY NAME
์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(1)
09:00๋ถํฐ 19:59๊น์ง, ๊ฐ ์๊ฐ๋๋ณ๋ก ์ ์์ด ๋ช ๊ฑด์ด๋ ๋ฐ์ํ๋์ง ์กฐํ. ์ด๋ ๊ฒฐ๊ณผ๋ ์๊ฐ๋ ์์ผ๋ก ์ ๋ ฌ.
SELECT HOUR(DATETIME) AS hour, COUNT(*) AS cnt
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME)>= 9 AND HOUR(DATETIME)<20
GROUP BY hour
ORDER BY hour
์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2)
0์๋ถํฐ 23์๊น์ง, ๊ฐ ์๊ฐ๋๋ณ๋ก ์ ์์ด ๋ช ๊ฑด์ด๋ ๋ฐ์ํ๋์ง ์กฐํ. ์ด๋ ๊ฒฐ๊ณผ๋ ์๊ฐ๋ ์์ผ๋ก ์ ๋ ฌ.
SET @H:=-1;
SELECT (@H := @H + 1) AS Hour, (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @H) AS Count
FROM ANIMAL_OUTS
WHERE @H<23
4. IS NULL
์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์์ด๋
์ด๋ฆ์ด ์๋ ์ฑ๋ก ๋ค์ด์จ ๋๋ฌผ์ ID๋ฅผ ์กฐํ. ID ๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID
์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์์ด๋
์ด๋ฆ์ด ์๋ ์ฑ๋ก ๋ค์ด์จ ๋๋ฌผ์ ID๋ฅผ ์กฐํ. ID ๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID
NULL ์ฒ๋ฆฌํ๊ธฐ
๋๋ฌผ์ ์๋ฌผ ์ข , ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ANIMAL_ID ์์ผ๋ก ์กฐํ. ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์ด๋ฆ์ "No name"์ผ๋ก ํ์.
SELECT ANIMAL_TYPE, IF(NAME IS NULL,"No name",NAME) AS Name, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
5. JOIN
์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ
ANIMAL_INS์๋ ๊ธฐ๋ก์ด ์์ง๋ง, ANIMAL_OUT์๋ ๊ธฐ๋ก์ด ์๋ ID์ NAME ์กฐํ
SELECT B.ANIMAL_ID, B.NAME
FROM ANIMAL_OUTS AS B
LEFT JOIN ANIMAL_INS AS A ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.DATETIME IS NOT NULL AND A.DATETIME IS NULL
ORDER BY B.ANIMAL_ID
์์๋๋ฐ์ ์์์ต๋๋ค
ANIMAL_INS์ DATETIME์ด ANIMAL_OUTS ์ DATETIME ๋ณด๋ค ๋ฆ๋ ๊ฒฝ์ฐ ์กฐํ
SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS AS A
JOIN ANIMAL_OUTS AS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME
ORDER BY A.DATETIME
์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1)
ANIMAL_OUTS ์ DATETIME์ด ์๋ ๋๋ฌผ ์ค ANIMAL_INS์ DATETIEM์ด ๊ฐ์ฅ ๋น ๋ฅธ 3๋ง๋ฆฌ ์กฐํ
SELECT A.NAME, A.DATETIME
FROM ANIMAL_INS AS A
LEFT JOIN ANIMAL_OUTS AS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.DATETIME IS NULL
ORDER BY A.DATETIME
LIMIT 3
๋ณดํธ์์์ ์ค์ฑํํ ๋๋ฌผ
ANIMAL_INS์ SEX_UPON_INTAKE์ ANIMAL_OUTS ์ SEX_UPON_OUTCOME ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ์กฐํ
SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS AS A
LEFT JOIN ANIMAL_OUTS AS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.SEX_UPON_INTAKE != B.SEX_UPON_OUTCOME
ORDER BY A.ANIMAL_ID
6. String, Date
๋ฃจ์์ ์๋ผ ์ฐพ๊ธฐ
๋๋ฌผ ์ค ์ด๋ฆ์ด Lucy, Ella, Pickle, Rogan, Sabrina, Mitty์ธ ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ์กฐํ
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ("Lucy","Ella","Pickle","Rogan","Sabrina","Mitty")
ORDER BY ANIMAL_ID
์ด๋ฆ์ el์ด ๋ค์ด๊ฐ๋ ๋๋ฌผ ์ฐพ๊ธฐ
์ด๋ฆ์ "EL"์ด ๋ค์ด๊ฐ๋ ๊ฐ์ ์์ด๋์ ์ด๋ฆ์ ์กฐํ.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE "%EL%" AND ANIMAL_TYPE = "DOG"
ORDER BY NAME
์ค์ฑํ ์ฌ๋ถ ํ์ ํ๊ธฐ
์ค์ฑํ๋ ๋๋ฌผ์ SEX_UPON_INTAKE ์ปฌ๋ผ์ 'Neutered' ๋๋ 'Spayed'๋ผ๋ ๋จ์ด๊ฐ ๋ค์ด์์ต๋๋ค. ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ, ์ค์ฑํ ์ฌ๋ถ๋ฅผ ์์ด๋ ์์ผ๋ก ์กฐํํ๋ 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
์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(2)
์ ์์ ๊ฐ ๋๋ฌผ ์ค, ๋ณดํธ ๊ธฐ๊ฐ์ด ๊ฐ์ฅ ๊ธธ์๋ ๋๋ฌผ ๋ ๋ง๋ฆฌ์ ์์ด๋์ ์ด๋ฆ์ ์กฐํ. ๊ฒฐ๊ณผ๋ ๋ณดํธ ๊ธฐ๊ฐ์ด ๊ธด ์์ผ๋ก.
SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A
JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY B.DATETIME-A.DATETIME DESC
LIMIT 2
DATETIME์์ DATE๋ก ํ ๋ณํ
ํ ์ด๋ธ์ ๋ฑ๋ก๋ ๋ชจ๋ ๋ ์ฝ๋์ ๋ํด, ๊ฐ ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ, ๋ค์ด์จ ๋ ์ง๋ฅผ ์กฐํ
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS ๋ ์ง
FROM ANIMAL_INS
ORDER BY ANIMAL_ID