Upsert query?- ์ค๋ณต๋๋ ๊ฐ์ด ์๋ค๋ฉด UPDATE, ์๋ค๋ฉด INSERT- ์์ ๋ก์ง ์งค๋ ๋ฐ๋ ๊ฐ๋ง UPDATEํ๊ณ , ์์ ํ๋ฉด์ ์๋ก์ด ๊ฐ์ ๋ฃ์ด์ค์ผํ ๋๋ INSERT๋ฅผ ํด์ค๋ค.- ๋ฆฌํ๋ ์ ํ ํฐ์ ์์๋ก ๋ค์ด๋ณด๋ฉด ์ฌ์ฉ์์ ์ ๋ณด๊ฐ ์ด๋ฏธ ์๊ณ refresh_token ๊ฐ๋ง ๋ฐ๊ฟ์ฃผ๊ณ ์ถ์๋ Upsert๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.INSERT INTO refresh_token (user_id, refresh_token)VALUES (#{userId}, #{refreshToken}) ON DUPLICATE KEYUPDATE refresh_token = #{refreshToken}
๐ง TIL/๐๏ธ Database

์ด๊ธฐ ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ mysql ์ค์น ํ ์ด๊ธฐ ๋น๋ฐ๋ฒํธ๋ ๋๋ค์ผ๋ก ์ง์ ๋๋ค. sudo grep 'temporary password' /var/log/mysqld.log ๋๋ ๋๋ฒ์งธ๊บผ๋ก ํ์๋ ์ ์์ด ๋๋ค. ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ Mysql ์ ์ ํ ALTER๋ฌธ ํ์ฉํด์ ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค. alter user 'root'@'localhost' identified by '์๋ก์ด ๋น๋ฐ๋ฒํธ'

SQL - JOIN ์ ๋ฆฌ ์์ ํ
์ด๋ธ Table: employees +--------+--------------+------------+---------+ | emp_id | emp_name | hire_date | dept_id | +--------+--------------+------------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 4 | | 2 | Tony Montana | 2002-07-15 | 1 | | 3 | Sarah Connor | 2005-10-18 | 5 | | 4 | Rick Deckard | 2007-01-03 | 3 | | 5 | Martin Blank | 2008-06-24 | NULL | +--------+--------------+--..

๐ Subquery - ์ฟผ๋ฆฌ ์์ ์ฟผ๋ฆฌ - ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์๋ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์ง๋ง, ๋ ํธํ๊ณ ๊ฐ๋จํ๊ฒ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ค๋ค. 1. ๋น๊ตํ๊ธฐ inner join VS subquery - ์นด์นด์คํ์ด ๊ฒฐ์ ์ ์ ๋ค์ ์ ๋ณด ๋ณด๊ธฐ 1) inner join select u.user_id, u.name, u.email from users u inner join orders o on u.user_id = o.user_id where o.payment_method = 'kakaopay'; 2) Subquery โ ์นด์นด์คํ์ด๋ก ๊ฒฐ์ ํ user_id ๋ชจ๋ ๊ตฌํ๊ธฐ select user_id from orders where payment_method = 'kakaopay' โก user_id๊ฐ ์๋จ์ ..

๐ชข Join - ์ฌ๋ฌ ์ ๋ณด๋ฅผ ํ ๋์ ๋ณด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. - ๋ ํ
์ด๋ธ์ ๊ณตํต๋ ์ ๋ณด(key๊ฐ) ๊ธฐ์ค์ผ๋ก ํ
์ด๋ธ์ ์ฐ๊ฒฐํด์ ํ ํ
์ด๋ธ์ฒ๋ผ ๋ณด๋ ๊ฒ - point_user ํ
์ด๋ธ๊ณผ users ํ
์ด๋ธ์ ์ฐ๊ฒฐํด์ค. -> ๊ณตํต๋ ํค๊ฐ์ 'user_id' select * from point_users left join users on point_users.user_id = users.user_id 1) Left Join - ์ผ์ชฝ ํ
์ด๋ธ์ ์ค์ฌ์ผ๋ก ์ค๋ฅธ์ชฝ์ ํ
์ด๋ธ์ ์ฐ๊ฒฐํ๋ค. - ์ด๋ค ๋ฐ์ดํฐ๋ ๋ชจ๋ ํ๋๊ฐ ์ฑ์์ ธ์์ง๋ง, ์ด๋ค ๋ฐ์ดํฐ๋ ๋น์ด์๋ ํ๋๊ฐ ์๋ค. - ex) ํ์์ด์ง๋ง ์๊ฐ ๋ฑ๋ก ๋๋ ์์ํ์ง ์์ ํฌ์ธํธ๊ฐ null ๊ฐ์ผ๋ https://www.w3schools.com/sql/sql_join_left..

