[DATABASE] DQL SECTION1

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

[SWCAMP] DB

๋ชฉ๋ก ๋ณด๊ธฐ
3/14
post-thumbnail

SELECT

๐Ÿ’ก SELECT์ ˆ์€ MariaDB์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด๋กœ ํŠน์ • ํ…Œ์ด๋ธ”์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์„œ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ์‚ฌ์šฉ ๋œ๋‹ค.

SELECT CLAUSE

  • SELECT ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์—ด์—์„œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰

    SELECT
           menu_code
         , menu_name
         , menu_price
         , category_code
         , orderable_status
      FROM tbl_menu;
    SELECT 
           *
      FROM tbl_menu;

SELECT(only)

  • SELECT๋Š” FROM์ ˆ ์—†์ด ๋‹จ์ˆœ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์ ˆ์ด๋‹ค.

  • ์—ฐ์‚ฐ์ž ๊ฒฐ๊ณผ ํ™•์ธ

    SELECT 7 + 3;   
    SELECT 7 * 3;
    SELECT 7 % 3;

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

  • ๋‚ด์žฅํ•จ์ˆ˜ ๊ฒฐ๊ณผ ํ™•์ธ

    SELECT NOW();
    SELECT CONCAT('ํ™',' ','๊ธธ๋™');

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

ORDER_BY CLAUSE

๐Ÿ’ก ORDER BY์ ˆ์€ select๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ํŠน์ • ์—ด์ด๋‚˜ ์—ด๋“ค์˜ ๊ฐ’์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

ORDER BY

  • ORDER BY ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ํ•˜๋‚˜์˜ ์—ด๋กœ ์ •๋ ฌ

    SELECT
           menu_code
         , menu_name
         , menu_price
      FROM tbl_menu
    --  ORDER BY menu_price ASC;	-- ์˜ค๋ฆ„์ฐจ์ˆœ(default)
    --  ORDER BY menu_price DESC;	-- ๋‚ด๋ฆผ์ฐจ์ˆœ
     ORDER BY menu_price;

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

  • ORDER BY ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ์—ฌ๋Ÿฌ ์—ด๋กœ ์ •๋ ฌ

    SELECT
           menu_code
         , menu_name
         , menu_price
      FROM tbl_menu
     ORDER BY menu_price DESC, menu_name ASC;

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

  • ๋ณ„์นญ์„ ๋‹ฌ์•„์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

    SELECT
           menu_code AS '๋ฉ”๋‰ด์ฝ”๋“œ'
         , menu_price AS '๋ฉ”๋‰ด๊ฐ€๊ฒฉ'
         , menu_code * menu_price AS '์—ฐ์‚ฐ๊ฒฐ๊ณผ'
      FROM tbl_menu
     ORDER BY ์—ฐ์‚ฐ๊ฒฐ๊ณผ DESC;

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

  • ORDER BY ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ •๋ ฌ

    • ๋งจ ์™ผ์ชฝ์˜ ๊ฐ’์ด 2๋ฒˆ์งธ ์ธ์ž ์ดํ›„์˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ
      (์ด๋ ‡๊ฒŒ ๋ฐ˜ํ™˜๋œ ๊ฐ’์€ ์ •๋ ฌ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.)

      SELECT FIELD('A', 'A', 'B', 'C');

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

      SELECT 
             FIELD(orderable_status, 'N', 'Y')
        FROM tbl_menu;

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

  • field ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํŠน์ •ํ•œ ๊ฐ’์„ ์šฐ์„ ์ ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    SELECT
           menu_name
         , orderable_status
      FROM tbl_menu
     ORDER BY FIELD(orderable_status, 'N', 'Y');

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

  • null๊ฐ’์ด ์žˆ๋Š” ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์ •๋ ฌ

    • ์˜ค๋ฆ„์ฐจ์ˆœ ์‹œ NULL ์ฒ˜์Œ์œผ๋กœ(DEFAULT)

      SELECT
             category_code
           , category_name
           , ref_category_code
        FROM tbl_category
      --  ORDER BY ref_category_code ASC;
       ORDER BY ref_category_code;	-- ASC ์ƒ๋žต ๊ฐ€๋Šฅ

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

    • ์˜ค๋ฆ„์ฐจ์ˆœ ์‹œ NULL ๋งˆ์ง€๋ง‰์œผ๋กœ(IS NULL ASC)

      SELECT
             category_code
           , category_name
           , ref_category_code
        FROM tbl_category
       ORDER BY -ref_category_code DESC;	-- ๋งˆ์ด๋„ˆ์Šค(-)๋ถ€ํ˜ธ๋ฅผ ๋ถ™์ด๊ณ  DESC๋ฅผ ์ ์šฉํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.
                                          -- ๋งˆ์ด๋„ˆ์Šค ๋ถ€ํ˜ธ๋Š” null์„ ์ œ์™ธํ•˜๊ณ  ์ •๋ ฌ์„ ๋ฐ˜๋Œ€๋กœ ๋’ค์ง‘๋Š” ๊ฒƒ์ด๋‹ค.

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

    • ๋‚ด๋ฆผ์ฐจ์ˆœ ์‹œ NULL ๋งˆ์ง€๋ง‰์œผ๋กœ(DEFAULT)

      SELECT
             category_code
           , category_name
           , ref_category_code
        FROM tbl_category
       ORDER BY ref_category_code DESC;

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

    • ๋‚ด๋ฆผ์ฐจ์ˆœ ์‹œ NULL ์ฒ˜์Œ์œผ๋กœ(IS NULL DESC)

      SELECT
             category_code
           , category_name
           , ref_category_code
        FROM tbl_category
       ORDER BY -ref_category_code ASC;

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

