๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กStudy (87)

JiYoung Dev ๐Ÿ–ฅ

[database ๊ณ ๊ธ‰] ์ง‘ํ•ฉ์—ฐ์‚ฐ์ž (2023.08.08)

UNION : ์ค‘๋ณต ์ œ๊ฑฐ UNION ALL : ์ค‘๋ณต ํฌํ•จ ํŠน์ง•1. ์ปฌ๋Ÿผ์€ ์ฒซ๋ฒˆ์งธ ์ปฌ๋Ÿผ์„ ๋”ฐ๋ผ๊ฐ„๋‹ค. SELECT ์˜ˆ๋งค๋ฒˆํ˜ธ, ๋ฎค์ง€์ปฌ์ด๋ฆ„, ๋ฎค์ง€์ปฌ๊ฐ€๊ฒฉ FROM ๋ฎค์ง€์ปฌ์˜ˆ๋งค๋‚ด์—ญ UNION ALL SELECT ์˜ˆ๋งค๋ฒˆํ˜ธ, ์ฝ˜์„œํŠธ์ด๋ฆ„, ์ฝ˜์„œํŠธ๊ฐ€๊ฒฉ FROM ์ฝ˜์„œํŠธ์˜ˆ๋งค๋‚ด์—ญ UNION ALL SELECT ์˜ˆ๋งค๋ฒˆํ˜ธ, ๊ทน์ด๋ฆ„, ๊ทน๊ฐ€๊ฒฉ FROM ๊ทน์žฅ์˜ˆ๋งค๋‚ด์—ญ ; ํŠน์ง• 2. ์ปฌ๋Ÿผ์˜ ๊ฐœ์ˆ˜์™€ ์ž๋ฃŒํ˜•์ด ์ผ์น˜ํ•ด์•ผ ํ•จ! ์ง์ ‘ ๋ฌธ์žํ˜•์ด๋‚˜ NULL๊ฐ’์„ ์ง€์ •ํ•˜์—ฌ ํ•ด๋‹น ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. oracle ๋ฒ„์ „์— ๋”ฐ๋ฅธ ์ฐจ์ด ์ค‘๋ณต์ œ๊ฑฐ + ์ •๋ ฌ = union ์ค‘๋ณต x + ์ •๋ ฌ x = union all (๊ณต๊ณต๊ธฐ๊ด€ ๋“ฑ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” ๋ฒ„์ „) union = ์ค‘๋ณต union all = ์ค‘๋ณตx ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์ด๋‚˜ ์ž˜๋ชป ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ๋‹ค๊ฐ€ ๊ธฐ์กด๊ฒŒ ์ž‘๋™์•ˆํ•  ์ˆ˜ ์žˆ์Œ

Study/database 2023. 8. 8. 17:43
[Spring - Android] JPA ํ™œ์šฉ ์—ฐ๋™ํ•˜๊ธฐ (2023.07.20~21)

controller : ๋ทฐ๋ฐ˜ํ™˜ restcontroller : ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ Application.java ์œ„์น˜ ๊ธฐ์ค€ ํ•˜์œ„์— ์žˆ๋Š” ๊ฒƒ๋“ค๋งŒ ๊ฐ์ฒด ์ƒ์„ฑ ๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ, ์„œ๋น„์Šค ๋“ฑ์€ ๋ชจ๋‘ boot package ํ•˜์œ„์— ์กด์žฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•จ spring์—์„œ ์‚ฌ์šฉํ•˜๋Š” class => ์–ด๋…ธํ…Œ์ด์…˜ @์„ ๋ถ™์—ฌ์•ผํ•จ. ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ JPA object์™€ ๊ด€๊ณ„ํ˜• ํ…Œ์ด๋ธ” ๋งคํ•‘ jpa ์‚ฌ์šฉ์‹œ ์ฃผ์˜์  - ์ž์ฒด์ ์œผ๋กœ ๊ฐ๊ฐ์˜ ๊ฐ’๋“ค์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” (ex.sequence)๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ด ์•„์ด๋ฅผ primary ํ‚ค๋กœ ์‚ฌ์šฉ ์žญ์Šจ object-json ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Stringํ˜•ํƒœ์˜ json์„ java Object๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ์ฒ˜๋ฆฌ 1. throw : ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•˜๋‹ค 2. try-..

