๐ŸŽ„ ์„ฑ์žฅ์ผ์ง€ 3.1

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒณ ํ‚ค์›Œ๋“œ (1.0)
์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌ, ์ถ”ํ›„์— ๋ณด๋ฉด์„œ ์Šค์Šค๋กœ ์„ค๋ช…
๐Ÿ‰ ๊ฒฝํ—˜ ์œ„์ฃผ๋กœ (2.0)
๋‹จ์ˆœ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋ณด๋‹ค ๋ฌด์—‡์„ ๋ฐฐ์› ๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์งง๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ
โ„๏ธ ์ •ํ•ด์ง„ ํ…œํ”Œ๋ฆฟ์— ๋งž์ถฐ์„œ (3.0)
ํ‚ค์›Œ๋“œ, ๊ฒฝํ—˜ ๋ชจ๋‘ ์ข‹๋‹ค. ๋‹ค๋งŒ ๋งค์ผ ์ž‘์„ฑํ•˜๊ธฐ๋กœ ๋งˆ์Œ ๋จน์€๋งŒํผ ํ•ต์‹ฌ๋งŒ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑ (3.1) 230102๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋Š” ํ•™์Šต์— ๊ด€ํ•œ ๋‚ด์šฉ ์ถ”๊ฐ€

๐Ÿ”‘ ์˜ค๋Š˜์˜ ํ‚ค์›Œ๋“œ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ, ํ”ํžˆ DB(DataBase)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ƒฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ํ•˜๋ฉด ๋ณดํ†ต ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งํ•œ๋‹ค.
  • ๋˜ํ•œ, ์—„๋ฐ€ํžˆ DB๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ์˜๋ฏธํ•˜๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” MySQL, MariaDB, MongoDB ๋“ฑ์€ DBMS(DataBase Management System)์ด๋‹ค.

์–ด๋Œ‘ํ„ฐ

  • ์„œ๋กœ ๋‹ค๋ฅธ ์ „๊ธฐ, ๊ธฐ๊ณ„ ์žฅ์น˜๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒฐํ•ฉ๋„๊ตฌ
  • ๊ฐ ์–ธ์–ด์— ๋งž๋Š” db ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ๋‚ด๊ฐ€ ์ง  ํ”„๋กœ๊ทธ๋žจ๊ณผ db๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

DB Connection

  • DB์™€ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ(ํ”„๋กœ๊ทธ๋žจ)์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ
  • ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์–ด๋Œ‘ํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.
npm i -D mysql mysql2
const mysql = require('mysql2');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'jayden',
  password: '1234',
  port: 3306,
  database: 'databasename',
});

// ๋ณดํ†ต port๋Š” 3306์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋งŒ์•ฝ ๋กœ์ปฌ์— MySQL์ด ์„ค์น˜๋˜์–ด์žˆ๋Š” ์ƒํƒœ๋กœ
// docker์— mysql container๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•œ๋‹ค๋ฉด port๋ฅผ 3307๊ณผ ๊ฐ™์€ ๋น„์–ด์žˆ๋Š” ํฌํŠธ๋ฅผ ํ• ๋‹นํ•ด์ค˜์•ผ ํ•œ๋‹ค.

MySQL

  • ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” RDBMS(Relational DBMS; ๊ด€๊ณ„ํ˜•)์œผ๋กœ ์ฌ ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์ฆˆ๊ฐ€ ๊ฐœ๋ฐœํ•˜๊ณ  ์ถ”ํ›„ ์˜ค๋ผํด์— ์ธ์ˆ˜๋๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด์„ผ์Šค์ด์ง€๋งŒ ์ƒ์—…์ ์œผ๋กœ ์‚ฌ์šฉ ์‹œ, ์ƒ์—…์šฉ ๋ผ์ด์„ผ์Šค๋ฅผ ๊ตฌ์ž…ํ•ด์•ผํ•œ๋‹ค.
  • 15๋…„๋„ 11์›”์— ๋ฐœํ‘œ๋œ 5.7๋ฒ„์ „์ด ๋ฒ”์šฉ์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.(๊ธ€์ž‘์„ฑ ๊ธฐ์ค€ 8.0๊นŒ์ง€ ์ถœ์‹œ)

SELECT

  • DML(Data Manipulation Language)์— ์†ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ฟผ๋ฆฌ)
  • AUTO COMMIT๋˜์ง€ ์•Š๋Š”๋‹ค.(์ฆ‰, ์–ธ์ œ๋“  ๋กค๋ฐฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.)
  • ํŠน์ • ํ…Œ์ด๋ธ”์—์„œ ์›ํ•˜๋Š” ์กฐ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•œ๋‹ค.
SELECT ์ปฌ๋Ÿผ(ํ•„๋“œ)๋ช… FROM ํ…Œ์ด๋ธ”๋ช… WHERE (์–ด๋–ค ์กฐ๊ฑด);

INSERT

  • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ DML์— ์†ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ
  • ํ…Œ์ด๋ธ”์— ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
INSERT INTO ํ…Œ์ด๋ธ”๋ช… (์ปฌ๋Ÿผ1, ์ปฌ๋Ÿผ2, ์ปฌ๋Ÿผ3...) VALUES (๊ฐ’1, ๊ฐ’2, ๊ฐ’3...);