WHERE CLAUSE

๐Ÿ’ก WHERE์ ˆ์€ ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ๋งŒ์„ ์„ ํƒํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋น„๊ต ์—ฐ์‚ฐ์ž ํ™œ์šฉ

  • ๊ฐ™์Œ(=) ์—ฐ์‚ฐ์ž ์˜ˆ์ œ์™€ ํ•จ๊ป˜ WHERE์ ˆ ์‚ฌ์šฉ
SELECT
       menu_name
     , menu_price
     , orderable_status
  FROM tbl_menu
 WHERE menu_price = 13000;

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

  • ๊ฐ™์ง€ ์•Š์Œ(!=, <>) ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ WHERE์ ˆ ์‚ฌ์šฉ
    SELECT
           menu_code
         , menu_name
         , orderable_status
      FROM tbl_menu
    --  WHERE orderable_status <> 'Y';
     WHERE orderable_status != 'Y';

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

AND OPERATOR

  • AND ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ WHERE์ ˆ ์‚ฌ์šฉ

    • 0๊ณผ NULL์ด ์•„๋‹Œ ๊ฐ’๋“ค์ผ ๊ฒฝ์šฐ 1์ด๋‹ค.

    • ํ•˜๋‚˜๋ผ๋„ 0์ด๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค 0์ผ ๊ฒฝ์šฐ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(์ด๋ฏธ 0์ด๋ฉด ๋’ค๋ฅผ ์—ฐ์‚ฐํ•˜์ง€ ์•Š๋Š”๋‹ค.)

    • 0์ด ์•„๋‹Œ ๊ฐ’๊ณผ NULL์ด๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค NULL์ผ ๊ฒฝ์šฐ NULL์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    • AND ๊ฒฐ๊ณผ ํ‘œ

      TRUEFALSENULL
      TRUETRUEFALSENULL
      FALSEFALSEFALSEFALSE
      NULLNULLFALSENULL
      • 0์ด ์•„๋‹Œ ๊ฐ’์€ TRUE
      • 0์ธ ๊ฐ’์€ FALSE
      • NULL ๊ฐ’์€ NULL
      SELECT 1 AND 2;
      SELECT 1 AND 0, 0 AND 1, 0 AND 0, 0 AND NULL;
      SELECT 1 AND NULL, NULL AND NULL;

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

