ใ์ค๋ ํ์ต ์์ฝใ
1. ๊ฐ์ธ ๊ณต๋ถ
- Spring ์ฌ์ ์บ ํ ํ์คํธ ์งํ(1๊ฐ)
- 5) ๊ณต๋ถํ๋ค๋ณด๋ ํ ํ๋ก์ ํธ ์๊ฐ์ด ์์ด์!
๋ ์ง๋ฅผ ํ์ฉํ๋ ํจ์ year(), curdate(), datediff()
- 5) ๊ณต๋ถํ๋ค๋ณด๋ ํ ํ๋ก์ ํธ ์๊ฐ์ด ์์ด์!
- ์์
๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅธ SQL 1์ฃผ์ฐจ ๊ฐ์ ์๊ฐ(5๊ฐ)
- 1-4. ํ์ํ ํญ๋ชฉ๋ง ๋ฝ์์ ์ฌ์ฉํ๊ธฐ
- 1-5. ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ก ํํฐ๋งํ๊ธฐ (WHERE ์ด๋)
- 1-6. ํํฐ๋ง์ ํ ๋ ์ ์ฉํ ํํ ์์๋ณด๊ธฐ (๋น๊ต์ฐ์ฐ, BETWEEN, IN, LIKE)
- 1-7. ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด์ผ๋ก ํํฐ๋งํ๊ธฐ (๋ ผ๋ฆฌ์ฐ์ฐ)
- 1-8. ์๋ฌ๋ฉ์ธ์ง์ ๋นํฉํ์ง ์๊ณ ์ค์ค๋ก ๋ฌธ์ ํด๊ฒฐํ๊ธฐ
ใํ์ต ๋ด์ฉ ์ ๋ฆฌใ
1. Spring ์ฌ์ ์บ ํ ํ์คํธ
- ๋ ์ง์ ๊ดํ ๋ฐ์ดํฐ ์ถ์ถ
- ์ฐ๋ ์ถ์ถ : YEAR()
- ์ ์ถ์ถ : MONTH()
- ์ผ ์ถ์ถ : DAYOFMONTH()
SELECT * FROM member WHERE YEAR(birth)=2000;
#memberํ
์ด๋ธ์์ birth์ปฌ๋ผ์ ๊ฐ ์ค ๋
๋๊ฐ 2000๋
์ธ ๊ฐ๋ง ์ถ์ถ
SELECT * FROM member WHERE MONTH(birth)=1;
#memberํ
์ด๋ธ์์ birth์ปฌ๋ผ์ ๊ฐ ์ค ์์ด 1์์ธ ๊ฐ๋ง ์ถ์ถ
SELECT * FROM member WHERE DAYOFMONTH(birth)=1;
#memberํ
์ด๋ธ์์ birth์ปฌ๋ผ์ ๊ฐ ์ค ์ผ์ด 1์ผ์ธ ๊ฐ๋ง ์ถ์ถ
- ํ๋์ฝ๋ฉ(Hard coding)์ด๋?
- ์์ค ๋ด์ ํ๋ก๊ทธ๋จ์ ์ฝ๋ฉํ๋ ๋ฐฉ์, ์ฆ ๋ฐ์ดํฐ๋ฅผ ์์ค ์ฝ๋ ๋ด๋ถ์ Literal์ ํํ๋ก ์ง์ ์ ๋ ฅํ๋ ๊ฒ
- Literal(๋ฆฌํฐ๋ด)์ด๋ ์ฌ์ ์ ์๋ฏธ๋ก๋ '๋ฌธ์ ๊ทธ๋๋ก'๋ผ๋ ๋ป์ด์ง๋ง, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ์์ค ์ฝ๋์์ ํน์ ํ ์๋ฃํ์ ๊ฐ์ ์ง์ ํํํ๋ ๋ฐฉ์์ ๋งํ๋ค.
- ํ๋์ฝ๋ฉ์ ๋ฐ๋๋ง์ ์ํํธ ์ฝ๋ฉ ๋๋ ๋ก๋ฉ
- ํ๋์ฝ๋ฉ์ ์ฅ์ : ํ ์คํธ์ ๋์์ ๋ฐ๋ก ํ์ธํ ์ ์๋ค.
- ํ๋์ฝ๋ฉ์ ๋จ์ : ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๊ฐ์ง์ง ๋ชปํด ์ฝ๋ ๋ณ๊ฒฝ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ๋๋ค.
- ํ์ฌ ์๊ฐ์ ๋ ์ง/์๊ฐ ๋ฐํ
- ํ์ฌ์๊ฐ์ ๋ ์ง๋ง์ ๋ฐํ : CURDATE()
- ํ์ฌ์๊ฐ์ ์๊ฐ๋ง์ ๋ฐํ : CURTIEM()
- ํ์ฌ์๊ฐ์ ๋ฐํ : NOW()
SELECT * FROM team_projects WHERE CURDATE() BETWEEN start_date ANd end_date;
#team_projects ํ
์ด๋ธ์์ ํ์ฌ ์งํ์ค์ธ ํ๋ก์ ํธ๋ฅผ ์ ํํ๋ ์ฟผ๋ฆฌ
#ํ์ฌ๋ ์ง(CURDATE())๊ฐ start_date์ end_date ์ฌ์ด์ ์๋ ๋ฐ์ดํฐ๋ง ์ ํํ๋ค๋ ์๋ฏธ
- ๋ ์ง, ์๊ฐ ๊ณ์ฐ ํจ์
- ๋ ์ง, ์๊ฐ ๋ํ๊ธฐ : DATE_ADD(๊ธฐ์ค๋ ์ง, INTERVAL)
- ๋ ์ง, ์๊ฐ ๋นผ๊ธฐ : DATE_SUB(๊ธฐ์ค๋ ์ง, INTERVAL)
- ๋ ๊ธฐ๊ฐ ์ฌ์ด์ ์ผ์ ๊ณ์ฐ : DATEDIFF(์ข ๋ฃ์ผ, ์์์ผ)
- ๋ ๊ธฐ๊ฐ ์ฌ์ด์ ์๊ฐ ๊ณ์ฐ : TIMEDIFF(์ข ๋ฃ์๊ฐ, ์์์๊ฐ)
- ๋ ๊ธฐ๊ฐ ์ฌ์ด์ ๊ฐ์ ์ ๊ณ์ฐ : PEROID_DIFF(์ข ๋ฃ๋ ์, ์์๋ ์)
- ๋ ๊ธฐ๊ฐ ์ฌ์ด์ ์๊ฐ ๊ณ์ฐ : TIMESTAMPDIFF(๋ฐํ๊ฐ ํ์MONTH,DAY,YEAR ๋ฑ, ์์์ผ, ์ข ๋ฃ์ผ)
#INTERVAL ์์ฑ ๋ฐฉ๋ฒ
#DATE_ADD(๊ธฐ์ค๋ ์ง, INTERVAL) ์์
#ํ์ฌ ์๊ฐ ๊ธฐ์ค 1์ด,1๋ถ, ..., +1๋
, -1๋
๊ณ์ฐํ๊ธฐ
SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND)
SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE)
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR)
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY)
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH)
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR)
SELECT DATE_ADD(NOW(), INTERVAL -1 YEAR)
#PEROID_DIFF(์ข
๋ฃ๋
์, ์์๋
์)
#๋ ์ง๋ YYYYMM ๋๋ YYMMํ์์ผ๋ก ์์ฑ)
SELECT PERIOD_DIFF('202502','202412');
>> 2
SELECT PERIOD_DIFF('202412','202502');
>> -2
SELECT PERIOD_DIFF('2502','2312');
>> 14
2. ์์ ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅธ SQL 1์ฃผ์ฐจ ๊ฐ์ ์๊ฐ
- ์ปฌ๋ผ ๋ช
์นญ ๋ฐ๊พธ๊ธฐ
- ๋ฐฉ๋ฒ
- AS ์ฌ์ฉํ๊ธฐ : ์ปฌ๋ผ1 as ๋ณ๋ช 1
- ๋์ด์ฐ๊ธฐ ํ๊ธฐ : ์ปฌ๋ผ2 ๋ณ๋ช 2
- ์ ์์ฌํญ
- ์๋ฌธ๊ณผ ์ธ๋๋ฐ(_)๋ก๋ง ๊ตฌ์ฑ : ๋ณ๋ช ๋ง ์์ฑ ex: od_no
- ํน์๋ฌธ์, ํ๊ธ, ๋์ด์ฐ๊ธฐ ํฌํจ : "๋ณ๋ช "์ ํฐ๋ฐ์ดํ ์์ ์์ฑ ex: "์ฃผ๋ฌธ๋ฒํธ"
- _(์ธ๋๋ฐ๋ง ๊ฐ๋ฅ) ์ผ๋ฐ -๋ ํฐ๋ฐ์ดํ ํ์
- ๋ฐฉ๋ฒ
- ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ ํํฐ๋ง ํ๊ธฐ
- From ํ ์ด๋ธ๋ช ๋ค์ Where์ ๋ก ์์ฑํ๋ค.
- ๋น๊ต ์ฐ์ฐ์ : > , < , = , <>
- between, in, like ๋ฑ
- ๋ ผ๋ฆฌ ์ฐ์ฐ์ : and , or , not
- ์๋ฌ๋ฉ์ธ์ง ๋์
- ์์ฃผ ๋ฐ์ํ๋ ์๋ฌ ๋ฉ์ธ์ง ( @@๋ ์ฟผ๋ฆฌ์ ํ๋ฆฐ ๋ถ๋ถ์ด ํ์๋จ)
- ํ ์ด๋ธ ๋ช ์ ๋ค๋ฅด๊ฒ ์ ์์ ๋ : Table @@ dosen't exist
- ์ปฌ๋ผ ๋ช ์ ๋ค๋ฅด๊ฒ ์ ์์ ๋ : Unknown coumn @@
- ํํฐ๋ง ์กฐ๊ฑด์ ์ค ๋ ๋ฌธ์์ ์์ ๋ฐ์ดํ๋ฅผ ์ํ์ ๋ : Unknown coumn ''@@ in 'where clause
- ๊ทธ ์ธ ๋ค์ํ ๊ฒฝ์ฐ๊ฐ ์์ง๋ง, ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ณต๋ถํ๊ธฐ ๋ณด๋ค๋ ์๋ฌ๋ฉ์ธ์ง๊ฐ ๋ด์๋ ๊ทธ๊ฒ์ ์ฝ์ด๋ณด๋ ๊ฒ์ด ์ค์
- ์์ฃผ ๋ฐ์ํ๋ ์๋ฌ ๋ฉ์ธ์ง ( @@๋ ์ฟผ๋ฆฌ์ ํ๋ฆฐ ๋ถ๋ถ์ด ํ์๋จ)
- ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋ ์ฃผ์ํ ์
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ์ ํํ๊ฒ ํ์
ํ ๊ฒ
: ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ค ํ ์ด๋ธ์ด ์๊ณ , ๊ฐ ํ ์ด๋ธ์ด ์ด๋ค ์ด๋ก ๊ตฌ์ฑ๋์ด ์๋์ง ์ดํดํ๊ธฐ - ์กฐ๊ฑด์ ์ ํ์ฑ ํ์ธ
: ์ฃผ์ด์ง ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์กฐ๊ฑด์ ์ ํํ๊ฒ ์ค์
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ์ ํํ๊ฒ ํ์
ํ ๊ฒ
ใ๋ฉ๋ชจใ
1. MySQL / SQL Server / Oracle?
- ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS, Relational Database Management System)์ ์ข ๋ฅ
- ๋ ์ง์ ์ผ์ ์ถ์ถํ๋ ํจ์๋ฅผ ์ฐพ๋๋ฐ MYSQL์ DAYOFMONTH()๋ฅผ ์ฌ์ฉํ๊ณ , SQL Server๋ DAY()ํจ์๋ฅผ ์ฌ์ฉํ์ฌ, ์ฐจ์ด๋ฅผ ์์๋ณด์๋ค.
ํน์ฑ | MySQL | SQL Server | Oracle |
๊ฐ๋ฐ์ฌ | Oracle | Microsoft | Oracle Corporation |
์ด์ ์ฒด์ | Window, Linux, macOS | Windows, Linux (2017์ด์) | Window, Linux, Solaris |
๊ธฐ๋ฅ | ๊ฒฝ๋ํ, ๊ธฐ๋ณธ ๊ธฐ๋ฅ | ๊ณ ๊ธ BI, ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ | ๊ณ ๊ธ ํธ๋์ญ์ ์ฒ๋ฆฌ, ๋ถ์ ๊ธฐ๋ฅ |
์ฑ๋ฅ | ๋น ๋ฅธ ์ฝ๊ธฐ ์ฑ๋ฅ, ์์ ๊ท๋ชจ ์ ํฉ | ๋๊ท๋ชจ ์์คํ ์ฑ๋ฅ ์ต์ ํ | ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ํธ๋์ญ์ |
๋ณด์ | ๊ธฐ๋ณธ ๋ณด์ ๊ธฐ๋ฅ | ๊ณ ๊ธ ๋ณด์ ๊ธฐ๋ฅ | ๊ณ ๊ธ ๋ณด์ ๋ฐ ์ํธํ ๊ธฐ๋ฅ |
ใ๋ค์ ๊ณต๋ถ ๊ณํใ
1. 3์ฃผ์ฐจ ๊ฐ์๊น์ง ์๊ฐ ์๋ฃ
2. ์ฌ์ ์บ ํ ํ์คํธ 6๋จ๊ณ ํ๊ธฐ
'Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL 01/20_์ฌ์ ์บ ํ 6์ผ์ฐจ] SQL ๊ธฐ์ด ๋ฌธ๋ฒ (0) | 2025.01.20 |
---|---|
[TIL 01/17_์ฌ์ ์บ ํ 5์ผ์ฐจ] SQL ๊ธฐ์ด ๋ฌธ๋ฒ (0) | 2025.01.17 |
[TIL 01/16_์ฌ์ ์บ ํ 4์ผ์ฐจ] SQL ๊ธฐ์ด ๋ฌธ๋ฒ (0) | 2025.01.16 |
[TIL 01/14_์ฌ์ ์บ ํ 2์ผ์ฐจ] SQL ๊ธฐ์ด ๋ฌธ๋ฒ (1) | 2025.01.14 |
์คํํฐ ๋ ธํธ (0) | 2025.01.13 |