1. ํ…Œ์ด๋ธ” ์ถ”๊ฐ€ 

 

create table ํ…Œ์ด๋ธ”๋ช…

  (   

    ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜• ์˜ต์…˜

  );

 

ex)

create table newTable

  (   

    id int AUTO_INCREMENT,

    name varchar(10) not null

  );

 

 

2. ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ์ถ”๊ฐ€ / ์‚ญ์ œ

 

- ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ์ถ”๊ฐ€

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜• ์˜ต์…˜;

 

* ํŠน์ •ํ•œ ์ปฌ๋Ÿผ ๋‹ค์Œ์— ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์„ ๋•Œ 

 

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜• ์˜ต์…˜ AFTER ์ง€์ •์ปฌ๋Ÿผ;

 

* ํ…Œ์ด๋ธ”์˜ ๋งจ ์ฒซ๋ฒˆ์งธ์— ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์„ ๋•Œ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜• ์˜ต์…˜ FIRST;

 

- ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ์‚ญ์ œ

 

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์ปฌ๋Ÿผ๋ช…;

 

 

3. ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ๋ณ€๊ฒฝ

 

- ์†์„ฑ ๋ณ€๊ฒฝ

 

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•;

 

- ์ด๋ฆ„ ๋ณ€๊ฒฝ

 

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… CHANGE ๊ธฐ์กด ์ปฌ๋Ÿผ๋ช… ๋ฐ”๊ฟ€ ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•;

 

 

4. ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์‚ญ์ œ 

 

- ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ์‚ญ์ œ

 

DELETE FROM ํ…Œ์ด๋ธ”๋ช…;

 

- ์กฐ๊ฑด์— ๋งž๋Š” ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์‚ญ์ œ

 

DELETE FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์กฐ๊ฑด๋ฌธ;

 

 

5. ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”

 

- ํ…Œ์ด๋ธ” ์ดˆ๊ธฐํ™”

 

TRUNCATE TABLE ํ…Œ์ด๋ธ”๋ช…

 

* DELETE ์™€ ๋‹ค๋ฅธ ์ ์€ ํ…Œ์ด๋ธ”์„ ์•„์˜ˆ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์„œ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ฆ

 

์ฟ ํŒก ERD


URL : https://aquerytool.com/aquerymain/index/?rurl=d8467984-5fa4-491c-b567-1b1de339fc1c&
Password : xy2cgb

 

ํ•œ๋ฐฉ ์ฟผ๋ฆฌ


- ๋‚ด ์ •๋ณด ๊ด€๋ฆฌ

use kiinDB;
select name                     as ๊ณ ๊ฐ๋ช…,
       passwd                   as ๋น„๋ฐ€๋ฒˆํ˜ธ,
       email                    as ์ด๋ฉ”์ผ,
       number                   as ์—ฐ๋ฝ์ฒ˜,
       address                  as ์ฃผ์†Œ,
       profile_img              as ํ”„๋กœํ•„์‚ฌ์ง„,
       concat(membership, 'ํšŒ์›') as ๋ฉค๋ฒ„์‹ญ
from user u
         inner join (select membership, user_id from membership) m on u.id = m.user_id
         inner join (select address, user_id, min(id) from address) a on u.id = a.user_id
where u.id = 1

- ์ฃผ๋ฌธ๋ชฉ๋ก

