[DATABASE] VIEWโ€ขINDEXโ€ขTRIGGER

์„ฑ์žฅ์ผ๊ธฐยท2024๋…„ 7์›” 2์ผ

[SWCAMP] DB

๋ชฉ๋ก ๋ณด๊ธฐ
7/14

VIEW

๐Ÿ’ก SELECT ์ฟผ๋ฆฌ๋ฌธ์„ ์ €์žฅํ•œ ๊ฐ์ฒด๋กœ ๊ฐ€์ƒํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.
์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ณ  ์ฟผ๋ฆฌ๋งŒ ์ €์žฅํ–ˆ์ง€๋งŒ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

VIEW๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋™์‹œ์—, ์›๋ณธ ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค.

VIEW ์ƒ์„ฑ

  • VIEW ์ƒ์„ฑ ํ›„ ์กฐํšŒ

    SELECT * FROM tbl_menu;
    
    -- VIEW ์ƒ์„ฑ
    CREATE VIEW hansik AS
    SELECT 
           menu_code 
         , menu_name
         , menu_price
         , category_code
         , orderable_status
      FROM tbl_menu 
     WHERE category_code = 4;
    
    -- ์ƒ์„ฑ๋œ VIEW ์กฐํšŒ
    SELECT * FROM hansik;

    ์‹คํ–‰๊ฒฐ๊ณผ

  • ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด VIEW์˜ ๊ฒฐ๊ณผ๋„ ๊ฐ™์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

    INSERT 
      INTO tbl_menu 
    VALUES (null, '์‹ํ˜œ๋ง›๊ตญ๋ฐฅ', 5500, 4, 'Y');
    SELECT * FROM hansik;

    ์‹คํ–‰๊ฒฐ๊ณผ

VIEW๋ฅผ ํ†ตํ•œ DML

  • VIEW๋ฅผ ํ†ตํ•œ DML ์ž‘์—…์€ ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์—๋„ ์˜ํ–ฅ์„ ์ฃผ๊ฒŒ ๋œ๋‹ค.

VIEW๋ฅผ ํ†ตํ•œ INSERT

  • VIEW๋Š” AUTO_INCREMENT๊ฐ€ ์—†์œผ๋ฏ€๋กœ pk ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • VIEW๋ฅผ ํ†ตํ•œ INSERT ์ดํ›„ VIEW ์กฐํšŒ ๋ฐ ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์กฐํšŒ
    -- INSERT INTO hansik VALUES (null, '์‹ํ˜œ๋ง›๊ตญ๋ฐฅ', 5500, 4, 'Y');    -- ์—๋Ÿฌ ๋ฐœ์ƒ
    INSERT 
      INTO hansik
    VALUES (99, '์ˆ˜์ •๊ณผ๋ง›๊ตญ๋ฐฅ', 5500, 4, 'Y');   
    SELECT * FROM hansik;
    SELECT * FROM tbl_menu;

    ์‹คํ–‰๊ฒฐ๊ณผ

VIEW๋ฅผ ํ†ตํ•œ UPDATE

  • VIEW๋ฅผ ํ†ตํ•œ UPDATE ์ดํ›„ VIEW ์กฐํšŒ ๋ฐ ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์กฐํšŒ
    UPDATE hansik
       SET menu_name = '๋ฒ„ํ„ฐ๋ง›๊ตญ๋ฐฅ', menu_price = 5700 
     WHERE menu_code = 99;
    SELECT * FROM hansik;
    SELECT * FROM tbl_menu;

    ์‹คํ–‰๊ฒฐ๊ณผ

VIEW๋ฅผ ํ†ตํ•œ DELETE

  • VIEW๋ฅผ ํ†ตํ•œ DELETE ์ดํ›„ VIEW ์กฐํšŒ ๋ฐ ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์กฐํšŒ
    DELETE FROM hansik WHERE menu_code = 99;
    SELECT * FROM hansik;
    SELECT * FROM tbl_menu;

    ์‹คํ–‰๊ฒฐ๊ณผ