SELECT
       menu_name
     , menu_price
     , category_code
     , orderable_status
  FROM tbl_menu
 WHERE orderable_status = 'Y'
   AND category_code = 10;

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

OR OPERATOR

  • OR ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ WHERE์ ˆ ์‚ฌ์šฉ
    • ๋‘˜ ๋‹ค NULL์ด ์•„๋‹ˆ๋ฉด์„œ ํ•˜๋‚˜๋ผ๋„ 0์ด ์•„๋‹Œ ๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ 1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(์ด๋ฏธ 1์ด๋ฉด ๋’ค๋ฅผ ์—ฐ์‚ฐํ•˜์ง€ ์•Š๋Š”๋‹ค.)

    • ๋‘˜ ๋‹ค 0์ผ ๊ฒฝ์šฐ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    • 1์„ ์ œ์™ธํ•œ ๊ฐ’๋“ค์—์„œ ํ•˜๋‚˜๋ผ๋„ NULL์ด๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค NULL์ผ ๊ฒฝ์šฐ NULL์„ ๋ฐ˜ํ™˜ํ•œ ๋‹ค.

    • OR ๊ฒฐ๊ณผ ํ‘œ

      TRUEFALSENULL
      TRUETRUETRUETRUE
      FALSETRUEFALSENULL
      NULLTRUENULLNULL
      - 0์ด ์•„๋‹Œ ๊ฐ’์€ TRUE
      - 0์ธ ๊ฐ’์€ FALSE
      - NULL ๊ฐ’์€ NULL
      SELECT 1 OR 1, 1 OR 0, 0 OR 1;
      SELECT 0 OR 0;
      SELECT 1 OR NULL, 0 OR NULL, NULL or NULL;

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

SELECT
       menu_name
     , menu_price
     , category_code
     , orderable_status
  FROM tbl_menu
 WHERE orderable_status = 'Y'
    OR category_code = 10
 ORDER BY category_code;

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

  • AND์™€ OR์˜ ์šฐ์„ ์ˆœ์œ„
    • AND๊ฐ€ OR๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

    • OR์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์ด๊ณ  ์‹ถ๋‹ค๋ฉด ์†Œ๊ด„ํ˜ธ(())๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

      SELECT 1 OR 0 AND 0;
      SELECT (1 OR 0) AND 0;

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

SELECT
       menu_code
     , menu_name
     , menu_price
     , category_code
     , orderable_status
  FROM tbl_menu
 WHERE category_code = 4
    OR menu_price = 9000
   AND menu_code > 10;

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

BETWEEN OPERATOR

  • BETWEEN ์—ฐ์‚ฐ์ž ์˜ˆ์ œ์™€ ํ•จ๊ป˜ WHERE์ ˆ ์‚ฌ์šฉ
    SELECT
           menu_name
         , menu_price
         , category_code
      FROM tbl_menu
     WHERE menu_price >= 10000
       AND menu_price <= 25000
     ORDER BY menu_price;

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

SELECT
       menu_name
     , menu_price
     , category_code
  FROM tbl_menu
 WHERE menu_price BETWEEN 10000 AND 25000
 ORDER BY menu_price;

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

  • ๋ถ€์ • ํ‘œํ˜„

    SELECT
           menu_name
         , menu_price
         , category_code
      FROM tbl_menu
     WHERE menu_price NOT BETWEEN 10000 AND 25000
     ORDER BY menu_price;

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

LIKE OPERATOR

  • LIKE ์—ฐ์‚ฐ์ž ์˜ˆ์ œ์™€ ํ•จ๊ป˜ MySQL WHERE์ ˆ ์‚ฌ์šฉ
    SELECT
            menu_name
          , menu_price
       FROM tbl_menu
      WHERE menu_name LIKE '%๋งˆ๋Š˜%'
      ORDER BY menu_name;

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

