羅德興老師的教學歷程檔案 - 105-1 資料庫管理系統 - 課程作業要求與資源
 

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


歷程檔案 Portfolio

    課程作業要求與資源

    >> SQL  Cheat Sheet 下載
    or visit here        http://cse.unl.edu/~sscott/ShowFiles/SQL/CheatSheet/SQLCheatSheet.html


    請在您自己的 e-Portfolio上建立一個新的文章分類, 分類的名稱為<<105-1 資料庫管理系統>>,
    爾後您的作業必須張貼在該分類之下。
    每個學習單元請在前述的文章分類下以各學習單元標題建立一篇文章標題,如第一篇的文章標題為學習單元1資料庫的比較與第一步 

    (p.s. 本教學內容主要取材自溫瑞烘教授教學網頁) 

    學習單元1資料庫的比較與第一步

    1. 請上網搜尋資料, 列表比較 (1) Access, (2) Oracle, (3) SQL Server, (4) MySQL, (5) PostgreSQL, (6) Informix, (7) DB2, (8) Xindice, (9) SQLite, (10)  Google Fusion Tables

    等資料庫, 比較面向至少包括
    平台, 價格, 效能, 儲存方式, 語言支援等,
     將結果貼到前述文章標題下 
    2. 請上網搜尋AppServ 或 XAMPP, 下載至D:/, 試行安裝,並執行MySQL, 將過程簡略紀錄於前述文章中
    3. 請說明本教室中提供那些資料庫





    學習單元2:設計一個簡單資料庫的工作

    說明:
    此單元目標如下:
    1. 能說明Fields, Records, Tables
    2. 指出資料庫的基本組成:Table, Query, Form, Report, Macro, Module
     
    作業:
    1. 資料庫中最重要的概念為:                      
    2. 資料庫中的定義語言簡稱:              ,用途為:                   
    3. 資料庫中的查詢語言簡稱:              ,用途為:                   
    4. 資料庫中的控制語言簡稱:              ,用途為:                   
    5. 資料庫的通用查詢語言是:                   
    6. (1) 新增資料表、(2) 定義資料欄位屬性、(3) 設定資料表索引、(4) 修改資料表
    7. 利用資料表處理資料紀錄:(1) 新增及編修、(2) 瀏覽、(3) 排序、(4) 刪除
    8. 說明資料表中的鍵:
    (1) Primary Key  :主鍵       ,用途為:                   
    (2) Super Key   :            ,用途為:                   
    (3) Candidate Key :            ,用途為:                   
    (4) Alternate  Key :            ,用途為:                   
    (5) Foreign  Key :            ,用途為:                   
     



    學習單元3:設計資料表

    已經有兩個Table如下

    CREATE TABLE stmd (    -- 學生基本資料表
      depart_class      char(6),  -- 班級代碼
      student_no       char(9),  -- 學號
      student_name     char(10), -- 姓名
      birth_date         date,   -- 出生日期
      primary key(student_no)
    );

    假設資料如下
    164D11  9614D001  張1  1995-01-01
    164D21  9614D002  張2  1995-02-01
    164D31  9614D003  張3  1995-03-01
    164D41  9614D004  張4  1995-04-01
    164D31  9614D005  張5  1995-05-01


    CREATE TABLE dept (   -- 班級代碼表
       depart_class      char(6),   -- 班級代碼
       depart_name     char(20),   --班級名稱
       primary key(depart_class)
    );

    假設資料如下
    164D11 日四技資管一甲
    164D21 日四技資管二甲
    164D31 日四技資管三甲
    164D41 日四技資管四甲

    利用欄位關聯取得資料
       Select stmd.depart_class,dept.depart_class_name,stmd.student_no,stmd.student_name,stmd.birth_date from stmd,dept where stmd.depart_class=dept.depart_class;

    結果
    164D11  日四技資管一甲 9614D001  張1  1995-01-01
    164D21  日四技資管二甲 9614D002  張2  1995-02-01
    164D31  日四技資管三甲 9614D003  張3  1995-03-01
    164D31  日四技資管三甲 9614D005  張5  1995-05-01
    164D41  日四技資管四甲 9614D004  張4  1995-04-01


    請再設計三個資料表,用來反應學生的選課資料,可能的三個資料表如下
        科目代碼表
        各班開課資料表
        個人選課表
    請將設計好的三個資料表寫在ePortfolio, 以作業為文章分類,  以設計資料表 (作業)為文章標題

    期末上機考試將以此為架構並出題現場上機操作



    學習單元4:SQL的SELECT敘述之一

    SELECT  
    1.  -- 查詢目前時間
        SELECT NOW();                             
    2. -- 查詢目前日期
        SELECT CURRENT_DATE;                       
    3. -- 查詢所有列(Row)
        SELECT * FROM stmd;                        
    4. -- 查詢所有列(Row),僅列出5列
        SELECT * FROM stmd LIMIT 5;                
    5. -- 查詢班級、學號
        SELECT depart_class,student_no FROM stmd;
    6. -- 查詢學號最大者
        SELECT MAX(student_no) FROM stmd;
    7. -- 查詢學號最小者
        SELECT MIN(student_no) FROM stmd;
    8. -- 查詢並由小到大排序
        SELECT * FROM stmd ORDER BY  student_no;
    9. -- 查詢並由大到小排序
        SELECT * FROM stmd ORDER BY  student_no DESC;
    10. -- 查詢加上條件
        SELECT * FROM stmd WHERE student_no="10014D001";
    11. -- 查詢加上條件
        SELECT * FROM stmd WHERE student_no>"10014D001";
    12. -- 查詢加上條件
        SELECT * FROM stmd WHERE student_no<"10014D001";
    13. -- 查詢加上條件
        SELECT * FROM stmd WHERE student_no>="10014D001";
    14. -- 查詢加上條件
        SELECT * FROM stmd WHERE student_no<="10014D001";
    15. -- 查詢加上條件
        SELECT * FROM stmd WHERE student_no<>"10014D001";
    16. -- 查詢加上條件
        SELECT * FROM stmd WHERE student_no>="10014D001" AND
        student_no<="10014D010";

    作業:利用所建的Table,在 HeidiSQL上操作前面16種SELECT 
         敘述,並加上下列

    17. -- 查詢班級是 "164D21" 的所有紀錄
    18. -- 查詢班級不是 "164D21" 的所有紀錄
    19. -- 查詢班級是 "164D21" 的所有紀錄,按學號由小到大
    20. -- 查詢班級不是 "164D21" 的所有紀錄按班級、學號由小到大
    21. -- 查詢班級是 "164D21" 的所有紀錄,按學號由大到小
    22. -- 查詢班級不是 "164D21" 的所有紀錄按班級、學號由大到小
    23. -- 查詢學號是 "10014D001" 的所有紀錄
    24. -- 查詢學號不是 "10014D001" 的所有紀錄按班級、學號由大到小
    25. -- 查詢班級不是 "164D21" 的所有紀錄按班級、學號由小到大
    26. -- 查詢班級是 "164D21" 的所有紀錄,按學號由大到小
    27. -- 查詢班級不是 "164D21" 的所有紀錄按班級、學號由大到小
    28. -- 查詢學號不是 "10014D001" 的所有紀錄,按學號、班級由小到大
    29. -- 查詢學號不是 "10014D001" 的所有紀錄,按學號、班級由大到小
    30. -- 查詢班級是"164D21",學號不是 "10014D001" 的所有紀錄,按學號、班級由小到大
    31. -- 查詢學號界於 "10014D030" 到 "10014D060"的所有紀錄,按學號、班級由小到大
    32. -- 查詢學號不界於 "10014D030" 到 "10014D060"的所有紀錄,按學號、班級由小到大

    請注意,以上的每一個題目都必須有查詢結果,如果沒有結果,請更改stmd的內容,
    將所建立的資料表內容、問題及執行結果發佈在ePortfolio上


    學習單元5:MySQL 備份 回復 資料型態

    DROP DATABASE IF EXISTS mydb;  -- 刪除資料庫
    CREATE DATABASE mydb DEFAULT CHARACTER SET utf8;  -- 建立資料庫 繁體中文
    USE mydb;                       -- 使用資料庫

    -- 由文字檔中建好大量資料後載入方法
    1. 在命令模式下

       LOAD DATA INFILE "C:/AppServ/www/stmd.txt" INTO TABLE stmd
         CHARACTER SET utf8 FIELDS TERMINATED BY ",";

       SELECT * FROM stmd;

    2. 利用HeidiSQL

       選擇資料表 stmd --> Tools --> Import CSV file --> Filename(選擇檔案)

        Encoding(選擇編碼utf8)

        Fields terminated by ,

        Fields enclosed by

        Fields escape by 

        Lines terminate by \r\n

        按 Import! 鍵

    -- 由資料表中匯出資料方法

    SELECT * FROM stmd INTO OUTFILE "C:/AppServ/www/newstmd.txt";

    -- 資料庫備份 (Backup)

    1. 由HeidiSQL做資料庫備份

       執行HeidiSQL、連接mydb、滑鼠只到mydb、按右鍵、Export database as SQL

          選擇 Databases Drop  Create

             Tables    Drop  Create Insert

             Output    One big file

             Filename  C:/AppServ/www/mydb.sql

    2. 使用 mysqldump

       mysqldump --user=root --password=0000 mydb > "C:/AppServ/www/mydb.sql"

    -- 資料庫回復 (Restore)

    1. 先建立一個空的資料庫 mydb

    2. 在命令模式下

       mysql -u root -p mydb < "C:/AppServ/www/mydb.sql"

       然後輸入密碼

    MySQL 資料型態

          INT、INT(10) --  整數

          FLOAT        --  小數

          DATE         --  日期  YYYY-MM-DD

          TIME         --  時間  HH:MM:SS

          DATETIME     --  日期時間 YYYY-MM-DD HH:MM:SS 

          CHAR(N)      --  固定長度字元

          VARCHAR(N)   --  變動長度字元

          TEXT         --  文字(65536)

          BLOB         --  二進位(儲存影像如照片)


    作業: 照前述講義練習一遍之後,將stmd擴充,增加四個欄位

          出生日期、行動電話、電子郵件,照片 

          以資管系為例建立資料,班級代碼

          164D11(四技資管一甲)、164D12(四技資管一乙)

          164D21(四技資管二甲)、164D22(四技資管二乙) 

          164D31(四技資管三甲)、164D32(四技資管三乙)

          164D41(四技資管四甲)、164D42(四技資管四乙) 

          建立資料每班至少5筆,除照片欄外,每欄都必須

          有資料


    學習單元6:
    期末考模擬考題兼作業答案

     

     
    已有兩個Table如下
    CREATE TABLE stmd (      -- 學生基本資料表
      depart_class      char(6),     -- 班級代碼
      student_no       char(9),      -- 學號
      student_name     char(10), -- 姓名
      birth_date         date,          -- 出生日期
      primary key(student_no)
    );
     
    假設資料如下
    depart_classstudent_nostudent_namebirth_date
    164D11 9614D001 張11995-01-01
    164D219614D002 張21995-02-01
    164D319614D003張31995-03-01
    164D419614D004張41995-04-01
    164D319614D005張51995-05-01
     
    CREATE TABLE dept (         -- 班級代碼表
       depart_class      char(6),      -- 班級代碼
       depart_name     char(20),    -- 班級名稱
       primary key(depart_class)
    );
     
    假設資料如下
    depart_classdepart_name
    164D11日四技資管一甲
    164D21日四技資管二甲
    164D31日四技資管三甲
    164D41日四技資管四甲
     
    CREATE TABLE csno ( -- 科目代碼表
        code      char(5),         -- 科目代碼
        name      char(24),      -- 科目名稱
        primary key(code)
    ); 
     
    假設資料如下
    codename
    50001國文
    50002英文
    50003物理
    50004微積分

    CREATE TABLE dtime (     --    各班開課資料表
     depart_class       char(6),   -- 開課班級
     code                  char(5),    -- 科目代碼
       primary key(depart_class,code)
     );
     
    假設資料如下
    depart_classcode
    164D11 50001
    164D1150002
    164D2150003
    164D2150004
     
    CREATE TABLE seld (      --    個人選課資料表
     student_no       char(9),     -- 學號
     depart_class       char(6),   -- 開課班級
     code             char(5),         -- 科目代碼
       primary key(student_no,depart_class,code)
     ); 
     
    假設資料如下 
    student_nodepart_classcode
    9614D001 164D1150001
    9614D001 164D1150002
    9614D001164D2150003
    9614D001164D2150004
    9614D002164D2150004
    9614D003164D1150002
    9614D003164D2150003
    9614D004164D2150004
    9614D004164D1150002
    9614D004164D2150003
     
    根據前面的資料表回答下列問題
     
    一、查詢學生基本資料的所有記錄的SQL命令 (10%)
     
    二、查詢stmd與dept使得輸出 班級代碼 班級名稱 學號 姓名 出生日期 並寫出結果(10%)
    (利用stmd.depart_class 與dept.depart_class作關聯)
     
    三、查詢dtime與csno使得輸出 開課班級  班級名稱 科目代碼 科目名稱 並寫出結果(10%)
    (利用dtime.depart_class 與dept.depart_class作關聯) 及
    (利用dtime.code 與csno.code作關聯)

     
    四、查詢seld、dtime、csno、dept 使得輸出 
     
    學號 開課班級 班級名稱 科目代碼 科目名稱 並寫出結果(10%)
     
    五、查詢seld、dtime、csno、dept 使得輸出 
     
    學號 開課班級 班級名稱 科目代碼 科目名稱 並寫出結果
     
    條件為學號中有 4D者(10%)
     
    六、寫一PHP程式完成下述功能 (50%)

     
                                                                      班級名稱 :[     ] 下拉選單,第一個為空值或空白,第二個以後由dept取得資料
                                                                      學         號  :  [          ] Text 輸入框
    姓         名:[          ] Text 輸入框
                                      出生日期 :[          ] Text 輸入框
     
                                                  [新增] [查詢]
        查詢欄位包括所有欄位

        結果顯示                                    班級代碼     班級名稱     學號     姓名     出生日期

     

    學習單元6:讀懂 SQL Cheat Sheet, 並建立 test 資料庫後,練習SQL 指令





    請在 105/12/31 前撰寫作業, 並 post 到個人ePortfolio 
    全部共 1則留言
    11-16 19:20:-- 匯出資料 USE test; SELECT * INTO OUTFILE "C:/AppServ/www/1021021a.txt" FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' FROM product2;
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

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