VIEW๋กœ DML ๋ช…๋ น์–ด๋กœ ์กฐ์ž‘์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ

  • ์‚ฌ์šฉ๋œ SUBQUERY์— ๋”ฐ๋ผ DMB ๋ช…๋ น์–ด๋กœ ์กฐ์ž‘์ด ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋‹ค.
    1. ๋ทฐ ์ •์˜์— ํฌํ•จ๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
    2. ๋ทฐ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ ์ค‘์— ๋ฒ ์ด์Šค๊ฐ€ ๋˜๋Š” ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์ด NOT NULL ์ œ์•ฝ์กฐ๊ฑด์ด ์ง€์ •๋œ ๊ฒฝ์šฐt
    3. ์‚ฐ์ˆ  ํ‘œํ˜„์‹์ด ์ •์˜๋œ ๊ฒฝ์šฐ
    4. JOIN์„ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•œ ๊ฒฝ์šฐ
    5. DISTINCT๋ฅผ ํฌํ•จํ•œ ๊ฒฝ์šฐ
    6. ๊ทธ๋ฃนํ•จ์ˆ˜๋‚˜ GROUP BY ์ ˆ์„ ํฌํ•จํ•œ ๊ฒฝ์šฐ

VIEW ์‚ญ์ œ

  • VIEW์— ์“ฐ์ธ SUBQUERY ์•ˆ์— ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ์ปฌ๋Ÿผ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

    DROP VIEW hansik;

    ์‹คํ–‰๊ฒฐ๊ณผ

  • OR REPLACE ์˜ต์…˜

    • ํ…Œ์ด๋ธ”์„ DROPํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด์˜ VIEW๋ฅผ ์ƒˆ๋กœ์šด VIEW๋กœ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

      CREATE OR REPLACE VIEW hansik AS
      SELECT 
             menu_code AS '๋ฉ”๋‰ด์ฝ”๋“œ'
           , menu_name '๋ฉ”๋‰ด๋ช…'
           , category_name '์นดํ…Œ๊ณ ๋ฆฌ๋ช…'
        FROM tbl_menu a
        JOIN tbl_category b ON a.category_code = b.category_code
       WHERE b.category_name = 'ํ•œ์‹';
      
      SELECT * FROM hansik;

      ์‹คํ–‰๊ฒฐ๊ณผ

INDEX

๐Ÿ’ก ์ธ๋ฑ์Šค(Index)๋Š” ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ ์ „์ฒด ํ…Œ์ด๋ธ”์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋Œ€์‹  ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰์„ ํ•˜๋ฏ€๋กœ ์†๋„๊ฐ€ ๋” ๋นจ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

์ธ๋ฑ์Šค๋Š” ์ฃผ๋กœ WHERE์ ˆ์˜ ์กฐ๊ฑด์ด๋‚˜ JOIN ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์— ์ƒ์„ฑํ•œ๋‹ค.

๋‹ค๋งŒ ์ธ๋ฑ์Šค๋„ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ธ๋ฑ์Šค ์—ญ์‹œ ๊ฐฑ์‹ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ• ์ง€๋Š” ์‹ ์ค‘ํžˆ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

์ธ๋ฑ์Šค ์ƒ์„ฑ

  • PRIMARY KEY ์ œ์•ฝ์กฐ๊ฑด์„ ์ง€๋‹Œ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ›„ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ INSERT ํ›„ ์กฐํšŒ

    CREATE TABLE phone (
        phone_code INT PRIMARY KEY,
        phone_name VARCHAR(100),
        phone_price DECIMAL(10, 2)
    );
    
    INSERT 
      INTO phone (phone_code , phone_name , phone_price )
    VALUES 
    (1, 'galaxyS23', 1200000),
    (2, 'iPhone14pro', 1433000),
    (3, 'galaxyZfold3', 1730000);
    
    SELECT * FROM phone;

    ์‹คํ–‰๊ฒฐ๊ณผ

  • ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ์ปฌ๋Ÿผ์„ WHERE์ ˆ์˜ ์กฐ๊ฑด์œผ๋กœ ํ™œ์šฉํ•œ ์กฐํšŒ ์ง„ํ–‰ ์‹œ EXPLAIN์œผ๋กœ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš ํ™•์ธ

    EXPLAIN SELECT * FROM phone WHERE phone_name = 'galaxyS23';

    ์‹คํ–‰๊ฒฐ๊ณผ

  • phone_name ์ปฌ๋Ÿผ์— idx_name์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ธ๋ฑ์Šค ์ƒ์„ฑ ํ›„ ํ™•์ธ

    CREATE INDEX idx_name ON phone (phone_name);

    ์‹คํ–‰๊ฒฐ๊ณผ

  • 2๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค๋กœ ์„ค์ •ํ•ด์„œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ณตํ•ฉ ์ธ๋ฑ์Šค ์ƒ์„ฑ

    CREATE INDEX idx_name_price ON phone (phone_name, phone_price);
    
    SHOW INDEX FROM phone;

    ์‹คํ–‰๊ฒฐ๊ณผ