SELECT
       menu_code
     , menu_name
     , menu_price
     , category_code
     , orderable_status
  FROM tbl_menu
 WHERE menu_price > 5000
   AND category_code = 10
	AND menu_name LIKE '%๊ฐˆ์น˜%';

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

  • ๋ถ€์ • ํ‘œํ˜„
    SELECT
            menu_name
          , menu_price
       FROM tbl_menu
      WHERE menu_name NOT LIKE '%๋งˆ๋Š˜%'
      ORDER BY menu_name;

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

IN OPERATOR

  • IN ์—ฐ์‚ฐ์ž ์˜ˆ์ œ์™€ ํ•จ๊ป˜ WHERE์ ˆ ์‚ฌ์šฉ
SELECT 
        menu_name
      , category_code
   FROM tbl_menu
  WHERE category_code IN (4, 5, 6)
  ORDER BY category_code;

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

  • ๋ถ€์ • ํ‘œํ˜„
    SELECT 
            menu_name
          , category_code
       FROM tbl_menu
      WHERE category_code NOT IN (4, 5, 6)
      ORDER BY category_code;

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

IS NULL OPERATOR

  • IS NULL ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ WHERE์ ˆ ์‚ฌ์šฉ
  • IS NOT NULL๋กœ ๋ถ€์ • ํ‘œํ˜„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    SELECT 
           category_code, 
           category_name, 
           ref_category_code
      FROM tbl_category
     -- WHERE ref_category_code IS NOT NULL;
     WHERE ref_category_code IS NULL;

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

DISTINCT

๐Ÿ’ก DISTINCT๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
์ปฌ๋Ÿผ์— ์žˆ๋Š” ์ปฌ๋Ÿผ๊ฐ’๋“ค์˜ ์ข…๋ฅ˜๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋‹จ์ผ์—ด DISTINCT ์‚ฌ์šฉ
    SELECT 
           category_code
      FROM tbl_menu
     ORDER BY category_code;

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

-- ๋ฉ”๋‰ด๊ฐ€ ์กด์žฌํ•˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ข…๋ฅ˜๋ฅผ ๋ฝ‘์„ ๋•Œ Distinct๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
SELECT 
       DISTINCT category_code
  FROM tbl_menu
 ORDER BY category_code;

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

  • NULL๊ฐ’์„ ํฌํ•จํ•œ ์—ด์˜ DISTINCT ์‚ฌ์šฉ
    SELECT
           ref_category_code
      FROM tbl_category;

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

SELECT
       DISTINCT ref_category_code
  FROM tbl_category;

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

  • ๋‹ค์ค‘์—ด DISTINCT ์‚ฌ์šฉ
    • ๋‹ค์ค‘์—ด์˜ ๊ฐ’๋“ค์ด ๋ชจ๋‘ ๋™์ผํ•˜๋ฉด ์ค‘๋ณต๋œ ๊ฒƒ์œผ๋กœ ํŒ๋ณ„ํ•œ๋‹ค.

      SELECT 
             category_code
           , orderable_status
        FROM tbl_menu;

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

      SELECT 
             DISTINCT category_code
           , orderable_status
        FROM tbl_menu;

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

LIMIT

๐Ÿ’ก LIMIT ํ‚ค์›Œ๋“œ๋Š” SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์—์„œ ๋ฐ˜ํ™˜ํ•  ํ–‰์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

SELECT
    select_list
FROM
    table_name
LIMIT [offset,] row_count;

offset: ์‹œ์ž‘ํ•  ํ–‰์˜ ๋ฒˆํ˜ธ(์ธ๋ฑ์Šค ์ฒด๊ณ„)
row_count: ์ดํ›„ ํ–‰๋ถ€ํ„ฐ ๋ฐ˜ํ™˜ ๋ฐ›์„ ํ–‰์˜ ๊ฐœ์ˆ˜