๐ธ๏ธ Group by - ์ํ๋ ์ ํ๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํ ํด์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. - ๋์ผํ ๋ฒ์ฃผ๋ฅผ ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ์ด์, ๋ฒ์ฃผ๋ณ ํต๊ณ๋ฅผ ๋ด์ฃผ๋ ๊ฒ. - ~๋ณ ๐โโ๏ธ Group by๊ฐ ์คํ๋๋ ์์ from -> group by -> select 1) from orders: orders ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์จ๋ค. 2) group by payment_method: ํ
์ด๋ธ ๋ฐ์ดํฐ์์ ๊ฐ์ payment_method๋ฅผ ๊ฐ๋ ๋ฐ์ดํฐ ํฉ์ณ์ค๋ค. 3) select payment_method: payment_method ๋ณ๋ก ๊ทธ๋ฃนํ ๋ ๊ทธ๋ฃน๋ค์ ์ถ๋ ฅํด์ค๋ค. - ๊ฒฐ์ ์๋จ๋ณ๋ก ๊ทธ๋ฃนํ ํด์ ๋ณด์ฌ์ค. select payment_method from orders group by payment_method; ..

๋ฐ์ดํฐ๋ฒ ์ด์ค? - ์ฌ๋ฌ ์ฌ๋๋ค์ด ๊ฐ์ด ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ํต - ์ํ๋ ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์ ๊ณต ๋๋ค. ๋๋ณด๊ธฐ 1) Create - ๋ฐ์ดํฐ์ ์์ฑ 2) Read - ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๊ฒ 3) Update - ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ 4) Delete - ์ญ์ SQL? - Structured Query Language - ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฒญ(Query)์ ๋ณด๋ด ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋์์ฃผ๋ ์ธ์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ช
๋ น์ด๋ฅผ ์์ฑํ๋ ๊ฒ = 'SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค.' 1. Select ์ฟผ๋ฆฌ๋ฌธ - ๋ฐ์ดํฐ๋ฅผ ์ ํํด์ ๊ฐ์ ธ์ค๊ฒ ๋ค๋ ๋ช
๋ น์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๊ฒ ๋ด๋ฆฌ๋ ๊ฒ - 1๏ธโฃ ์ด๋ค ํ
์ด๋ธ์์ 2๏ธโฃ ์ด๋ค ํ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ์ง๋ก ๊ตฌ์ฑ๋๋ค. ๐โโ๏ธ ํ
์ด๋ธ? ํ๋?..

๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค - ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฌ๋ฌ ์ฌ๋๋ค์ด ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ์ ๋ชจ์ - ์ ๋ณด๊ดํ๋ ๊ฒ๋ ๋ง์ง๋ง, ์ ์ฐพ์ผ๋ ค๊ณ ์กด์ฌํ๋ ๊ฒ - ์ ๋ณด๋ฅผ ์ฝ๊ฒ ์ฐพ๊ณ ์
๋ฐ์ดํธ ํ ์ ์๊ณ , ๋ง์ ์์ ์ ๋ณด๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. 1) ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค - SQL - ์ ๋ฆฌ๋ ์ ๋ณด๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉ - ex) Oracle 2) ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค - NoSQL - ๋ณต์กํ๊ฑฐ๋ ์ ์ฐํ ์ ๋ณด๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉ - ex) Firestore Database ๐ฅ Firestore Database (firebase) - ๊ตฌ๊ธ์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค - ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ๊ด๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. 1) Collection - ์๋์ฅ์ ๊ทธ๋ฃน, ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๋ค์ด ํน์ ํ ์ฃผ์ ๋๋ ์ ํ์ผ..