use kiinDB;
select o.created_at                      as ์ฃผ๋ฌธ์ผ์ž,
       o.updated_at,
       shipment                          as ๋ฐฐ์†ก์ข…๋ฅ˜,
       shipment_img_url                  as ๋ฐฐ์†ก์ด๋ฏธ์ง€,
       concat(name, space(1), o2.option) as ์ƒํ’ˆ์ด๋ฆ„,
       price                             as ๊ฐ€๊ฒฉ,
       stock                             as ์ฃผ๋ฌธ๊ฐœ์ˆ˜,
       prod_img                          as ์ƒํ’ˆ์ด๋ฏธ์ง€,
       (case
            when
                o.status = 'Y'
                then '๋ฐฐ์†ก์™„๋ฃŒ'
            else '๋ฐฐ์†ก ์ค‘'
           end)                          as ๋ฐฐ์†ก์ƒํƒœ,
       (case
            when
                o.status = 'Y' and datediff(o.updated_at,current_timestamp) < 1
                then concat('์–ด์ œ',space(1),date_format(o.updated_at,'%m/%d/%W'),space(1),'๋„์ฐฉ')
           when
                o.status = 'Y' and datediff(o.updated_at,current_timestamp) > 1
                then concat(date_format(o.updated_at,'%m/%d/%W'),'๋„์ฐฉ')
            when o.status= 'N' and date_format(o.created_at,'%h') < 12
           then '์˜ค๋Š˜ ์˜คํ›„ ๋„์ฐฉ ๋ณด์žฅ'
           else concat(date_format(DATE_ADD(o.created_at, INTERVAL 1 DAY),'%m/%d/%W'),'๋„์ฐฉ๋ณด์žฅ')
           end)                          as ๋ฐฐ์†ก์ƒํƒœ

from order_ o
         inner join shipments_mapping sm on o.prod_id = sm.prod_id
         inner join shipments s on sm.shipment_id = s.id
         inner join product p on o.prod_id = p.id
         inner join option_mapping om on p.id = om.prod_id
         inner join option_ o2 on om.option_id = o2.id
where o.buyer_id = 1
  and o2.id = 1;

 

-์ฃผ๋ฌธ์ƒ์„ธ

use kiinDB;
select user.name as ์ด๋ฆ„,
       payment as ๊ฒฐ์ œ์ˆ˜๋‹จ,
       number as ํ•ธ๋“œํฐ๋ฒˆํ˜ธ,
        address as ์ฃผ์†Œ,
        o.created_at                      as ๊ตฌ์ž…์ผ์ž,
       o.id                              as ์ฃผ๋ฌธ๋ฒˆํ˜ธ,
       shipment                          as ๋ฐฐ์†ก์ข…๋ฅ˜,
       shipment_img_url                  as ๋ฐฐ์†ก์ด๋ฏธ์ง€,
       (case
            when s.id = '1' then '0์›'
            when s.id = '2' then '0์›'
            else '3000์›' end)            as ๋ฐฐ์†ก๋น„,
       concat(p.name, space(1), o2.option) as ์ƒํ’ˆ์ด๋ฆ„,
       price                             as ๊ฐ€๊ฒฉ,
       stock                             as ์ฃผ๋ฌธ๊ฐœ์ˆ˜,
       prod_img                          as ์ƒํ’ˆ์ด๋ฏธ์ง€,
       (case
            when
                o.status = 'Y'
                then '๋ฐฐ์†ก์™„๋ฃŒ'
            else '๋ฐฐ์†ก ์ค‘'
           end)                          as ๋ฐฐ์†ก์ƒํƒœ,
       (case
            when
                o.status = 'Y' and datediff(o.updated_at, current_timestamp) < 1
                then concat('์–ด์ œ', space(1), date_format(o.updated_at, '%m/%d/%W'), space(1), '๋„์ฐฉ')
            when
                o.status = 'Y' and datediff(o.updated_at, current_timestamp) > 1
                then concat(date_format(o.updated_at, '%m/%d/%W'), '๋„์ฐฉ')
            when o.status = 'N' and date_format(o.created_at, '%h') < 12
                then '์˜ค๋Š˜ ์˜คํ›„ ๋„์ฐฉ ๋ณด์žฅ'
            else concat(date_format(DATE_ADD(o.created_at, INTERVAL 1 DAY), '%m/%d/%W'), '๋„์ฐฉ๋ณด์žฅ')
           end)                          as ๋ฐฐ์†ก์ƒํƒœ

from order_ o
         inner join shipments_mapping sm on o.prod_id = sm.prod_id
         inner join shipments s on sm.shipment_id = s.id
         inner join product p on o.prod_id = p.id
         inner join option_mapping om on p.id = om.prod_id
         inner join (select min(id),'option',id from option_) o2 on om.option_id = o2.id
         inner join user on o.buyer_id = user.id
        left join (select min(id),address,user_id from address) a on user.id = a.user_id
inner join order_payment op on op.order_id = o.id
inner join payments_list pl on pl.id = op.payment_id
where o.id = 5;