LIMIT ํ™œ์šฉ

  • ์ „์ฒด ํ–‰ ์กฐํšŒ

    SELECT
           menu_code
         , menu_name
         , menu_price
      FROM tbl_menu
    ORDER BY
        menu_price DESC;

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

  • 2๋ฒˆ ํ–‰๋ถ€ํ„ฐ 5๋ฒˆ ํ–‰๊นŒ์ง€ ์กฐํšŒ

    SELECT
           menu_code
         , menu_name
         , menu_price
      FROM tbl_menu
     ORDER BY menu_price DESC
     LIMIT 1, 4;

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

  • ์ƒ์œ„ ๋‹ค์„ฏ์ค„์˜ ํ–‰๋งŒ ์กฐํšŒ

    SELECT 
           menu_code
         , menu_name
         , menu_price
    FROM tbl_menu
    ORDER BY menu_price DESC, menu_name ASC
    LIMIT 5;

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

  • ํ™œ์šฉ ๋ฐ์ดํ„ฐ์…‹

-- ํ…Œ์ด๋ธ” ์‚ญ์ œ
DROP TABLE IF EXISTS tbl_payment_order CASCADE;
DROP TABLE IF EXISTS tbl_payment CASCADE;
DROP TABLE IF EXISTS tbl_order_menu CASCADE;
DROP TABLE IF EXISTS tbl_order CASCADE;
DROP TABLE IF EXISTS tbl_menu CASCADE;
DROP TABLE IF EXISTS tbl_category CASCADE;

-- ํ…Œ์ด๋ธ” ์ƒ์„ฑ
-- category ํ…Œ์ด๋ธ” ์ƒ์„ฑ
CREATE TABLE IF NOT EXISTS tbl_category
(
    category_code    INT AUTO_INCREMENT COMMENT '์นดํ…Œ๊ณ ๋ฆฌ์ฝ”๋“œ',
    category_name    VARCHAR(30) NOT NULL COMMENT '์นดํ…Œ๊ณ ๋ฆฌ๋ช…',
    ref_category_code    INT COMMENT '์ƒ์œ„์นดํ…Œ๊ณ ๋ฆฌ์ฝ”๋“œ',
    CONSTRAINT pk_category_code PRIMARY KEY (category_code),
    CONSTRAINT fk_ref_category_code FOREIGN KEY (ref_category_code) REFERENCES tbl_category (category_code)
) ENGINE=INNODB COMMENT '์นดํ…Œ๊ณ ๋ฆฌ';

CREATE TABLE IF NOT EXISTS tbl_menu
(
    menu_code    INT AUTO_INCREMENT COMMENT '๋ฉ”๋‰ด์ฝ”๋“œ',
    menu_name    VARCHAR(30) NOT NULL COMMENT '๋ฉ”๋‰ด๋ช…',
    menu_price    INT NOT NULL COMMENT '๋ฉ”๋‰ด๊ฐ€๊ฒฉ',
    category_code    INT NOT NULL COMMENT '์นดํ…Œ๊ณ ๋ฆฌ์ฝ”๋“œ',
    orderable_status    CHAR(1) NOT NULL COMMENT '์ฃผ๋ฌธ๊ฐ€๋Šฅ์ƒํƒœ',
    CONSTRAINT pk_menu_code PRIMARY KEY (menu_code),
    CONSTRAINT fk_category_code FOREIGN KEY (category_code) REFERENCES tbl_category (category_code)
) ENGINE=INNODB COMMENT '๋ฉ”๋‰ด';

CREATE TABLE IF NOT EXISTS tbl_order
(
    order_code    INT AUTO_INCREMENT COMMENT '์ฃผ๋ฌธ์ฝ”๋“œ',
    order_date    VARCHAR(8) NOT NULL COMMENT '์ฃผ๋ฌธ์ผ์ž',
    order_time    VARCHAR(8) NOT NULL COMMENT '์ฃผ๋ฌธ์‹œ๊ฐ„',
    total_order_price    INT NOT NULL COMMENT '์ด์ฃผ๋ฌธ๊ธˆ์•ก',
    CONSTRAINT pk_order_code PRIMARY KEY (order_code)
) ENGINE=INNODB COMMENT '์ฃผ๋ฌธ';

