Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ๋น๋๊ด๋ฆฌ๋๊ตฌ
- MySQL LEFT()
- ํ๋ก๊ทธ๋๋จธ์ค 142086
- ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ ํ์ด์ฌ ์๊ฐ์ด๊ณผ
- www.google.com๏ปฟ ๊ฒ์ํ๋ฉด ์ผ์ด๋๋ ์ผ
- ๋น๋๊ด๋ฆฌ๋๊ตฌ ์ฐจ์ด
- ๋ชจ๋๋ก ์ฐ์ฐ
- ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ ํ์ด์ฌ
- @RequestMapping๊ณผ @GetMapping
- ์ ๊ทํ ์ฅ๋จ์
- RDBMS์ NoSQL ์ฐจ์ด
- ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ ํ์ด์ฌ
- ์คํ๋ง ๋ถํธ์ AWS๋ก ํผ์ ๊ตฌํํ๋ ์น ์๋น์ค
- Spring Security 5
- ํ๋ก์ธ์ค
- ์ด์ฝํ 2021
- finalize ์๋ ํธ์ถ
- build.gradle ์ค์ ์ค๋ฅ
- PCB
- ์๊ณ ๋ฆฌ์ฆ 1000000007 ๋๋๊ธฐ
- DDL DML DCL ์ฐจ์ด
- commit message convention
- OOP์ ํน์ง
- ๋ฐฑํธ๋ํน
- Python 1000000007
- MySQL RIGHT()
- ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ ์ ๊ณฑ๊ทผ
- java ๋๊ธฐํ
- ์น ๋์ ๊ณผ์
- Spring Security ๋ฒ์ ๋ฌธ์
Archives
- Today
- Total
BUILD_SSO
[Database/๋ฐ์ดํฐ๋ฒ ์ด์ค] DB Query & JOIN ๋ณธ๋ฌธ
๐๐ปJOIN ์ด๋
- JOIN ์ฐ์ฐ์ ๋ ํ
์ด๋ธ์ ๊ฒฐํฉํ๋ ์ฐ์ฐ์
๋๋ค.
๋ฐ์ดํฐ์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด์ ํ๋์ ํ ์ด๋ธ๋ก ์ ๋ณด๋ฅผ ์์ฉํ๊ธฐ ์ด๋ ค์์ง๋ฉด ํ ์ด๋ธ์ ๋ถํ ํ๊ณ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ์ฑ์ ๋ถ์ฌํฉ๋๋ค.
๐๐ปJOIN์ ์ข ๋ฅ
INNER JOIN
- ๋ ํ ์ด๋ธ์ ๊ต์งํฉ, ์ฆ ๋ ํ ์ด๋ธ๊ฐ JOIN ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ์ ๋ฐํํ๋ค.
OUTER JOIN
- OUTER JOIN์ด๋ ์กฐ์ธ ์กฐ๊ฑด์์ ๋์ผํ ๊ฐ์ด ์๋ ํ๋ ๋ฐํํ ๋ ์ฌ์ฉํ๋ค.
- LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN์ด ์๋ค.
CROSS JOIN
- Cartesian Product(์นด๋์ ๊ณฑ)์ด๋ผ๊ณ ๋ ํ๋ฉฐ ์กฐ์ธ๋๋ ๋ ํ ์ด๋ธ์์ ๊ณฑ์งํฉ์ ๋ฐํํ๋ค
SELF JOIN
- ์๊ธฐ์์ ๊ณผ ์๊ธฐ์์ ์ ์กฐ์ธํ๋ ๊ฒ์ผ๋ก, ํ๋์ ํ ์ด๋ธ์ ์ฌ๋ฌ๋ฒ ๋ณต์ฌํด์ ์กฐ์ธํ๋ค๊ณ ์๊ฐํ๋ฉด ํธํ๋ค.๊ฐ์ ํ ์ด๋ธ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ ์ด๋ธ์ ๋ฐ๋์ ๋ณ๋ช ์ ๋ถ์ฌ์ผํ๋ค.
๐๐ปJOIN์์ ON๊ณผ WHERE์ ์ฐจ์ด๋ฅผ ์ค๋ช
ํด์ฃผ์ธ์.
- ON : JOIN ์ ํ๊ธฐ ์ ํํฐ๋ง์ ํ๋ค (=ON ์กฐ๊ฑด์ผ๋ก ํํฐ๋ง์ด ๋ ๋ ์ฝ๋๋ค๊ฐ JOIN์ด ์ด๋ฃจ์ด์ง๋ค.)
- WHERE : JOIN ์ ํ ํ ํํฐ๋ง์ ํ๋ค (=JOIN์ ํ ๊ฒฐ๊ณผ์์ WHERE ์กฐ๊ฑด์ ๋ก ํํฐ๋ง์ด ์ด๋ฃจ์ด์ง๋ค. ์ผ๋ฐ ์กฐ๊ฑด์ ๋ก ๋ณผ ์ ์๋ค.)
๐๐ปSELECT ์ฟผ๋ฆฌ์ ์ํ ์์๋ฅผ ๋งํด์ฃผ์ธ์
- FROM ์ผ๋ก ๊ฐ ํ ์ด๋ธ์ ํ์ธํ๋ค
- ON ์ผ๋ก ์กฐ์ธ ์กฐ๊ฑด์ ํ์ธํ๋ค
- JOIN ์กฐ์ธ์ด ์คํ๋์ด ๋ฐ์ดํฐ๊ฐ ์ ์ผ๋ก ๋ชจ์์ง๊ฒ๋๋ค.
- WHERE ๋ฐ์ดํฐ์ ์ ํ์ฑํ๊ฒ ๋๋ฉด ์จ์ผ์ ์กฐ๊ฑด์ด ๊ฐ๋ณ ํ์ ์ ์ฉ๋๋ค
- GROUP BY ์จ์ผ์กฐ๊ฑด์ ์ ์ฉ ํ ๋๋จธ์ง ํ์ ๊ทธ๋ฃน๋ฐ์ด ์ ์ ์ง์ ๋ ์ด์ ๊ณตํต ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํํ๋ค. ์ฟผ๋ฆฌ์ ์ง๊ณ ๊ธฐ๋ฅ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ผ ํ๋ค.
- HAVING ๊ทธ๋ฃน๋ฐ์ด์ ์ด ํใ ๋ฆฌ์ ์์ ๊ฒฝ์ฐ ํค๋น์ ์ ์ ์ฝ์กฐ๊ฑด์ด ๊ทธ๋ฃนํ๋ ํ์ ์ ์ฉ๋๋ค.
- SELECT ์ ํํ๋ ์์ด ๊ฐ์ฅ ๋ง์ง๋ง์ ์ ์ฉ๋๋ค.
- DISTINCT ํํ๋ ํ์์ ์ค๋ณต๋ ํ์ ์ญ์ ํ๋ค
- ORDER BY ์ง์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค
- LIMIT ์ํ๋ ๊ฐ์๋งํผ ์ถ๋ ฅํ๋ค
๐๐ปGROUP BY์ ์ญํ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- ๋ฐ์ดํฐ๋ฅผ ํน์ ์ปฌ๋ผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ ์ํค๋ ๋ช ๋ น์ด์ด๋ค.
*์ฐธ๊ณ ๋งํฌ: [MySQL] GROUP BY, HAVING, ORDER BY
๐๐ปHAVING๊ณผ WHERE์ ์ฐจ์ด๋ฅผ ์ค๋ช ํด์ฃผ์ธ์.
- ์ฒ์๋ถํฐ ํ ์ด๋ธ ์์ฒด์ ์กฐ๊ฑด์ ๊ฑธ๊ณ ์ถ๋ค๋ฉด → WHERE
- ๊ทธ๋ฃน๋ณ๋ก ๋ฌถ์ธ(group by) ์ปฌ๋ฝ์ ์กฐ๊ฑด์ ๊ฑธ๊ณ ์ถ๋ค๋ฉด → HAVING
๐๐ปDELETE, TRUNCATE, DROP์ ์ฐจ์ด๋ฅผ ์ค๋ช ํด์ฃผ์ธ์.
DELETE
- WHERE์ ์ ์ฌ์ฉํ ํ ์ด๋ธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ํ๋ ์ ํํ์ฌ ์ ๊ฑฐํ๋ ๋ฐฉ์์ด๋ค.
- DELETE๋ ๋ฐ์ดํฐ๋ COMMIT ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ด๋ผ๋ฉด, ROLLBACK ๋ช ๋ น์ด๋ฅผ ํตํด ๋๋๋ฆด ์ ์๋ค.
TRUNCATE
- ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ญ์ ํ๋ ๋ฐฉ์์ด๋ค.
- ์๋ COMMIT์ด ๋๋ ๋ช ๋ น์ด์ด๊ธฐ ๋๋ฌธ์, ์ด๋ฏธ ์ง์ด ๋ฐ์ดํฐ๋ ๋๋๋ฆด ์ ์๋ค.
DROP
- ํ ์ด๋ธ ์์ฒด๋ฅผ ์์ ํ ๋ ๋ ค๋ฒ๋ฆฌ๋ ๋ฐฉ์, ํ ์ด๋ธ ์์ฒด๊ฐ ๋ชจ๋ ์ง์์ง๋ฉฐ, ํด๋น ํ ์ด๋ธ์ ์์ฑ๋์ด์๋ ๋ชจ๋ ์ธ๋ฑ์ค๋ ์ฌ๋ผ์ง๋ค.
- ์๋ COMMIT์ด ๋๋ ๋ช ๋ น์ด์ด๊ธฐ ๋๋ฌธ์, ์ด๋ฏธ ์ง์ด ๋ฐ์ดํฐ๋ ๋๋๋ฆด ์ ์๋ค.
โก์ํ๋ ๋ฐ์ดํฐ๋ง ๊ณจ๋ผ์ ์ญ์ ํ ๋์๋ DELETE ์ฌ์ฉ / ์ ์ฒด ๋ฐ์ดํฐ ์ญ์ ํ ๋์๋ TRUNCATE ์ฌ์ฉ
๐๐ปINSERT/ UPDATE/ DELETE/ LIKE/ NULL
INSERT
- ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง ์ ํ์ด ์์ผ๋ฉฐ ํ ๋ฒ์ ํ ๊ฑด๋ง ์
๋ ฅ๋๋ค.
ํด๋น ์นผ๋ผ๋ช ๊ณผ ์ ๋ ฅ๋์ด์ผ ํ๋ ๊ฐ์ ์๋ก 1:1๋ก ๋งคํํด์ ์ ๋ ฅํ๋ฉด ๋๋ค.
UPDATE
- ์ ๋ ฅํ ์ ๋ณด ์ค์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ฌ ์ ๋ณด๋ฅผ ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ
DELETE
- ํ
์ด๋ธ์ ์ ๋ณด๊ฐ ํ์ ์๊ฒ ๋์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ญ์ ๋ฅผ ์ํํฉ๋๋ค.
FROM ๋ฌธ๊ตฌ๋ ์๋ต์ด ๊ฐ๋ฅํ๋ฉฐ, WHERE ์ ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ํ ์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋ฉ๋๋ค.
LIKE
- ํน์ ๋ด์ฉ์ด ํฌํจ๋ ๋จ์ด๋ฅผ ์ฐพ์๋ ์ฌ์ฉํ๋ค.
NULL
- ๋ฐ์ดํฐ์ ๊ฐ์ด ์๋ ๊ฒ์ ๋ปํ๋ค.
๐๐ปํ๊ท , ํฉ๊ณ, ์ต๊ณ , ์ต์ (์ง๊ณํจ์)
- AVG: ํ๊ท
- SUM: ํฉ๊ณ
- MIN: ์ต์ ๊ฐ
- MAX: ์ต๋ ๊ฐ
- COUNT: ํ์ ๊ฐ์
๐๐ป์ค๋ณต ์ ๊ฑฐ
DISTINCT
- SELECT DISTINCT(NAME), ID FROM POPLES ํํ๋ก ์ฌ์ฉ์, NAME๊ณผ ID์ ํฉ์ฐ ๊ฒฐ๊ณผ๊ฐ ์ค๋ณต์ ์ ๊ฑฐํด์ ์ถ๋ ฅ๋๋ค.
๐๐ปIN, NOT IN ์ค๋ช
IN
- (MySQL์์) IN์ ํน์ ๊ฐ์ด ๋ค์ด์์ ๊ฒฝ์ฐ์๋ง ์กฐํํ๋ ค๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
- WHERE ์ปฌ๋ผ๋ช
IN ('๊ฐ', '๊ฐ')
WHERE ์ปฌ๋ผ๋ช IN (SELECT์ )
NOT IN
- IN๊ณผ ๋ฐ๋๋ก (MySQL์์) ํน์ ๊ฐ์ด ๋ค์ด์์ง ์์ ๊ฒฝ์ฐ๋ฅผ ์กฐํํ๋ ค๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
๐ํ์ ๋ณํ
CONCAT()
CAST()
ํ์
๋ณํ ํํ
SELECT CAST(๋ณํ๋์ AS TYPE) FROM DUAL
SELECT CONVERT(๋ณํ๋์, TYPE) FROM DUAL
๋ฌธ์ โก ์ซ์
SELECT CAST('123' AS UNSIGNED) FROM DUAL;
์ซ์ โก ๋ฌธ์
SELECT CAST(123 AS CHAR(3)) FROM DUAL;
SELECT CONVERT(202203020950, CHAR);
๋ฌธ์/์ซ์ โก ๋ ์ง
SELECT CAST(20220302 AS DATE) FROM DUAL;
SELECT CAST('20220302' AS DATE) FROM DUAL;
๐๋ ์ง ๊ด๋ จ ํจ์
DATE_FORMAT(๋ ์ง, 'ํฌ๋งท')
'Tech Interview' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Database/๋ฐ์ดํฐ๋ฒ ์ด์ค] ์ธ๋ฑ์ค Index (0) | 2023.05.03 |
---|---|
[Database/๋ฐ์ดํฐ๋ฒ ์ด์ค] ์ ๊ทํ Normalization (0) | 2023.05.03 |
[Database/๋ฐ์ดํฐ๋ฒ ์ด์ค] ํค (0) | 2023.05.03 |
[Database/๋ฐ์ดํฐ๋ฒ ์ด์ค] ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ข ๋ฅ์ ํน์ง (0) | 2023.05.02 |
[Network/๋คํธ์ํฌ] ์น๋ธ๋ผ์ฐ์ ์ google.com์ ์น๋ฉด ์ผ์ด๋๋ ๊ณผ์ (์น ๋์ ๊ณผ์ /๋ฐฉ์) (0) | 2023.05.02 |
Comments