-์ตœ๊ทผ ๋ณธ ์ƒํ’ˆ

use kiinDB;
select u.id,
       p.prod_img,
       p.name,
       p.price     AS ์›๋ž˜๊ฐ€๊ฒฉ,
       round((p.price - p.price*(discount/100)),0)   AS ํ• ์ธ๊ฐ€,
       (case when p.status='Y' then '๊ตฌ๋งค๊ฐ€๋Šฅ'
           when p.status='N' then 'ํ’ˆ์ ˆ' end)    AS ํ’ˆ์ ˆ์œ ๋ฌด,
       shipment    AS ๋ฐฐ์†ก,
       avgscore    AS ํ‰๊ท ๋ณ„์ ,
       reviewCount AS ๋ฆฌ๋ทฐ๊ฐœ์ˆ˜
from user u
         inner join recently_viewed rv on u.id = rv.user_id
         inner join product p on rv.prod_id = p.id
         inner join shipments_mapping sm on p.id = sm.prod_id
         inner join shipments s on sm.shipment_id = s.id
         inner join (select prod_id, count(r.id) AS reviewCount, avg(score) AS avgscore
                     from review r
                              inner join score s2 on r.id = s2.review_id
                     group by prod_id) r on p.id = r.prod_id
        left join (select discount,prod_id from discount_prod) dp on p.id = dp.prod_id
where u.id = 1
group by p.id
limit 20

-์ƒํ’ˆ ํŽ˜์ด์ง€

use kiinDB;
select prod_img,price AS ์›๋ž˜๊ฐ€, round((p.price - p.price*(discount/100)),0)   AS ํ• ์ธ๊ฐ€,name,brand,o.`option` AS ์˜ต์…˜,avgScore AS ํ‰๊ท ๋ณ„์ , ๋ฆฌ๋ทฐ์ˆ˜, shipment
from product p
         inner join (select count(r.id) AS ๋ฆฌ๋ทฐ์ˆ˜, round(avg(score),0) AS avgScore,prod_id from review r inner join score s on r.id = s.review_id group by prod_id) r on r.prod_id= p.id
         inner join shipments_mapping sm on p.id = sm.prod_id
         inner join shipments s2 on sm.shipment_id = s2.id
        inner join brand b on p.brand_id = b.id
        inner join option_mapping om on p.id = om.prod_id
        inner join (select min(id) AS id,`option`  from option_) o on om.option_id = o.id
        inner join discount_prod dp on p.id = dp.prod_id
where p.id = 1

 

์ „์ฒด DB 

 

DB ์„ค๊ณ„์— ์•ž์„œ


     - ์ƒํ™œ์ฝ”๋”ฉ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ฐ•์˜์™€ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์˜€๋‹ค.

https://velog.io/@sontulip/how-to-db-design

 

DB ์„ค๊ณ„๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

๋„๋Œ€์ฒด ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ• ๊นŒ? ๐Ÿ˜‚

velog.io

https://www.youtube.com/watch?v=1d38YZKCM88&list=PLuHgQVnccGMDF6rHsY9qMuJMd295Yk4sa 

 

 

ํ…Œ์ด๋ธ” ์„ค๊ณ„

 


- ์ฒ˜์Œ ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•  ๋•Œ ํ•ต์‹ฌ์ด ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ๋จผ์ € ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.

  ๋‚˜๋Š” ํฌ๊ฒŒ ์‚ฌ์šฉ์ž, ์ƒํ’ˆ , ํŒ๋งค์ž , ์ฃผ๋ฌธ  , ๋ฆฌ๋ทฐ ํ…Œ์ด๋ธ”์„ ํ•ต์‹ฌ์œผ๋กœ ๋ณด์•˜๋‹ค.

 

์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ” 

์ฟ ํŒก์˜ ๋งˆ์ดํŽ˜์ด์ง€๋ฅผ ๋ณด๋ฉด ์ฟ ํฐ , ์บ์‹œ , ์ฃผ๋ฌธ๋‚ด์—ญ , ์ฃผ์†Œ ๋“ฑ ์—ฌ๋Ÿฌ ์ •๋ณด๋“ค์ด ์žˆ๋‹ค.