์ธ๋ฑ์Šค ํ™œ์šฉ

  • ํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค๊ฐ€ ์„ค์ • ๋œ ์ปฌ๋Ÿผ์„ ํ™œ์šฉํ•ด ์กฐํšŒ๋ฅผ ์ง„ํ–‰

    SELECT * FROM phone WHERE phone_name = 'iPhone14pro';

    ์‹คํ–‰๊ฒฐ๊ณผ

  • EXPLAIN ๋ช…๋ น์–ด๋กœ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš ํ™•์ธ(์ธ๋ฑ์Šค ์‚ฌ์šฉ ์—ฌ๋ถ€ ๋ฐ ์‚ฌ์šฉ ์ปฌ๋Ÿผ ํ™•์ธ)

    EXPLAIN SELECT * FROM phone WHERE phone_name = 'iPhone14pro';

    ์‹คํ–‰๊ฒฐ๊ณผ

  • ์ธ๋ฑ์Šค ์ตœ์ ํ™”(์žฌ๊ตฌ์„ฑ)

    • ์ธ๋ฑ์Šค ์ตœ์ ํ™”(์žฌ๊ตฌ์„ฑ)์€ ์ธ๋ฑ์Šค๊ฐ€ ํŒŒํŽธํ™”๋˜์—ˆ๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ์˜ ๋Œ€๋ถ€๋ถ„์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋‹ค.

    • ์ด๋Š” ์ธ๋ฑ์Šค์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ณ , ๋””์Šคํฌ ๊ณต๊ฐ„์„ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

    • ๋‹จ, ์ธ๋ฑ์Šค๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๋™์•ˆ ํ•ด๋‹น ํ…Œ์ด๋ธ”์€ ์ž ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด ์ž‘์—…์€ ์ฃผ์˜ํ•ด์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

    • 'ALTER TABLE' ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์žฌ๊ตฌ์„ฑํ•œ๋‹ค.

      ALTER TABLE phone DROP INDEX idx_name;
      ALTER TABLE phone ADD INDEX idx_name(phone_name);

      ์‹คํ–‰๊ฒฐ๊ณผ

    • ๋˜ํ•œ, MySQL์˜ InnoDB ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” OPTIMIZE TABLE ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”๊ณผ ์ธ๋ฑ์Šค๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

      OPTIMIZE TABLE phone;

      ์‹คํ–‰๊ฒฐ๊ณผ

์ธ๋ฑ์Šค ์‚ญ์ œ

  • ์ธ๋ฑ์Šค ์‚ญ์ œ ํ›„ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ์ธ๋ฑ์Šค ํ™•์ธ
    DROP INDEX idx_name ON phone;
    SHOW INDEX FROM phone;

์‹คํ–‰๊ฒฐ๊ณผ

TRIGGER

๐Ÿ’ก ํŠธ๋ฆฌ๊ฑฐ๋ž€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํŠน์ • ์ด๋ฒคํŠธ(INSERT, UPDATE, DELETE)๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด์ด๋‹ค.

์ฃผ์š” ์‚ฌ์šฉ ๋ชฉ์ ์€ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

๋‹ค๋งŒ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋‚จ์šฉํ•  ์‹œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋‚˜ ๋ณต์žก์„ฑ ์ฆ๊ฐ€์™€ ๊ฐ™์€ ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

  • ํŠธ๋ฆฌ๊ฑฐ์˜ ์ข…๋ฅ˜
    • BEFORE ํŠธ๋ฆฌ๊ฑฐ
      • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋ฉฐ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋‚˜ ๋ณ€ํ˜•์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
    • AFTER ํŠธ๋ฆฌ๊ฑฐ
      • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„์— ์‹คํ–‰๋˜๋ฉฐ ๋กœ๊น…, ์•Œ๋ฆผ ์ „์†ก ๋“ฑ์˜ ์ž‘์—…์— ์ ํ•ฉํ•˜๋‹ค.
  • ํŠธ๋ฆฌ๊ฑฐ ์ž‘์„ฑ๋ฒ•
