[DB] MySQL - ์ƒํ™œ์ฝ”๋”ฉ ๐Ÿ’ฏ๏ธ

jungeundelilahLEEยท2021๋…„ 1์›” 12์ผ
0

DB(DataBase)

๋ชฉ๋ก ๋ณด๊ธฐ
4/8

goal

  • ์›น(web)์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•œ๋‹ค

MySQL ๐Ÿ’ฏ๏ธ


MySQL์˜ ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ์ตœ์ข…์ ์ธ ๊ณณ์€ "ํ‘œ(table)"๋‹ค.

  • ํ‘œ(table)๋“ค์„ ๊ทธ๋ฃนํ™” ํ•œ ๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(database)์ด๋‹ค.

  • ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์„ "์Šคํ‚ค๋งˆ(schema)"๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ์Šคํ‚ค๋งˆ๋Š” ์„œ๋กœ ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ทธ๋ฃนํ•‘ํ•ด์ค€๋‹ค.

  • ๊ทธ ์Šคํ‚ค๋งˆ๋“ค์ด ๋งŽ์•„์ง€๋ฉด ๊ทธ๋“ค์„ ๋ฌถ์–ด ์ €์žฅํ•˜๋Š” ๊ณณ์ด "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„"์ด๋‹ค.

  • mysql์„ ์„ค์น˜ํ•œ ๊ฒƒ == ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•œ ๊ฒƒ
    => ์ด ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ€์ง„ ๊ธฐ๋Šฅ๋“ค์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์˜ ํšจ์šฉ

  • "๋ณด์•ˆ"
    • ํŒŒ์ผ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ž์ฒด์ ์ธ ๋ณด์•ˆ์ฒด์ œ๊ฐ€ ์žˆ๋‹ค.
    • ๊ถŒํ•œ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฏ€๋กœ, ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด CRUD ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ง€์ •ํ•œ๋‹ค.

์Šคํ‚ค๋งˆ(Schema)

  • ์Šคํ‚ค๋งˆ๋ž€?
    : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ์™€ ์ œ์•ฝ์กฐ๊ฑด์— ๊ด€ํ•ด ์ „๋ฐ˜์ ์ธ ๋ช…์„ธ๋ฅผ ๊ธฐ์ˆ ํ•œ ๊ฒƒ /
    DB๋‚ด์— ์–ด๋–ค ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š”๊ฐ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์Šคํ‚ค๋งˆ๋ผ๊ณ  ํ•œ๋‹ค.

    • ๊ฐœ์ฒด์˜ ํŠน์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์†์„ฑ(Attribute)๊ณผ
    • ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐœ์ฒด(Entity),
    • ๊ฐœ์ฒด ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ๊ด€๊ณ„(Relation)์— ๋Œ€ํ•œ ์ •์˜์™€
    • ์ด๋“ค์ด ์œ ์ง€ํ•ด์•ผ ํ•  ์ œ์•ฝ์กฐ๊ฑด๋“ค
      ์„ ๊ธฐ์ˆ ํ•œ ๊ฒƒ

์Šคํ‚ค๋งˆ์˜ ์‚ฌ์šฉ

> mysql CREATE DATABASE [์ด๋ฆ„]

table ๊ตฌ์กฐ

table ์ƒ์„ฑ

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ฒƒ์„ ์•Œ์•„๋‚ธ๋‹ค.
  • ๊ณตํ™ˆ์ด ๋ณด๊ธฐ ์–ด๋ ค์šฐ๋ฉดcheet sheet ๊ฒ€์ƒ‰์–ด๋ฅผ ์ด์šฉํ•˜๊ธฐ
  • PRIMARY KEY(id) : ์ค‘์š”ํ•˜๊ณ  ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฐ’

์‹œ์ž‘ ์˜ˆ์‹œ & CRUD (CREATE READ (INSERT SELECT) UPDATE DELETE)

  • MYSQL ์‹œ์ž‘ myql -u root -p / ๋น„๋ฒˆ์ž…๋ ฅ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ CREATE DATABASE [์ด๋ฆ„];
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ USE [์ด๋ฆ„];
  • ํ…Œ์ด๋ธ” ์ƒ์„ฑ
    CREATE TABLE topic(
    -> id INT(11) NOT NULL AUTO_INCREMENT,
    -> title VARCHAR(100) NOT NULL,
    -> description TEXT NULL,
    -> created DATETIME NOT NULL,
    -> author VARCHAR(30) NULL,
    -> profile VARCHAR(100) NULL,
    -> PRIMARY KEY(id));
  • ๋งŒ๋“  ํ…Œ์ด๋ธ” ์ฐพ๊ธฐ SHOW TABLES;
  • ๋งŒ๋“  ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋ณด๊ธฐ DESC [ํ…Œ์ด๋ธ”์ด๋ฆ„];
  • ๋งŒ๋“  ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ๋„ฃ๊ธฐ
    INSERT INTO topic (title, description, created, author, profile) VALUES ("MySQL", "MySQL is the best RDBMS and ...", now(), "delilah", "developer");
    • now() : ํ˜„์žฌ์‹œ๊ฐ„ ๋ฐ˜์˜
  • ๋งŒ๋“  ํ…Œ์ด๋ธ” column๋ณด๊ธฐ SELECT * FROM [ํ…Œ์ด๋ธ”์ด๋ฆ„];
  • SELECT๋ฅผ ์ž˜ ์จ์„œ, ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ํ›ˆ๋ จํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”! (WHERE condition ๋นผ๋จน์œผ๋ฉด ์ง„์งœ ํฐ์ผ๋‚œ๋‹ค...!)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฝƒ JOIN

  • ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ํ•ฉ์น˜๊ธฐ
topic tableauthor table

๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ฉ์นœ๋‹ค.

์ด ๋‘ ํ…Œ์ด๋ธ”์„ ํ•ฉ์นœ ํ›„ topic.author_id์™€ author.id๋ฅผ ํ•ฉ์น˜๋ ค๊ณ  ํ•œ๋‹ค.

id๋ฅผ topic_id๋กœ ๋ฐ”๊พธ๋ ค๊ณ  ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ join์„ ํ†ตํ•œ ๊ด€๊ณ„ํ˜•์„ฑ์€ ์ด ๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ” ๋ฟ ์•„๋‹ˆ๋ผ, ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋“ค๊ณผ๋„ ๊ด€๊ณ„๋ฅผ ๋งบ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์‹œ์‚ฌํ•œ๋‹ค.


์ถœ์ฒ˜ : ์ƒํ™œ์ฝ”๋”ฉ๐Ÿ’š๏ธ / https://jwprogramming.tistory.com/47๐Ÿ’š๏ธ

profile
delilah's journey

0๊ฐœ์˜ ๋Œ“๊ธ€