CREATE TABLE IF NOT EXISTS tbl_order_menu
(
    order_code INT NOT NULL COMMENT '์ฃผ๋ฌธ์ฝ”๋“œ',
    menu_code    INT NOT NULL COMMENT '๋ฉ”๋‰ด์ฝ”๋“œ',
    order_amount    INT NOT NULL COMMENT '์ฃผ๋ฌธ์ˆ˜๋Ÿ‰',
    CONSTRAINT pk_comp_order_menu_code PRIMARY KEY (order_code, menu_code),
    CONSTRAINT fk_order_menu_order_code FOREIGN KEY (order_code) REFERENCES tbl_order (order_code),
    CONSTRAINT fk_order_menu_menu_code FOREIGN KEY (menu_code) REFERENCES tbl_menu (menu_code)
) ENGINE=INNODB COMMENT '์ฃผ๋ฌธ๋ณ„๋ฉ”๋‰ด';

CREATE TABLE IF NOT EXISTS tbl_payment
(
    payment_code    INT AUTO_INCREMENT COMMENT '๊ฒฐ์ œ์ฝ”๋“œ',
    payment_date    VARCHAR(8) NOT NULL COMMENT '๊ฒฐ์ œ์ผ',
    payment_time    VARCHAR(8) NOT NULL COMMENT '๊ฒฐ์ œ์‹œ๊ฐ„',
    payment_price    INT NOT NULL COMMENT '๊ฒฐ์ œ๊ธˆ์•ก',
    payment_type    VARCHAR(6) NOT NULL COMMENT '๊ฒฐ์ œ๊ตฌ๋ถ„',
    CONSTRAINT pk_payment_code PRIMARY KEY (payment_code)
) ENGINE=INNODB COMMENT '๊ฒฐ์ œ';

CREATE TABLE IF NOT EXISTS tbl_payment_order
(
    order_code    INT NOT NULL COMMENT '์ฃผ๋ฌธ์ฝ”๋“œ',
    payment_code    INT NOT NULL COMMENT '๊ฒฐ์ œ์ฝ”๋“œ',
    CONSTRAINT pk_comp_payment_order_code PRIMARY KEY (payment_code, order_code),
    CONSTRAINT fk_payment_order_order_code FOREIGN KEY (order_code) REFERENCES tbl_order (order_code),
    CONSTRAINT fk_payment_order_payment_code FOREIGN KEY (order_code) REFERENCES tbl_payment (payment_code)
) ENGINE=INNODB COMMENT '๊ฒฐ์ œ๋ณ„์ฃผ๋ฌธ';

-- ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
INSERT INTO tbl_category VALUES (null, '์‹์‚ฌ', null);
INSERT INTO tbl_category VALUES (null, '์Œ๋ฃŒ', null);
INSERT INTO tbl_category VALUES (null, '๋””์ €ํŠธ', null);
INSERT INTO tbl_category VALUES (null, 'ํ•œ์‹', 1);
INSERT INTO tbl_category VALUES (null, '์ค‘์‹', 1);

INSERT INTO tbl_category VALUES (null, '์ผ์‹', 1);
INSERT INTO tbl_category VALUES (null, 'ํ“จ์ „', 1);
INSERT INTO tbl_category VALUES (null, '์ปคํ”ผ', 2);
INSERT INTO tbl_category VALUES (null, '์ฅฌ์Šค', 2);
INSERT INTO tbl_category VALUES (null, '๊ธฐํƒ€', 2);

INSERT INTO tbl_category VALUES (null, '๋™์–‘', 3);
INSERT INTO tbl_category VALUES (null, '์„œ์–‘', 3);