DELIMITER // 

CREATE OR REPLACE TRIGGER [ํŠธ๋ฆฌ๊ฑฐ๋ช…]
    BEFORE|AFTER [์ด๋ฒคํŠธ ํƒ€์ž…]
    ON [ํ…Œ์ด๋ธ”๋ช…]
    FOR EACH ROW
BEGIN
END//

DELIMITER ;

ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ

  • ์ฃผ๋ฌธ ๋ฉ”๋‰ด(tbl_order_menu) ํ…Œ์ด๋ธ”์— INSERT๊ฐ€ ๋˜๊ณ  ๋‚˜์„œ ์ฃผ๋ฌธ(tbl_order) ํ…Œ์ด๋ธ”์˜ ์ด ํ•ฉ๊ณ„๊ฐ€ UPDATE ๋  ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ
DELIMITER //

CREATE OR REPLACE TRIGGER after_order_menu_insert
    AFTER INSERT
    ON tbl_order_menu
    FOR EACH ROW
BEGIN
    UPDATE tbl_order
    SET total_order_price = total_order_price + NEW.order_amount * (SELECT menu_price FROM tbl_menu WHERE menu_code = NEW.menu_code)
    WHERE order_code = NEW.order_code;
END//

DELIMITER ;

ํŠธ๋ฆฌ๊ฑฐ ํ™œ์šฉ

  • ์ฃผ๋ฌธ ํ…Œ์ด๋ธ”๊ณผ ์ฃผ๋ฌธ ๋ฉ”๋‰ด ํ…Œ์ด๋ธ”์— INSERT ์ž‘์—… ์ดํ›„ ์ฃผ๋ฌธ ํ…Œ์ด๋ธ”์˜ ์ด ํ•ฉ๊ณ„๊ฐ€ UPDATE ๋˜๋Š” ๊ฒƒ ํ™•์ธ
-- ์ฃผ๋ฌธ ํ…Œ์ด๋ธ” INSERT
INSERT
  INTO tbl_order
(
  order_code
, order_date
, order_time
, total_order_price
)
VALUES
(
  NULL
, CONCAT(CAST(YEAR(NOW()) AS VARCHAR(4))
	    , CAST(LPAD(MONTH(NOW()), 2, 0) AS VARCHAR(2))
	    , CAST(LPAD(DAY(NOW()), 2, 0) AS VARCHAR(2)))
, CONCAT(CAST(LPAD(HOUR(NOW()), 2, 0) AS VARCHAR(2))
       , CAST(LPAD(MINUTE(NOW()), 2, 0) AS VARCHAR(2))
       , CAST(LPAD(SECOND(NOW()), 2, 0) AS VARCHAR(2)))
, 0			
);

-- ์ฃผ๋ฌธ ๋ฉ”๋‰ด ํ…Œ์ด๋ธ” INSERT 1
INSERT
  INTO tbl_order_menu
(
  order_code
, menu_code
, order_amount
)
VALUES
(
  1
, 3
, 2
);

-- ์ฃผ๋ฌธ ๋ฉ”๋‰ด ํ…Œ์ด๋ธ” INSERT 2
INSERT
  INTO tbl_order_menu
(
  order_code
, menu_code
, order_amount
)
VALUES
(
  1
, 6
, 3
);

SELECT * FROM tbl_order;
SELECT * FROM tbl_order_menu;

-- ๋‹ค์‹œ ๋˜๋Œ๋ ค ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ณ ์ž ํ•  ๊ฒฝ์šฐ
-- 1) rollbackํ•˜๊ธฐ
ROLLBACK;
-- 2) ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์ง€์šฐ๊ธฐ
DELETE FROM tbl_order WHERE 1 = 1;
DELETE FROM tbl_order_menu WHERE 1 = 1;

-- ์ดํ›„ AUTO_INCREMENT๋„ ๋‹ค์‹œ ์ดˆ๊ธฐํ™” ํ•ด ์ค€๋‹ค.
ALTER TABLE tbl_order AUTO_INCREMENT = 1;
profile
์—”์ง€๋‹ˆ์–ด๋กœ์˜ ์„ฑ์žฅ์ผ์ง€

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