์ด ์ •๋ณด๋“ค์ด ์œ ์ € ํ…Œ์ด๋ธ”์„ ์ค‘์‹ฌ์œผ๋กœ ์„œ๋กœ ์ฐธ์กฐ๋  ์ˆ˜ ์žˆ๋„๋ก ERD๋ฅผ ์„ค๊ณ„ ํ•˜์˜€๋‹ค.

 

๏ฟผ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ” ๊ตฌ์„ฑ

์ผ๋‹จ ์œ ์ €ํ…Œ์ด๋ธ”์—๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ , ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ๋žจ ์ •๋ณด๋งŒ ๋“ค์–ด๊ฐ€๊ฒŒ๋” ํ•˜์˜€๋‹ค.

 

1. coupon : ์‚ฌ์šฉ์ž์˜ ์ฟ ํฐ ๋ชฉ๋ก์„ ๋ฐ›๋Š” ํ…Œ์ด๋ธ”์ด๋‹ค. ์ฟ ํฐ ๋ชฉ๋ก๊ณผ ์‚ฌ์šฉ์ž๋Š” N:N ๊ด€๊ณ„์ด๋ฏ€๋กœ ์ค‘๊ฐ„์— ๋งตํ•‘ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.

2. search_history : ์‚ฌ์šฉ์ž์˜ ๊ฒ€์ƒ‰ ๋‚ด์—ญ์„ ์ €์žฅํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋“ค๊ฐ„์˜ ๊ฒ€์ƒ‰ ๋ชฉ๋ก์ด ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ N:N ๊ด€๊ณ„๋กœ ์„ค์ •ํ•˜์˜€๋‹ค.

3. address : ์‚ฌ์šฉ์ž์˜ ์ฃผ์†Œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

4. cart : ์‚ฌ์šฉ์ž์˜ ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์ €์žฅํ•œ๋‹ค. ์ด ํ…Œ์ด๋ธ”์€ ์ƒํ’ˆ ํ…Œ์ด๋ธ” ๋˜ํ•œ ์ฐธ์กฐํ•˜์˜€๋‹ค. ๋•Œ๋ฌธ์— N:N ๊ด€๊ณ„์ด๋‹ค. (์‚ฌ์‹ค์ƒ ๋งตํ•‘ํ…Œ์ด๋ธ”์ž„)

5. wishlists : ์‚ฌ์šฉ์ž์˜ ์ฐœ ๋ชฉ๋ก์„ ์ €์žฅํ•œ๋‹ค. ์ด ๋˜ํ•œ ๋งตํ•‘ ํ…Œ์ด๋ธ”๋กœ ์ƒํ’ˆ ํ…Œ์ด๋ธ”๊ณผ ์œ ์ € ํ…Œ์ด๋ธ”์„ FK๋กœ ์ฐธ์กฐํ•œ๋‹ค.

6. payments_mapping : ์ด ํ…Œ์ด๋ธ”์€ ๊ฒฐ์ œ๋ชฉ๋ก ์ˆ˜๋‹จ๋“ค์„ ์ €์žฅํ•˜๋Š” ๋ฐ payments_list๋ผ๋Š” ํ…Œ์ด๋ธ”์˜ id์™€ ์œ ์ € id๋ฅผ ์™ธ๋ž˜ํ‚ค๋กœ                                                 ๋ฐ›๋Š”๋‹ค.

 

์ƒํ’ˆ ํ…Œ์ด๋ธ”

์ฟ ํŒก ์ƒํ’ˆ ํŽ˜์ด์ง€

์ฟ ํŒก์˜ ์ƒํ’ˆ ํŽ˜์ด์ง€๋ฅผ ๋ณด๋ฉด ์ƒํ’ˆ์˜ ์ œ๋ชฉ, ์˜ต์…˜ , ๋กœ์ผ“๋ฐฐ์†ก ์œ ๋ฌด , ๋ฆฌ๋ทฐ , ์Šค์ฝ”์–ด ๋“ฑ ์—ฌ๋Ÿฌ ์ •๋ณด๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฆฌ๋ทฐ ํ…Œ์ด๋ธ”๊ณผ ์˜ต์…˜ ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ์ด๋ฆ„ ์ฐธ์กฐ ๋ฐ›๊ฒŒ๋” ํ•˜์˜€๋‹ค.

 

