羅德興老師的教學歷程檔案 - 107-2 資料庫系統實作 - 期中考複習作業 (日四技資管三甲)
 

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


歷程檔案 Portfolio

    期中考複習作業 (日四技資管三甲)

    期中考複習共有 Part 1-3.
    請每位同學按分配的題目繳交。

    分配方式為:Part 3 請做(學號後三碼除以16的餘數)再加1的那一題;
    Part 3 請在本頁面用「留言   回覆」的方式繳交。



    -- 期中考試題複習 Part 1  (30%)
    -- 一、完成

    Unit 2-MySQL-TEXT-PHP-新增-查詢

    陸、作業
    擴充 text.php程式,增加另外三個欄位 '班級代碼', '姓名', '地址',

    後,請
    在本頁面用「留言   回覆」的方式繳交   作業連結網址。



    -- 期中考試題複習 Part 2 (20%)
    -- 以下代碼 _xxx 表示 -您的學號後三碼
    -- 二、請建立一個 資料庫 test_xxx,完成後請  (15%)
    -- (1) 在答案紙上寫下三個表格的欄位 (並標出關鍵值),與表格之間的關係 
    -- (2) 展示給老師評分
    -- 有三個表格 (tables) 如下,請寫出SQL解決下列問題 1-10:

     

    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 (50%)
    -- 以下代碼 _xxx 表示 -您的學號後三碼
    -- 三、請依序回答各題,或寫出各題的 SQL 程式並執行
    -- 1 - 10 題為必答題,每題 5 分
     
    -- 1.      列出 ordering_xxx 資料表(Relation)中 S (以廠商作為別名 alias)、P、QTY (以訂購量作為別名)。
    -- 請在答案紙上寫下前三筆的結果
     
    -- 2. ordering_xxx 資料表中,各P (產品編號)之訂購量加總
    -- 請在答案紙上寫下前三筆的結果
     
    -- 3. 列出 廠商之訂購金額加總大於 80,000者。
    -- 訂購金額 為 table ordering_xxx 之訂購量 qty * table product_xxx 的 價格 cost
    -- 請在答案紙上寫下前三筆的結果
     
    -- 4. 按廠商編號 由大到小排序,列出 ordering_xxx 資料表中 訂購 p 小於等於 '12' 的所有資料列
    -- 另存到一個資料表 temp_xxx
    -- 請在答案紙上寫下 temp_xxx 前三筆的結果
     
    -- 5. 列出 product_xxx 資料表中,未被訂購者的 P_id (產品編號)與 cost(單價)。
    -- 請在答案紙上寫下前三筆的結果
     
    -- 6. 下列SQL可完成什麼? 請在答案紙上寫下答案。                                                   ]
     
    SELECT ordering_xxx.s, sum(qty*cost) AS total FROM ordering_xxx, product_xxx
    WHERE ordering_xxx.p=product_xxx.p_id
    GROUP BY ordering_xxx.s
    ORDER BY Total DESC;

     
    -- 7. 列出 supplier_xxx 資料表中 有訂購 30 號產品者(P=30)的 廠商編號 (s_id), 廠商名稱 (s_name), 與 地址 (address)
    -- 請在答案紙上寫下結果
     
    -- 8. 列出訂購總金額加總為後五名者 (最少的5家) 的S,P,qty,cost,與訂購總金額加總
    -- 請在答案紙上寫下前三筆的結果
     
    -- 9.  列出 未有訂購產品 的廠商編號 (s_id)、名稱(s_name),與地址 (address)。
    -- 請在答案紙上寫下前三筆的結果
     
    -- 10.  列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)、品名(name),價格 (cost),和數量(qty),
    -- 以及各項商品的訂購金額 (qty*cost)。
    -- 請在答案紙上寫下前三筆的結果
     
    -- 11. 列出 廠商之訂購金額加總 (訂購金額 為 table ordering_xxx 之訂購量 qty * table product_xxx 的 價格 cost) 小於 250,000者。
    -- >> 寫下 其中最多的一家廠商、與其訂購金額加總
     
    -- 12. 列出 ordering_xxx 資料表中,被訂購總數量 大於 900 者的 P_id (產品編號)與 總數量
    -- >> 在答案紙上寫下來即可
     
    -- 13. 出訂購總金額最多的一項商品
    -- >> 寫下它的 商品編號、與品名
     
    -- 14. 列出有訂購產品的廠商中,但並沒訂購 '10' 商品的  公司編號 (s_id)
    -- >> 寫下它的 公司編號  即可
     
    -- 15. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)> '32' 者、品名(name),價格 (cost),和數量(qty),
    -- 以及各項商品的訂購金額 (qty*cost)。
    -- >> 寫下它的 公司名稱  即可
     
    -- 16. 將 表格 (Relation) product_xxx 中 40 號商品的 價格 改為 199 元
    -- >> 請在答案紙上寫下 您的 SQL 程式
    全部共 54則留言
    04-08 15:30: 1051AD021 的網址 http://ling.byethost7.com/?i=1
    04-08 16:08:10514D030 第15題 SELECT * FROM supplier_030 WHERE s_id IN(SELECT s FROM ordering_030 WHERE p > '32'); 大夏公司和大東公司
    04-08 16:23:10514D006 劉乃心 -- 7. 列出 supplier_xxx 資料表中 有訂購 30 號產品者(P=30)的 廠商編號 (s_id), 廠商名稱 (s_name), 與 地址 (address) -- 請在答案紙上寫下結果 SELECT s_id, s_name, address FROM supplier_006 WHERE s_id IN (SELECT s FROM ordering_006 WHERE p + '30');
    04-08 16:26:-- 1. 列出 ordering_xxx 資料表(Relation)中 S (以廠商作為別名 alias)、P、QTY (以訂購量作為別名)。 -- 請在答案紙上寫下前三筆的結果 SELECT s廠商, p, qty 訂購量 FROM ardering_037 LIMIT 3;
    04-08 16:35:-- 8. 列出訂購總金額加總為後五名者 (最少的5家) 的S,P,qty,cost,與訂購總金額加總 -- 請在答案紙上寫下前三筆的結果 SELECT ordering_119.s, p, qty, cost, sum(qty*cost) AS total FROM ordering_119, product_119 WHERE ordering_119.p=product_119.p_id GROUP BY ordering_119.s ORDER BY Total LIMIT 5;
    04-08 16:59:-- 12. 列出 ordering_xxx 資料表中,被訂購總數量 大於 900 者的 P_id (產品編號)與 總數量 -- >> 在答案紙上寫下來即可 SELECT p, sum(qty) AS total FROM ordering_119 OO GROUP BY OO.p HAVING total > 900;
    04-08 17:00:10514D014謝政哲 -- 列出 廠商之訂購金額加總大於 80,000者。 -- 訂購金額 為 table ordering_xxx 之訂購量 qty * table product_xxx 的 價格 cost SELECT qty, cost FROM ordering_014,product_014 WHERE qty * cost >'80000' LIMIT 3;
    04-08 17:02:10514D079梁晉嘉 -- 16. 將 表格 (Relation) product_xxx 中 40 號商品的 價格 改為 199 元 -- >> 請在答案紙上寫下 您的 SQL 程式 UPDATE product_079 SET cost = '199' WHERE p_id ='40';
    04-08 17:02:-- 7. 列出 supplier_xxx 資料表中 有訂購 30 號產品者(P=30)的 廠商編號 (s_id), 廠商名稱 (s_name), 與 地址 (address) -- 請在答案紙上寫下結果 SELECT s_id, s_name, address FROM supplier_119 WHERE s_id IN (SELECT DISTINCT s FROM ordering_119 WHERE p = '30');
    04-08 17:06:-- 13. 出訂購總金額最多的一項商品 -- >> 寫下它的 商品編號、與品名 SELECT p, qty, cost, sum(qty*cost) AS total FROM ordering_119, product_119 WHERE ordering_119.p=product_119.p_id GROUP BY ordering_119.P ORDER BY Total DESC LIMIT 1;
    04-08 17:10:-- 9. 列出 未有訂購產品 的廠商編號 (s_id)、名稱(s_name),與地址 (address)。 -- 請在答案紙上寫下前三筆的結果 select * from supplier_119 WHERE s_id NOT IN (SELECT DISTINCT s FROM ordering_119);
    04-08 17:16:SELECT ordering_007.s, p, qty, cost, sum(qty*cost) AS total FROM ordering_007, product_007 WHERE ordering_007.p=product_007.p_id GROUP BY ordering_007.s ORDER BY Total LIMIT 5;
    04-08 17:17:--8 SELECT ordering_007.s, p, qty, cost, sum(qty*cost) AS total FROM ordering_007, product_007 WHERE ordering_007.p=product_007.p_id GROUP BY ordering_007.s ORDER BY Total LIMIT 5;
    04-08 17:19:-- 14. 列出有訂購產品的廠商中,但並沒訂購 '10' 商品的 公司編號 (s_id) -- >> 寫下它的 公司編號 即可 SELECT DISTINCT s from ordering_119 where s NOT IN (select s FROM ordering_119 WHERE p= '10');
    04-08 17:20:10514D007顏子翔 -- 8. 列出訂購總金額加總為後五名者 (最少的5家) 的S,P,qty,cost,與訂購總金額加總 -- 請在答案紙上寫下前三筆的結果 -8 SELECT ordering_007.s, p, qty, cost, sum(qty*cost) AS total FROM ordering_007, product_007 WHERE ordering_007.p=product_007.p_id GROUP BY ordering_007.s ORDER BY Total LIMIT 5;
    04-08 17:23:9. 列出 未有訂購產品 的廠商編號 (s_id)、名稱(s_name),與地址 (address)。 -- 請在答案紙上寫下前三筆的結果 select * from supplier_040 WHERE s_id NOT IN (SELECT DISTINCT s FROM ordering_040);
    04-08 17:26:-- 2. ordering_xxx 資料表中,各P (產品編號)之訂購量加總 -- 請在答案紙上寫下前三筆的結果 SELECT p, SUM(qty) AS total FROM ordering_119 GROUP BY p;
    04-08 17:38:10514W044張晏禎 -- 13. 出訂購總金額最多的一項商品 -- >> 寫下它的 商品編號、與品名 SELECT p, qty, cost, sum(qty*cost) AS total FROM ordering_044, product_079 WHERE ordering_044.p=product_079.p_id GROUP BY ordering_044.p ORDER BY Total DESC LIMIT 1;
    04-08 17:38:-- 10. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)、品名(name),價格 (cost),和數量(qty),-- 以及各項商品的訂購金額 (qty*cost)。 -- 請在答案紙上寫下前三筆的結果 SELECT s_id,address,p_id,name,cost,qty,(qty*cost) as tatal FROM ordering_041,product_041,supplier_041 LIMIT 3;
    04-08 17:53:更新版 -- 10. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)、品名(name),價格 (cost),和數量(qty), -- 以及各項商品的訂購金額 (qty*cost)。 -- 請在答案紙上寫下前三筆的結果 SELECT s_id, address, p, name, cost, qty, total FROM supplier_079 SS JOIN (SELECT s, p, name, cost, qty, (qty*cost) as total FROM ordering_079 OO JOIN product_079 PP ON OO.p = PP.p_id) WW ON SS.s_id = WW.s;
    04-08 17:56:網站10514d044.epizy.com
    04-08 17:56:網站10514d044.epizy.com
    04-09 13:04:10514D030 林菀頤 第15題 SELECT * FROM supplier_030 WHERE s_id IN(SELECT s FROM ordering_030 WHERE p > '32'); 大夏公司和大東公司
    04-09 14:46:10514D001 徐御慈 第1題 SELECT S 廠商,P,qty 訂購量 FROM ordering_001 LIMIT 3
    04-09 15:06:10514D001 徐御慈 第1題 SELECT S 廠商,P,qty 訂購量 FROM ordering_001 LIMIT 3;
    04-09 16:16:10514D031黃明睿--16.將表格(Relation) product_xxx 中40號商品的價格改為199元 -- >> 請在答案紙上寫下您的SQL程式 UPDATE product_031 SET cost = '199' WHERE p_id ='40';
    04-10 23:56:以上登記完畢
    04-14 22:21:-- 15. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)> '32' 者、品名(name),價格 (cost),和數量(qty), -- 以及各項商品的訂購金額 (qty*cost)。 -- >> 寫下它的 公司名稱 即可 CREATE VIEW temp AS SELECT s, PP.p_id, PP.name, PP.cost, OO.qty, SUM(qty*PP.cost) AS total FROM ordering_xxx OO JOIN product_xxx PP ON OO.p = PP.p_id GROUP BY OO.s, PP.p_id HAVING PP.p_id > '32'; SELECT SS.s_id, SS.s_name, SS.address, temp.name, temp.cost, temp. qty, temp.total FROM supplier_xxx SS JOIN temp ON SS.s_id = temp.s;
    04-14 22:34:高堂祐04-08 17:53: 更新版 -- 10. is good.
    04-14 22:36:張晏禎04-08 17:38: 10514W044張晏禎 -- 13.
    04-14 22:37:林菀頤04-08 17:26: -- 2. is good.
    04-14 22:37: 張晏禎04-08 17:38: 10514W044張晏禎 -- 13. is good.
    04-14 22:38:林育緯04-08 17:23: 9. is good.
    04-14 22:40:顏子翔04-08 17:20: 10514D007顏子翔 -- 8. is good.
    04-14 22:45:-- 13. 出訂購總金額最多的一項商品 -- >> 寫下它的 商品編號、與品名 SELECT p, name, sum(qty*cost) AS total FROM ordering_xxx, product_xxx WHERE ordering_xxx.p=product_xxx.p_id GROUP BY ordering_xxx.p ORDER BY total DESC LIMIT 1;
    04-14 22:45:林菀頤04-08 17:02: -- 7. is good.
    04-14 22:46:梁晉嘉04-08 17:02: 10514D079梁晉嘉 -- 16. is good.
    04-14 22:53:-- 3. 列出 廠商之訂購金額加總大於 80,000者。 -- 訂購金額 為 table ordering_xxx 之訂購量 qty * table product_xxx 的 價格 cost -- 請在答案紙上寫下前三筆的結果 SELECT s, SUM(qty*PP.cost) AS total FROM ordering_xxx OO JOIN product_xxx PP ON OO.p = PP.p_id GROUP BY OO.s HAVING total > 80000;
    04-14 22:54:高偉峻04-08 16:59: -- 12.
    04-14 22:54:高偉峻04-08 16:59: -- 12. is good.
    04-15 00:57:還沒繳交的同學,請盡快在此留言回覆。
    04-15 00:59:請每位同學按分配的題目繳交,在本頁面用「留言 回覆」的方式繳交。from 羅老師
    04-15 13:02:2. ordering_xxx 資料表中,各P (產品編號)之訂購量加總 -- 請在答案紙上寫下前三筆的結果 SELECT p, SUM(qty) AS total FROM ordering_001 GROUP BY p;
    04-15 13:21:10314D097 李丞凱 搜尋ordering_xxx內的p,與product_xxx內的p_id相符的值,並且顯示出s跟total由大到小排列
    04-15 13:21:10314D097 李丞凱 06.搜尋ordering_xxx內的p,與product_xxx內的p_id相符的值,並且顯示出s跟total由大到小排列
    04-15 13:24:7. 列出 supplier_xxx 資料表中 有訂購 30 號產品者(P=30)的 廠商編號 (s_id), 廠商名稱 (s_name), 與 地址 (address) -- 請在答案紙上寫下結果 SELECT s_id, s_name, address FROM supplier_119 WHERE s_id IN (SELECT DISTINCT s FROM ordering_119 WHERE p = '30');
    04-15 13:24:3. 列出 廠商之訂購金額加總大於 80,000者。 -- 訂購金額 為 table ordering_xxx 之訂購量 qty * table product_xxx 的 價格 cost -- 請在答案紙上寫下前三筆的結果 SELECT s, SUM(qty*PP.cost) AS total FROM ordering_xxx OO JOIN product_xxx PP ON OO.p = PP.p_id GROUP BY OO.s HAVING total > 80000;
    04-15 23:03:徐御慈04-15 13:02: 2. is good.
    04-15 23:04:曾柏翔04-15 13:24: 7. is good.
    04-15 23:05:葉育誠04-15 13:24: 3. is good.
    04-17 04:54:15. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)> '32' 者、品名(name),價格 (cost),和數量(qty), -- 以及各項商品的訂購金額 (qty*cost)。 -- >> 寫下它的 公司名稱 即可 CREATE VIEW temp AS SELECT s, PP.p_id, PP.name, PP.cost, OO.qty, SUM(qty*PP.cost) AS total FROM ordering_078 OO JOIN product_078 PP ON OO.p = PP.p_id GROUP BY OO.s, PP.p_id HAVING PP.p_id > '32'; SELECT SS.s_id, SS.s_name, SS.address, temp.name, temp.cost, temp. qty, temp.total FROM supplier_078 SS JOIN temp ON SS.s_id = temp.s;
    04-17 16:13:-- 4. 按廠商編號 由大到小排序,列出 ordering_xxx 資料表中 訂購 p 小於等於 '12' 的所有資料列 -- 另存到一個資料表 temp_xxx -- 請在答案紙上寫下 temp_xxx 前三筆的結果 CREATE TABLE temp_xxx AS SELECT * FROM ordering_xxx WHERE p <= "12" ORDER BY s DESC;
    04-22 14:35:-- 5. 列出 product_xxx 資料表中,未被訂購者的 P_id (產品編號)與 cost(單價)。 -- 請在答案紙上寫下前三筆的結果 SELECT p_id, cost FROM product_xxx WHERE p_id NOT IN ( SELECT DISTINCT p FROM ordering_xxx);
    06-16 12:28:以上評分完畢.
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

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