羅德興老師的教學歷程檔案 - 100-1 資料庫系統實作 - Final Exam
 

企業資訊與管理系
助理教授/日導
羅德興


歷程檔案 Portfolio

    Final Exam

    資管三甲 期末考 
    -- 期末考試題  Part 1  (40%)
    完成後先「留言   回覆」,再找老師口試。
    完成

    Unit 8- MySQL-PHP-TEXT-新增-查詢-刪除-更新範例 

    ......

    作業

    針對前述資料表(四個欄位)寫完整的程式
    完成後,請在本頁面用「留言   回覆」的方式繳交   作業連結網址。



    -- 期末考試題 Part 2 (0%)(同期中考試題複習 Part 2)
    -- 以下代碼 _xxx 表示 -您的學號後三碼
    -- 請建立一個 資料庫 test_0610,完成後請
    -- 在答案紙上寫下三個表格的欄位 (並標出關鍵值),與表格之間的關係 
     
    - 有三個表格 (tables) 如下,請寫出SQL解決下列問題 1-10 (in Part 3):

     

    supplier (s_id, s_name, address)
    廠商 (廠商編號,廠商名稱,地址)

    product (p_id, name, cost)

    商品 (商品編號,商品名稱,單價)

    ordering (s, p, qty)

    訂購單  (廠商編號,商品編號,訂購數量)

     

      

     
     
    DROP DATABASE IF EXISTS test_xxx;  -- 刪除資料庫
    CREATE DATABASE `test_xxx` CHARACTER SET utf8; -- 建立資料庫 採 utf8 編碼
    -- 新增 table
     
    USE test_xxx;
    -- 利用 AUTO_INCREMENT 自動累加,給該筆記錄一個獨一無二的編號,
    -- 像是給它一個ID,或是一個Index等等,自動從一開始設定的值 (預設是1) 一直累加上去。 
     
    CREATE TABLE supplier_xxx (
        s_id int NOT NULL AUTO_INCREMENT,
        s_name char(100),
        address char(120) NOT NULL,
        PRIMARY KEY (s_id)
    ) CHARACTER SET=utf8, ENGINE=INNODB; 
     
    CREATE TABLE product_xxx (
        p_id char(10) NOT NULL,
        name char(50),
        cost int NOT NULL,
        PRIMARY KEY (p_id)
    ) CHARACTER SET=utf8, ENGINE=INNODB; 
     
    CREATE TABLE ordering_xxx (
        s int NOT NULL,
        p char(10) NOT NULL,
        qty int,
        PRIMARY KEY (s,p),
     
       CONSTRAINT sp_fk2
            FOREIGN KEY (s) REFERENCES supplier_xxx(s_id)
            ON DELETE NO ACTION
            ON UPDATE CASCADE,
     
       CONSTRAINT sp_fk3
            FOREIGN KEY (p) REFERENCES product_xxx(p_id)
            ON DELETE NO ACTION
            ON UPDATE CASCADE
     
     ) CHARACTER SET=utf8, ENGINE=INNODB; 
    -- type=innodb 相當於 engine=innodb
    -- 新增 table 內的資料
     
    INSERT INTO supplier_xxx
    (s_name, address) VALUES 
    ('大華公司', '台北'),
    ('中華公司', '新北市'),
    ('小華公司', '花蓮'),
    ('大同公司', '高雄'),
    ('大夏公司', '台南'),
    ('大東公司', '台中'),
    ('中西公司', '宜蘭');
     
    INSERT INTO product_xxx
    (p_id, name, cost) VALUES 
    ('10', '蘋果', 110),
    ('11', '青蘋果', 20),
    ('12', '檸檬', 10),
    ('13', '芭樂', 150),
    ('20', '番茄', 165),
    ('21', '香蕉', 140),
    ('23', '蓮霧', 250),
    ('24', '橘子', 100),
    ('30', '奇異果', 290),
    ('31', '梨子', 510),
    ('32', '富士蘋果', 410),
    ('33', '小蘋果', 105),
    ('34', '柳丁', 115),
    ('40', '西瓜', 290);
     
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('1', '10', 50);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('1', '11', 150);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('1', '12', 250);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('2', '10', 450);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('2', '11', 50);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('2', '13', 550);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('2', '12', 650);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('7', '20', 150);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('7', '21', 250);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('7', '23', 550);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('7', '30', 250);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('5', '31', 120);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('5', '32', 50);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('5', '33', 250);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('5', '10', 450);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('5', '11', 250);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('5', '12', 150);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('5', '20', 50);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('6', '30', 10);
    INSERT INTO ordering_xxx (s, p, qty) VALUES('6', '31', 750);
    INSERT INTO ordering_xxx (s, p, qty) VALUES ('6', '32', 250);
    INSERT INTO ordering_xxx (s, p, qty) VALUES('6', '33', 505);
    INSERT INTO ordering_xxx (s, p, qty) VALUES('6', '20', 20);


    -- 期末考試題  Part 3 (60%)
    -- 以下代碼 _xxx 表示 -您的學號後三碼
    -- 請依序回答各題,或寫出各題的 SQL 程式並執行
     
    1.
    -- 1. 列出 廠商之訂購金額加總大於 80,000者。
    -- 訂購金額 為 table ordering_xxx 之訂購量 qty * table product_xxx 的 價格 cost
    -- >> 請在答案紙上寫下前三筆的結果

    2.
    -- 2. 列出 ordering_xxx 資料表(Relation)中 S (以 供應商 作為別名 alias)、P、QTY (以 訂購數量 作為別名)。
    -- >> 請在答案紙上寫下前三筆的結果

    3.
    -- 3. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)、品名(name),價格 (cost),和數量(qty),
    -- 以及各項商品的訂購金額 (qty*cost)。
    -- >> 請在答案紙上寫下前三筆的結果

    4.
    -- 4. 列出 每一家廠商之訂購金額加總 (訂購金額 為 table ordering_xxx 之訂購量 qty * table product_xxx 的 價格 cost) 大於 200,000者。
    -- >> 寫下 其中最少的一家廠商、與其訂購金額加總

    5.
    -- 5. 將 表格 (Relation) product_xxx 中 11 號商品的 商品名稱 改為 '芒果中的 LV-- 夏雪芒果',單價  改為 499 元
    -- >> 請在答案紙上寫下 您的 SQL 程式

    6.
    -- 6. 列出訂購 總金額最多的前三項 商品名稱
    -- >> 寫下它的 商品編號、與品名

    7.
    -- 7. 列出有訂購 '富士蘋果' 產品的廠商,他們的  公司編號 (s_id)、名稱,和地址
    -- >> 寫下他們的 公司編號  即可

    8.
    -- 8. 列出 ordering_xxx 中 廠商  同時訂購 '31' 和 '32'  且廠商地址在 '台中' 的 所有欄位
    -- Hint: 自我 結合 (Self-Join)

    9.
    -- 9. 列出 product_xxx 中最 低 價格 的 所有欄位
    -- Hint: 子查詢 (Subqueries)
    -- include the subquery as an inline "table" in the FROM clause
    -- 在 FROM 中,將子查詢 做為 行內的 table 







    9.
    -- 9. 計算出  product_xxx 商品名稱 欄位中 沒有 '果' 的 總量,並以 '水果名稱中沒有 果 的 總量'  做為名稱
    -- Hint: 使用 count 的用法和 sum 非常相似,
    -- count 的用法和 sum 非常相似,
    -- 它可以去計算『滿足條件的資料有幾筆』,
    -- 因此通常也都是要搭配 where 語句,
    -- 直接純使用,就是算目前資料庫總共有幾筆資料。
    -- 並且會常在圓括號內,使用 * 字號,代表一次抓取所有的欄位,
    -- 用法如下:
    -- Select Count(*) From users Where gender = 'male'
    -- 就會算出 gender 是 male 的資料總共有 2 筆
    -- 相同的,可以使用 as 詞句,指定結果為某個特定欄位。

    Select Count(*) as '水果名稱中沒有 果 的 總量'
    From product_xxx PP
    Where PP.name NOT LIKE '%果%'

    10.
    -- 10. 根據 product_xxx 的 單價,判斷若 大於等於 200 元,就顯示 '高價水果' ;否則顯示 '普通水果' 。
    -- Hint: 根據某欄位值,使用 Case 判斷所要顯示的資訊
     
     Select p_id, Case 
     When (cost>=200) 
     Then '高價水果' 
     Else '普通水果' 
     END 價位
     From product_xxx;
    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應