์ƒํ’ˆ ํ…Œ์ด๋ธ”์—๋Š” FK๊ฐ€ ๋“ค์–ด๊ฐ€๋Š”๋ฐ ์ด๊ฒƒ์€ ๋ธŒ๋žœ๋“œ ํ…Œ์ด๋ธ”์„ ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. 

๋˜ํ•œ ๊ฐ€๊ฒฉ , ์ƒํ’ˆ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ์ •๋ณด๋“ค์ด ํฌํ•จ๋˜์–ด์žˆ๋‹ค.

 

1. category : ์ƒํ’ˆ์˜ ์นดํ…Œ๊ณ ๋ฆฌ ์ •๋ณด๋ฅผ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”๋กœ ๋นผ์ฃผ์—ˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”์€ FK ๊ฐ€ ๋‘๊ฐœ์ธ๋ฐ ํŒ๋งค์ž ํ…Œ์ด๋ธ”๊ณผ ์ƒํ’ˆ ํ…Œ์ด๋ธ” ๋‘ ๊ณณ์„ ์ฐธ์กฐํ•œ๋‹ค.

2. description : ์ƒํ’ˆ์˜ ์ƒ์„ธ ์„ค๋ช…์„ ์ €์žฅํ•œ๋‹ค. ๊ตณ์ด ๋”ฐ๋กœ ๋นผ์ค˜์•ผ ์‹ถ๊ธฐ๋„ ํ•˜๋‹ค..  

3. option : ์ƒํ’ˆ์˜ ์˜ต์…˜ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ์˜ต์…˜ ํ…Œ์ด๋ธ”์€ ์ž์‹ ํ…Œ์ด๋ธ” ํ•˜๋‚˜๋ฅผ ๋” ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ ์˜ต์…˜์˜ ์ƒ์„ธ ์ •๋ณด(Ex. ๊ฐ€๊ฒฉ , ์ˆ˜๋Ÿ‰)๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

4. brand : ์ƒํ’ˆ์˜ ๋ธŒ๋žœ๋“œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š”๋ฐ ์ƒํ’ˆ๊ณผ ๋ธŒ๋žœ๋“œ๋Š” N:1 ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒํ’ˆ ํ…Œ์ด๋ธ”์ด FK๋ฅผ ๊ฐ€์ง„๋‹ค.

5. shipments :  ๋กœ์ผ“ ๋ฐฐ์†ก ,๋กœ์ผ“ ํ”„๋ ˆ์‹œ ๋“ฑ ๋ฐฐ์†ก ์ข…๋ฅ˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ ์žˆ๋‹ค.

 

์ฃผ๋ฌธ ํ…Œ์ด๋ธ”

์ฃผ๋ฌธ ํ…Œ์ด๋ธ”์€ ํŒ๋งค์ž ์ •๋ณด , ํšŒ์› ์ •๋ณด , ์ƒํ’ˆ ์ •๋ณด ๋“ฑ ๋งŽ์€ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

์ด๋•Œ ํŒ๋งค์ž ํ…Œ์ด๋ธ”์€ seller ๋ผ๋Š” ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.

ํŒ๋งค์ž ํ…Œ์ด๋ธ”์€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ , ์ƒํ’ˆ , ์ฃผ๋ฌธ ๋“ฑ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์˜ FK ๊ฐ€ ๋œ๋‹ค.

 

๋ฆฌ๋ทฐ ํ…Œ์ด๋ธ”

๋ฆฌ๋ทฐ ํ…Œ์ด๋ธ”์€ ํ…Œ์ด๋ธ” ๋‚ด ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ๋ณ„์ ์ด๋‚˜ ๋ฆฌ๋ทฐ ์‚ฌ์ง„์€ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”๋กœ ๋ถ„๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค.

 

1. score : ๋ฆฌ๋ทฐ๋ฅผ ์“ด ์‚ฌ์šฉ์ž id ์™€ ๋ณ„์  ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