Study/Back-End 2023. 7. 20. 14:17
[Node.js] Socket ํ†ต์‹  (2023.07.10)

http ํ†ต์‹  ํ†ต์‹ ์ˆœ์„œ : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋“ค์–ด์™€์•ผ ์„œ๋ฒ„์ชฝ์—์„œ ๊ทธ์— ์•Œ๋งž๋Š” ์‘๋‹ต์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹ ์„œ๋ฒ„๊ฐ€ ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•จ socket ํ†ต์‹  ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง€๋Š” ํ†ต์‹ ์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ๋„ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ณ  ์„œ๋ฒ„๋„ ํด๋ผ์ด์–ธํŠธ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํ†ต์‹  ์˜ˆ๋ฅผ๋“ค์–ด ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ Node.js์—์„œ๋Š” Socket.IO npm ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ ๋ชจ๋“ˆ ์„ค์น˜ npm install socket.io ์„œ๋ฒ„์ชฝ ์†Œ์ผ“ //์„œ๋ฒ„์ชฝ ์†Œ์ผ“ ์ž‘์„ฑ const socketIO = require('socket.io') //์–ด๋Š ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์ด ๋œ ์ƒํƒœ๋กœ ์“ธ ๊ฒƒ์ธ์ง€ ์ •์˜๋ฅผ ํ•ด์ค˜์•ผ ํ•จ (ex.port) //express server module.exports = (serve..

Study/Back-End 2023. 7. 10. 13:47
[Node.js] ์ฟ ํ‚ค/์„ธ์…˜ (2023.07.06 ~ 07)

์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  → HTTP์˜ ํŠน์„ฑ ๋•Œ๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š”(์š”์ฒญ, ์‘๋‹ต) ์—ฐ๊ฒฐ์„ ์œ ์ง€๋˜์–ด์•ผ ํ•จ ๊ทธ๋Ÿฐ๋ฐ ์š”์ฒญ, ์‘๋‹ต์ด ๋๋‚ฌ๋Š”๋ฐ๋„ ๊ณ„์† ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ณ„์† ์ž์›์„ ์“ด๋‹ค๋Š” ๊ฒƒ → ๋น„ํšจ์œจ์  ๊ทธ๋ž˜์„œ HTTP๋Š” ๋น„์—ฐ๊ฒฐ์„ฑ์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ ์ด๋กœ์ธํ•ด ํŒŒ์ƒ๋˜๋Š” ํŠน์ง•์ธ ๋ฌด์ƒํƒœ(Stateless) ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ๋๋‚˜๋Š” ์ˆœ๊ฐ„ ์•Œ๊ณ ์žˆ์—ˆ๋˜ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋”์ด์ƒ ๊ธฐ์–ตํ•˜์ง€ ์•Š์Œ! ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค์™€ ์„ธ์…˜์ด ํ•„์š”ํ•จ ์ฟ ํ‚ค ์œ ์ง€ํ•ด์•ผํ•˜๋Š” ์ƒํƒœ ์ •๋ณด๋ฅผ ๋ณด๊ด€ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์— ์ €์žฅ ๋งŒ๋ฃŒ๊ธฐ๊ฐ„์ด ๋‚จ์•„์žˆ์œผ๋ฉด ์ปดํ“จํ„ฐ๋ฅผ ๋„๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์Œ ์ƒ์„ฑ์€ ์„œ๋ฒ„์—์„œ, ๋ณด๊ด€์€ ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ ์ง„ํ–‰ํ•˜๋ฏ€๋กœ ์‘๋‹ตํ•  ๋•Œ ์ฟ ํ‚ค๋ฅผ ํฌํ•จ์‹œ์ผœ ์‘๋‹ตํ•ด์•ผ ํ•จ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์‘๋‹ตํ•˜๋Š”..

Study/Back-End 2023. 7. 6. 13:48