UPDATE

  • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ DML์— ์†ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ
  • ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.(WHERE์ ˆ์˜ ์กฐ๊ฑด๋ฌธ์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•œ๋‹ค.)
UPDATE ํ…Œ์ด๋ธ”๋ช… SET ์ปฌ๋Ÿผ1 = ๊ฐ’1, ์ปฌ๋Ÿผ2 = ๊ฐ’2, ์ปฌ๋Ÿผ3 = ๊ฐ’3... WHERE ์ปฌ๋Ÿผ = ํŠน์ •๊ฐ’;

DELETE

  • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ DML์— ์†ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ
  • ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
DELETE FROM ํ…Œ์ด๋ธ”๋ช…; // ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์ „๋ถ€ ์ง€์šด๋‹ค.
DELETE FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์ปฌ๋Ÿผ๋ช… = ๊ฐ’; // WHERE์ ˆ์— ํ•ด๋‹นํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋งŒ ์ง€์šด๋‹ค.

DROP, TRUNCATE์™€์˜ ์ฐจ์ด
DROP: ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ๊ทธ๋ƒฅ ํ…Œ์ด๋ธ” ์ž์ฒด๋ฅผ ํ†ต์งธ๋กœ ์ง€์šฐ๋Š” ๊ฒƒ์œผ๋กœ DDL์— ์†ํ•œ๋‹ค.(์ฆ‰, ์‹คํ–‰ํ•˜๋ฉด ๋กค๋ฐฑ์ด ์•ˆ๋จ)
TRUNCATE: ํ…Œ์ด๋ธ”์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ์–ผํ•„ ๋ณด๋ฉด โ€˜DELETE FROM ํ…Œ์ด๋ธ”๋ช…;โ€˜๊ณผ ๊ฐ™์•„๋ณด์ด์ง€๋งŒ, TRUNCATE์€ DDL์ด๋‹ค. ์ฆ‰, ๋กค๋ฐฑ์ด ์•ˆ๋œ๋‹ค.
์ฆ‰, DELETE๋Š” ํ…Œ์ด๋ธ”์„ ์ „๋ถ€ ์ง€์šฐ๋”๋ผ๋„ ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๊ทธ๋กœ ์ €์žฅํ•ด๋‘๋Š” ๋ฐ˜๋ฉด TRUNCATE๋Š” ์ง„์งœ ์™„์ „ ์‚ญ์ œ์ฒ˜๋Ÿผ ์ง€์›Œ๋ฒ„๋ฆฐ๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ™•์‹คํ•˜๊ฒŒ ํ•„์š”์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๋Š” ๊ฑฐ๋ผ๋ฉด DELETE๋ณด๋‹ค TRUNCATE๊ฐ€ ๋” ์ข‹๋‹ค.(์‹œ์Šคํ…œ์ ์ธ ๋ถ€ํ•˜๊ฐ€ ์ ์Œ)

์ฐธ๊ณ 

๐Ÿ“ ์š”์•ฝ ๋ฐ ํ•˜๋ฃจ ๊ฐ„๋‹จ ํšŒ๊ณ 

์˜ค๋Š˜ ์ •๋ง ์ค‘์š”ํ•œ ๊ฐœ๋…๋“ค์„ ๋งŽ์ด ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋„์ปค๋กœ ๋„์šฐ๋Š” ์ปจํ…Œ์ด๋„ˆ ํฌํŠธ์™€ ๋‚ด ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ํฌํŠธ์™€์˜ ๊ด€๊ณ„, ๊ทธ๋ฆฌ๊ณ  DB์— ์ง์ ‘ ์ ‘๊ทผํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๊ฒŒ ์–ด๋–ค ์˜๋ฏธ์ธ์ง€ ๋“ฑ๋“ฑ..!
๋˜, ๋ฏธ์…˜์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๊ณ„์† ์ฟผ๋ฆฌ๋ฌธ์„ ์—ฐ์Šตํ•˜๊ฒŒ ๋œ ๊ฑฐ ๊ฐ™์•„์„œ ์ข‹์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๋ฉด ํ• ์ˆ˜๋ก TypeORM์€ ๋„๋Œ€์ฒด ์–ด๋–ค๊ฑธ๊นŒ ๊ถ๊ธˆํ•˜๊ฒŒ ๋œ๋‹คโ€ฆใ…  ๋„ˆ๋ฌด ์š•์‹ฌ๋ถ€๋ฆฌ์ง€ ์•Š๋˜ ๋‚ด๊ฐ€ ์‹œ๋„ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์„ ์—์„œ ๋‹ค๋ค„๋ด์•ผ๊ฒ ๋‹ค..!

์˜ค๋Š˜์˜ ์ž˜ํ•œ ์ 

  • ๋ฏธ์…˜ ๊ตฌํ˜„ ์™„๋ฃŒ ๋ฐ ๊ฐœ๋… ์ •๋ฆฌ ์ •๋ง ์—ด์‹ฌํžˆ ํ•จ!!!

์˜ค๋Š˜์˜ ์•„์‰ฌ์šด ์ 

  • ๋”ฑํžˆ ์—†๋‹ค :) ์ง€๊ธˆ ๊ธ€ ์ž‘์„ฑํ•˜๋Š๋ผ ์ข€ ๋Šฆ๊ฒŒ ์ž๋Š” ์ ..?