2. review_photo : ๋ฆฌ๋ทฐ์— ๋“ค์–ด๊ฐ€๋Š” ์‚ฌ์ง„ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

 

 

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

 

๊ด€๊ณ„ํ˜• DB๋Š” ํ…Œ์ด๋ธ”๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ , ํ…Œ์ด๋ธ”์€ ํ‚ค์™€ ๊ฐ’์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ด์ฒ˜๋Ÿผ ๊ด€๊ณ„ํ˜• DB๋Š” ์ข…์†์„ฑ์„ ๊ด€๊ณ„๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ํ‚ค(key)๋ž€ ํ–‰์˜ ์‹๋ณ„์ž๋กœ ์ด์šฉ๋˜๋Š” ์—ด์„ ๋งํ•œ๋‹ค ex) ID

 

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ํ™œ์šฉ

 

๋งŒ์•ฝ ์—ฌ๋Ÿฌ ์œ ํŠœ๋ฒ„๋“ค์˜ ์˜์ƒ์„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—

ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

 

 

์œ„์˜ ํ‘œ์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ์˜์ƒ์ž„์—๋„ ๊ฐ™์€ ์œ ํŠœ๋ฒ„์˜ ์ฐฝ์ž‘๋ฌผ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํšจ๊ณผ์ ์œผ๋กœ DB๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์„๊นŒ ?

์ด๋Ÿฐ ์‹์œผ๋กœ ์œ ํŠœ๋ฒ„์˜ ์ฝ”๋“œ๋งŒ์„ ๋”ฐ๋กœ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ค์–ด์„œ DB๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‹ค์Šต์„ ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.

๋จผ์ € video๋ผ๋Š” DB๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค.

๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด์ค€ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

์ด์ œ๋Š” join์œผ๋กœ ํ…Œ์ด๋ธ”์„ ํ•ฉ์น  ์ฐจ๋ก€๋‹ค.

๊ธฐ๋ณธ์ ์ธ LEFT JOIN ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ ํ…Œ์ด๋ธ”์„ ํ•ฉ์ณ์ฃผ์—ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ฝ”๋“œ ์—ด์ด ์ค‘๋ณต๋˜์–ด ์žˆ์–ด์„œ ํ•˜๋‚˜๋งŒ ๋‚˜์˜ค๋„๋ก ์„ค์ •ํ•ด์ค„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

 

AS ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ video ํ…Œ์ด๋ธ”์˜ ์ฝ”๋“œ๋งŒ ์ถœ๋ ฅ๋˜๋„๋ก ํ•˜์˜€๋‹ค.

 

์˜คํžˆ๋ ค ๋” ๋ณต์žกํ•ด์ง€๋Š” ๊ฑฐ ๊ฐ™์€๋ฐ, ์ด๋ ‡๊ฒŒ ๊ด€๊ณ„ํ˜• DB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์žฅ์ ์ด ๋ญ˜๊นŒ?

 

๊ด€๊ณ„ํ˜• DB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด,

1. ๋ฐ์ดํ„ฐ์˜ ๋ถ„๋ฅ˜, ์ •๋ ฌ, ํƒ์ƒ‰ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค

 

2. ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋œ ๋งŒํผ ์‹ ๋ขฐ์„ฑ์ด ๋†’๊ณ , ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ด์ค€๋‹ค.

 

ํ•˜์ง€๋งŒ,

๊ธฐ์กด์— ์ž‘์„ฑ๋œ ์Šคํ‚ค๋งˆ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋ผ๋Š”

๋‹จ์ ์ด ์žˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ,

 

 

 


๊ตฌ์กฐํ™”๋œ ์ •๋ณด ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์กฐ์งํ™”๋œ ๋ชจ์Œ์œผ๋กœ์จ ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๋‚ด์— ์ „์ž์ ์œผ๋กœ ์ €์žฅ

 

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ

 

์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

์ด ๋ฐ์ดํ„ฐ๋“ค์„ ์—ฐ๊ด€ ๋œ ํ•ญ๋ชฉ์— ๋งž๊ฒŒ ๊ทธ๋ฃนํ™” ์‹œํ‚ค๋Š” ๋ฐ ์ด๊ฒƒ์„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ํ˜น์€ ์Šคํ‚ค๋งˆ ๋ผ๊ณ  ํ•œ๋‹ค.