INSERT INTO tbl_menu VALUES (null, '์—ด๋ฌด๊น€์น˜๋ผ๋–ผ', 4500, 8, 'Y');
INSERT INTO tbl_menu VALUES (null, '์šฐ๋Ÿญ์Šค๋ฌด๋””', 5000, 10, 'Y');
INSERT INTO tbl_menu VALUES (null, '์ƒ๊ฐˆ์น˜์‰์ดํฌ', 6000, 10, 'Y');
INSERT INTO tbl_menu VALUES (null, '๊ฐˆ๋ฆญ๋ฏธ์—ญํŒŒ๋ฅดํŽ˜', 7000, 10, 'Y');
INSERT INTO tbl_menu VALUES (null, '์•™๋ฒ„ํ„ฐ๊น€์น˜์ฐœ', 13000, 4, 'N');

INSERT INTO tbl_menu VALUES (null, '์ƒ๋งˆ๋Š˜์ƒ๋Ÿฌ๋“œ', 12000, 4, 'Y');
INSERT INTO tbl_menu VALUES (null, '๋ฏผํŠธ๋ฏธ์—ญ๊ตญ', 15000, 4, 'Y');
INSERT INTO tbl_menu VALUES (null, 'ํ•œ์šฐ๋”ธ๊ธฐ๊ตญ๋ฐฅ', 20000, 4, 'Y');
INSERT INTO tbl_menu VALUES (null, 'ํ™์–ด๋งˆ์นด๋กฑ', 9000, 12, 'Y');
INSERT INTO tbl_menu VALUES (null, '์ฝ”๋‹ค๋ฆฌ๋งˆ๋Š˜๋นต', 7000, 12, 'N');

INSERT INTO tbl_menu VALUES (null, '์ •์–ด๋ฆฌ๋น™์ˆ˜', 10000, 10, 'Y');
INSERT INTO tbl_menu VALUES (null, '๋‚ ์น˜์•Œ์Šคํฌ๋ฅ˜๋ฐ”', 2000, 10, 'Y');
INSERT INTO tbl_menu VALUES (null, '์งํ™”๊ตฌ์ด์ ค๋ผ๋˜', 8000, 12, 'Y');
INSERT INTO tbl_menu VALUES (null, '๊ณผ๋ฉ”๊ธฐ์ปคํ‹€๋ฆฟ', 13000, 6, 'Y');
INSERT INTO tbl_menu VALUES (null, '์ฃฝ๋ฐฉ๋ฉธ์น˜ํŠ€๊น€์šฐ๋™', 11000, 6, 'N');

INSERT INTO tbl_menu VALUES (null, 'ํ‘๋งˆ๋Š˜์•„๋ฉ”๋ฆฌ์นด๋…ธ', 9000, 8, 'Y');
INSERT INTO tbl_menu VALUES (null, '์•„์ด์Šค๊ฐ€๋ฆฌ๋น„๊ด€์ž์œก์ˆ˜', 6000, 10, 'Y');
INSERT INTO tbl_menu VALUES (null, '๋ถ•์–ด๋นต์ดˆ๋ฐฅ', 35000, 6, 'Y');
INSERT INTO tbl_menu VALUES (null, '๊นŒ๋‚˜๋ฆฌ์ฝ”์ฝ”๋„›์ฅฌ์Šค', 9000, 9, 'Y');
INSERT INTO tbl_menu VALUES (null, '๋งˆ๋ผ๊น์‡ผํ•œ๋ผ๋ด‰', 22000, 5, 'N');

INSERT INTO tbl_menu VALUES (null, '๋Œ๋ฏธ๋‚˜๋ฆฌ๋ฐฑ์„ค๊ธฐ', 5000, 11, 'Y');

COMMIT;
profile
์—”์ง€๋‹ˆ์–ด๋กœ์˜ ์„ฑ์žฅ์ผ์ง€

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