๋˜ ์Šคํ‚ค๋งˆ๋“ค์ด ๋ชจ์ธ ๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๊ฐ€ ๋œ๋‹ค.

 

SQL(strutured query language)

 

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์œผ๋ ค๋ฉด SQL ์ด๋ž€๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

Sql์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌ , ์กฐ์ž‘ ์ •์˜ํ•˜๊ณ  ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ vs ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค

 

์—‘์…€์˜ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์–ป๋Š” ์ด์ ์€ ๋ญ˜๊นŒ ?

 

- ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์กฐ์ž‘ ๋ฐฉ๋ฒ•

- ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ

- ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์–‘

 

์Šคํ”„๋ ˆํŠธ ์‹œํŠธ๋Š” ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž์— ๋งž๊ฒŒ ์„ค๊ณ„๋œ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ ๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•˜๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋‹ค์–‘ํ•œ ๊ถŒํ•œ์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ธฐ

 

 

DB ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์‹ถ์œผ๋ฉด ๋จผ์ € DB์„œ๋ฒ„์— ์ ‘์†์„ ํ•ด์•ผํ•œ๋‹ค.

 

Mysql์ด ์„ค์น˜๋˜์žˆ๋Š” ๊ฒฝ๋กœ๋กœ ๊ฐ€์„œ

Mysql โ€“uroot โ€“p ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  mysql ์„ค์น˜ ์‹œ ์„ค์ •ํ–ˆ๋˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ์„œ๋ฒ„๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Mysql ์‹ค์Šต

 

DB์™€ ํ…Œ์ด๋ธ”

 

DB ๋ช…๋ น์–ด

CREATE DATABASE ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

DROP DATABASE ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

SHOW DATABASES ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ˜„์žฌ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค..

Ex)

 

topic ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์ง€๋งŒ , ์ด๋ฏธ ์กด์žฌํ•˜์˜€๋‹ค.

๋”ฐ๋ผ์„œ DROP ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น DB๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.

์ด์ œ use topic ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋‹น DB๋ฅผ ์ด์šฉํ•ด์ฃผ๋„๋ก ํ•˜์ž

 

TABLE ๋ช…๋ น์–ด ๋ฐ ์ƒ์„ฑ ์‹ค์Šต

 

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ๊ฑฐ๊ธฐ์— ๋“ค์–ด๊ฐˆ ํ…Œ์ด๋ธ”๋“ค์„ ๋งŒ๋“ค์–ด ์ฃผ์–ด์•ผํ•œ๋‹ค.

ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์€ CREATE TABLE ์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

์ด์ œ ์ด ํ…Œ์ด๋ธ”๋“ค์„ ์ด์šฉํ•˜์—ฌ CRUD ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด๋ณผ๊ฒƒ์ด๋‹ค.

 

 

CRUD ๋ž€?

DB์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ฒƒ์œผ๋กœ

Create

Read

Update

Delete ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

Create

 

ํ…Œ์ด๋ธ”์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ, INSERT ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

Ex) INSERT INTO topic1(ID,col1,col2,created) VALUES("1","ROW1","ROW2",NOW());

Read

 

ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹ถ์„ ๋•Œ , SELECT ๋ช…๋ น์œผ๋กœ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค,

Ex) SELECT * FROM topic1;

   SELECT id,col1 FROM topic1;

*  ๋งŒ์ผ ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ์œผ๋ฉด where๋ฌธ์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

UPDATE

 

ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ , UPDATE ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

DELETE

 

ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•  ๋•Œ, DELETE ๋ช…๋ น์œผ๋กœ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

* WHERE ๋’ค์— ์กฐ๊ฑด๋ฌธ์„ ๊ผญ ๋‹ฌ์•„์ฃผ์–ด์•ผํ•œ๋‹ค !

 

 

 ์ฐธ๊ณ ) ์ƒํ™œ์ฝ”๋”ฉ Mysql

 https://www.youtube.com/watch?v=h_XDmyz--0w&list=PLuHgQVnccGMCgrP_9HL3dAcvdt8qOZxjW

 

 

+ Recent posts