user requirements template -...

120
夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General Rev 1.0 / Page : 1 崑山科技大學 資訊科技學院-資訊工程系 100 學年度第一學期 夜四資工二 A 資料庫導論 (MySQL) 上課教材 上課地點: I5302 講師: 吳建衡 Gary Wu e-mail: [email protected] Version 1.0.7 Date 11/04/2011

Upload: others

Post on 20-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 1

    崑山科技大學

    資訊科技學院-資訊工程系

    100 學年度第一學期

    夜四資工二 A

    資料庫導論 (MySQL)

    上課教材

    上課地點: I5302

    講師: 吳建衡 Gary Wu e-mail: [email protected]

    Version 1.0.7 Date 11/04/2011

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 2

    APPROVAL FORM (USER REQUIREMENT)

    THIS DOCUMENT MAY NOT BE REPRODUCED OR COPIED IN WHOLE OR IN PART

    DOCUMENT ID : NUMBER OF PAGES : 120

    REVISION NO : 1.0.7 STATUS : x Active Obsolete

    CREATED DATE : 09/01/2011 REVISED DATE : 11/04/2011

    FILENAME :

    夜四資工二 A_資料庫導論_1001_上課教材_吳建衡.doc

    CREATED BY : 吳建衡

    Chien-Heng Wu (Gary)

    Change History (The newest version is on the top)

    Date Revision Responsibility Change Description

    09/01/2011 1.0 Initial Release

    09/23/2011 1.0.1 Revise 2.2, 2.3, 2.4, 3.4

    09/30/2011 1.0.2 Revise 4

    10/07/2011 1.0.3 5.2 資料庫之資料選取查詢 (3.1 ~ 3.3)

    5.3 資料庫之資料選取查詢 (3.4)

    10/14/2011 1.0.4 6.2 資料庫之資料選取查詢 (3.5 ~ 3.10)

    10/21/2011 1.0.5 1.2 課程大綱

    6.2 資料庫之資料選取查詢 (3.5 ~ 3.10)

    7.2 結合與子查詢 (課本 4.1 ~ 4.5)

    10/28/2011 1.0.6 8.2 說明期中作業要點, 並開始撰寫

    11/04/2011 1.0.7 9.1 完成與繳交期中作業

    9.2 說明期中作業答案

    11/11/2011 1.0.8 10.1 課程摘要

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 3

    Contents

    APPROVAL FORM (USER REQUIREMENT) .................................................................................................................... 2

    A 課程大綱 ................................................................................................................................................................................. 6

    A.1 關於此文件 .................................................................................................................................................................... 6 A.2 誰應閱讀此文件 ............................................................................................................................................................ 6

    1 第一週 (100 年 09 月 09 日) ................................................................................................................................................... 7

    1.1 課程介紹 ......................................................................................................................................................................... 7 1.2 課程大綱 ......................................................................................................................................................................... 9

    2 第二週 (100 年 09 月 16 日) ................................................................................................................................................. 13

    2.1 課程摘要 ....................................................................................................................................................................... 13 2.2 安裝 MYSQL 資料庫 (隨堂練習 10%) ........................................................................................................................ 13 2.3 安裝 MYSQL WORKBENCH: 圖形化管理程式 (隨堂練習 5%) ................................................................................. 24 2.4 將 SQL檔案匯入到 MYSQL (隨堂練習 5%) .............................................................................................................. 27 2.5 如何移除 MYSQL SERVER .......................................................................................................................................... 30

    3 第三週 (100 年 09 月 23 日) ................................................................................................................................................. 33

    3.1 課程摘要 ....................................................................................................................................................................... 33 3.2 初探資料庫系統 (概念) ................................................................................................................................................ 33 3.3 關聯式資料庫的架構 (概念) ........................................................................................................................................ 35 3.4 MYSQL HELP ............................................................................................................................................................... 37

    4 第四週 (100 年 09 月 30 日) ................................................................................................................................................. 39

    4.1 課程摘要 ....................................................................................................................................................................... 39 4.2 使用 MYSQL WORKBENCH 5.2 CE ............................................................................................................................ 39

    5 第五週 (100 年 10 月 07 日) ................................................................................................................................................. 46

    5.1 課程摘要 ....................................................................................................................................................................... 46 5.2 資料庫之資料選取查詢 (3.1 ~ 3.3) .............................................................................................................................. 46 5.3 資料庫之資料選取查詢 (3.4.1 ~ 3.4.2) ........................................................................................................................ 48

    6 第六週 (100 年 10 月 14 日) ................................................................................................................................................. 52

    6.1 課程摘要 ....................................................................................................................................................................... 52 6.2 資料庫之資料選取查詢 (3.4.3 ~ 3.4.4) ........................................................................................................................ 52

    7 第七週 (100 年 10 月 21 日) ................................................................................................................................................. 55

    7.1 課程摘要 ....................................................................................................................................................................... 55 7.2 資料庫之資料選取查詢 (3.5 ~ 3.10) ............................................................................................................................ 55

    8 第八週 (100 年 10 月 28 日) ................................................................................................................................................. 61

    8.1 課程摘要 ....................................................................................................................................................................... 61 8.2 說明期中作業要點, 並開始撰寫 .................................................................................................................................. 61

    9 第九週 (100 年 11 月 04 日) ................................................................................................................................................. 67

    9.1 完成與繳交期中作業 ................................................................................................................................................... 67

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 4

    9.2 說明期中作業答案 ....................................................................................................................................................... 67

    10 第十週 (100 年 11 月 11 日) ............................................................................................................................................... 69

    10.1 課程摘要 ..................................................................................................................................................................... 69 10.2 結合與子查詢 (課本 4.1 ~ 4.5) ................................................................................................................................... 69

    11 第十一週 (100 年 11 月 18 日) ........................................................................................................................................... 78

    11.1 課程摘要 ..................................................................................................................................................................... 78 11.2 資料庫之資料維護 (課本 5.1 ~ 5.5) ........................................................................................................................... 78

    12 第十二週 (100 年 11 月 25 日) ........................................................................................................................................... 86

    12.1 課程摘要 ..................................................................................................................................................................... 86 12.2 資料庫與資料表定義 (課本 6.1 ~ 6.3) ....................................................................................................................... 86

    13 第十三週 (100 年 12 月 02 日) ........................................................................................................................................... 92

    13.1 課程摘要 ..................................................................................................................................................................... 92 13.2 資料庫與資料表定義 (課本 6.4 ~ 6.8) ....................................................................................................................... 92 13.3 建立及使用 VIEW (課本 7.1 ~ 7.4)............................................................................................................................ 94

    14 第十四週 (100 年 12 月 09 日) ........................................................................................................................................... 99

    14.1 課程摘要 ..................................................................................................................................................................... 99 14.2 資料庫安全與交易管理 (8.1 ~ 8.3) ............................................................................................................................ 99 14.3 資料庫設計 (課本第 9 章) & 資料庫正規化 (課本第 10 章) .................................................................................. 103

    15 第十五週 (100 年 12 月 16 日) ......................................................................................................................................... 104

    15.1 課程摘要 ................................................................................................................................................................... 104 15.2 資料庫設計 (課本第 9 章) & 資料庫正規化 (課本第 10 章) .................................................................................. 104 15.3 資料庫設計案例實作 (課本第 11 章) ...................................................................................................................... 104

    16 第十六週 (100 年 12 月 23 日) ......................................................................................................................................... 111

    16.1 課程摘要 ................................................................................................................................................................... 111 16.2 預存程序 (課本第 13 章) .......................................................................................................................................... 111 16.3 網際網路與資料庫應用(課本第 12 章) ................................................................................................................... 113 16.4 展示與說明企業級的 DATABASE, 如何使用 JAVA呼叫 SQL .............................................................................. 113

    17 第十七週 (100 年 12 月 30 日) ......................................................................................................................................... 114

    17.1 課程摘要 ................................................................................................................................................................... 114 17.2 說明期末作業要點 ................................................................................................................................................... 114

    18 第十八週 (101 年 01 月 06 日) ......................................................................................................................................... 117

    18.1 完成與繳交期末作業 ............................................................................................................................................... 117 18.2 公佈期末作業解答 ................................................................................................................................................... 117

    19 第十九週 (101 年 01 月 13 日) ......................................................................................................................................... 118

    19.1 寒假 ........................................................................................................................................................................... 118

    20 第二十週 (寒假; 101 年 01 月 15 日) ............................................................................................................................... 119

    20.1 寒假 ........................................................................................................................................................................... 119

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 5

    REFERENCE ......................................................................................................................................................................... 120

    R.1 參考 ............................................................................................................................................................................ 120

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 6

    A 課程大綱

    A.1 關於此文件

    崑山科技大學 資訊科技學院-資訊工程系

    100 年 09 月 09 日 至 101 年 01 月 13 日

    科目代

    科目

    名稱

    科目類

    四 週五

    班級

    名稱

    AE5200

    資料

    庫導

    校訂選

    修科目 3 0 3

    夜 2,

    夜 3,

    夜 4

    四技

    資工

    二A

    備註: 合計 3 0 3 禮拜五晚上 18:30~21:05

    http://120.114.51.72/knchen/CourseDaySchedule/ A.2 誰應閱讀此文件

    學生: (進修部) 四技資工二A

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 7

    1 第一週 (100 年 09 月 09 日)

    1.1 課程介紹

    講師自我介紹 現任職於國家高速網路與計算中心

    專 長: 軟體研發

    1. 雲端網站開發平台 (Cloud WebCenter Platform)

    2. 高速計算與電子商務網站開發平台 (HPC Portal Development

    Platform) 之開發、建置

    3. NCHC Grid Portal 格網計算平台之開發、建置

    專 業 成 就

    1. 國際期刊論文 (Journal of Communication and Computer, USA)

    Impact Factor is "1.87" issued by CEPS

    Author: Chien-Heng Wu

    Manuscript Number: JCC-E20110629-3

    Title: Web-Based Computing and Property Database Portlet

    By using HPC Portal Development Platform

    2. 競賽名稱: 經濟部 2009 開放原始碼創新應用開發大賽 (Open IDEAS

    2009)

    競賽獎項: 優等獎

    得獎作品 : (職業組 ) 高速計算與電子商務網站開發平台 (HPC

    Portal Development Platform)

    教學目標 本門課主要介紹資料庫原理

    了解資料庫系統基本概念

    了解資料庫系統的架構原理與資料模型的建立

    SQL 語言與 ER Model

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 8

    資料庫與資料表定義

    資料庫設計與查詢

    資料庫設計

    了解並懂得分析資料正規化的作法

    並以 MySQL Server 為例

    介紹如何進行資料庫安裝

    資料維護 (指令操作與練習)

    資料庫伺服器管理

    如何使用雲端網站開發平台 (Cloud WebCenter Platform)與 MySQL

    來架設個人網站

    授課方式 講義和投影片授課。

    上機實作:

    於課程中讓每位學生親自練習操作資料庫。

    作業:

    隨堂練習於每一單元授課完成後進行。

    期中、期末作業實作:分別於期中和期末進行。

    成績評量及標準 平時成績(隨堂練習、出席率):40%

    隨堂練習: 20%

    出席率: 20%

    期中作業:30%

    小型 SQL 程式開發為主, 以強化實戰經驗

    提前通知, 於 100 年 11 月 04 日當天繳交

    期末作業:30%

    以小型 SQL 專案開發為主,以強化實戰經驗

    提前通知, 101 年 01 月 06 日當天繳交

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 9

    使用教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN: 9789866507564

    本學期教材採用"資料庫系 統應用與設計 (2/e) / 張丁才 / 滄海書局 /

    ISBN: 9789866507564".

    至於是否要買此書, 由同學自行決定. (註: 建議購買, 不論現在或未來,

    皆可當工具書使用.)

    關於上課方式, 會將課本中相關重點, 摘要於講義, 並於課堂上投影.

    其它

    對此門課的期待?

    希望學到什麼?

    其它想法?

    1.2 課程大綱 URL = http://www.ksu.edu.tw/cht/utility/courseOutline/view.aspx

    科目名稱(中

    文)

    Course name

    資料庫

    導論

    科目代碼

    Course number AE5200

    授課部別

    Kinds of education

    大學四

    年制

    授課班級

    Class name

    AE021 四技資

    工二A

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 10

    科目名稱(英

    文)

    學分數

    Credit 3

    上課總時數

    Class hours 3

    授課教師

    Instructor 吳建衡

    科目類別

    Subject category

    校訂選

    修科目

    修課別

    Course categories 選修課程

    實習時數

    Internship hours 0

    授課地點

    Classroom locations

    I5302

    教學目標

    Teaching Objectives

    本門課主要介紹資料庫原理,ER modal 與 SQL 語言。並以 MySQL Server 為例,介紹如何進行資料庫安裝,

    資料庫伺服器管理與資料維護。本門課的內容包含: 1.了解資料庫系統基本概念。 2.了解資料庫系統的架

    構原理與資料模型的建立。 3.了解並懂得分析資料正規化的作法。

    課程核心能

    力指標

    Core Competency Indicator

    http://120.114.52.240/web2.0/dadaconvert1/View_course_ability.php?actions=0&course_no=AE5200

    週次

    Week

    教學內容

    Teaching content

    01 課程簡介、資料庫系統簡介

    02 資料庫系統架構

    03 MySQL 理論與實作(一)

    04 MySQL 理論與實作(二)

    05 結構化查詢語言 SQL(一)

    06 結構化查詢語言 SQL(二)

    07 資料庫之資料維護

    08 資料庫與資料表定義

    09 期中考

    10 建立及使用 View

    http://120.114.52.240/web2.0/dadaconvert1/View_course_ability.php?actions=0&course_no=AE5200

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 11

    11 資料庫安全與管理

    12 資料庫設計(一)

    13 資料庫設計(二)

    14 資料庫正規化(一)

    15 資料庫正規化(二)

    16 網際網路與資料庫應用

    17 網際網路與資料庫應用

    18 期末考

    19

    20

    一、使用教材(書名、作者、出版社)

    Teaching material(Title、Author、press)

    資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN: 9789866507564

    二、參考書目(書名、作者、出版社)

    Reference book(Title、Author、press)

    資料庫系統原理 (Fundamentals of Database Systems, 5/e) / 陳玄玲著 / 碁峰 MySQL 5 徹底研究--(第三版) / 鄧瑋敦/博碩

    文化 編譯 MySQL 5.1 參考手冊 http://visdacom.com/Website_Design/MySQL_mysql/index.html

    三、指定閱讀書籍(書名、作者、出版社)

    Assigned book(Title、Author、press)

    資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN: 9789866507564

    四、教學方式

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 12

    Teaching methods

    授課方式:講義和投影片授課。 上機實作:於課程中讓每位學生親自練習操作資料庫。 作業:於每一單元授課完成後進

    行。 期中、期末實作:分別於期中和期末進行。

    五、成績評量及標準

    Grading and criteria

    平時成績(隨堂練習、出席 率):40% ; 期中作業:30% ; 期末作業:30%

    六、前置或延續學科

    Relevant courses

    前置:計算機概論 延續:伺服網頁程式設計

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 13

    2 第二週 (100 年 09 月 16 日)

    2.1 課程摘要

    課程摘要 點名

    2.2 安裝 MySQL (隨堂練習 10%)

    2.3 安裝 MySQL Workbench: 圖形化管理程式 (隨堂練習 5%)

    2.4 如何移除 MySQL Server

    注意事項

    安裝 MySQL 與

    工具軟體

    mysql-5.5.16-win32.msi

    參考課本 2.4.1: 安裝 MySQL

    mysql-workbench-gpl-5.2.35-win32.msi

    “課本 2.4.2: 安裝 MySQL Workbench”軟體版本較舊, 僅供參考

    SQL Script [課本 2.4.5] 將 orders_innoDB.sql 複製到 C:\MySQL

    JDBC Driver 檔名: mysql-connector-java-5.1.17.zip

    解壓縮路徑 = C:\MySQL

    功能: 透過 Java 前端來進行資料庫處理

    2.2 安裝 MySQL 資料庫 (隨堂練習 10%) 軟體: mysql-5.5.16-win32.msi

    參考課本: 第二章: 關聯式資料庫的架構 -- 2.4 安裝 MySQL 資料庫

    安裝路徑 = C:\MySQL

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 14

    開使安裝 MySQL Server 5.5 點[Next]鍵

    勾選{I accept the terms in the Agreement}

    按[Next]鍵繼續

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 15

    點選[Custom]

    按[Browse] 將路徑改成 { C:\MySQL\MySQL Server 5.5\ }

    按[Next]鍵繼續 或 可安裝全部(包含打”X”的部份)

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 16

    按[Install]鍵開始安裝

    按[Next]鍵繼續

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 17

    按[Next]鍵繼續

    註: 須確定有勾選{Launch the MySQL Instance Configuration Wizard}

    按裝完成, 按[Finish]鍵繼續 MySQL 設定

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 18

    按[Next]鍵繼續

    點選{Detailed Configuration}, 按[Next]鍵繼續

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 19

    點選{Developer Machine}, 按[Next]鍵繼續

    選{Multifunctional Database} 按[Next]鍵繼續

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 20

    按[Next]鍵繼續

    點選{Manual Setting} {Concurrent connections: 5}

    按[Next]鍵繼續

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 21

    依圖面所示, 皆為預設值, 按[Next]鍵繼續

    點選{Manual Selected Default Character Set / Collation} {Charter Set: big5}

    按[Next]鍵繼續

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 22

    額外勾選{Include Bin Directory in Windows PATH}

    按[Next]鍵繼續

    {New root password: mysql} {Confirm: mysql} 按[Next]鍵繼續

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 23

    設定完成, 按[Execute]鍵繼續

    按[Finish]鍵, 即完成安裝

    安裝完成後, 須重新開機

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 24

    打開 MySQL 5.5 Command Line Client 輸入密碼(Password): mysql 顯示目前有多少資料庫 輸入指令: show databases; 2.3 安裝 MySQL Workbench: 圖形化管理程式 (隨堂練習 5%)

    軟體: mysql-workbench-gpl-5.2.35-win32.msi

    安裝路徑 = C:\MySQL

    註: 如有碰到安裝錯誤顯示”Microsoft Visual C++ 2010 x86 Redistributable Setup”的

    問題, 先安裝此檔案 vcredist_x86.exe 之後, 再安裝 mysql-workbench-gpl-5.2.35-win32.msi

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 25

    按[Change…]鍵, 將安裝路徑改為 {C:\MySQL\MySQL Workbench 5.2 CE\}

    按[Next]鍵繼續

    點選[Complete] 按[Next]鍵繼續

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 26

    按[Install]開始安裝

    按[Finish]鍵, 即完成安裝

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 27

    2.4 將 SQL 檔案匯入到 MySQL (隨堂練習 5%) 參考課本: 第二章: 關聯式資料庫的架構

    2.4.5 將 SQL 檔案匯入資料到 MySQL 資料庫系統

    SQL 檔案匯入程序:

    1. 打開{DOS 命令提示字元}視窗

    2. 建立測試帳號

    3. 建立資料庫

    4. 使用資料庫

    5. 設定連線字集

    6. 執行匯入 SQL 指令

    將” orders_innoDB.sql” 放置在安裝 MySQL 的目錄裏, 例如: C:\MySQL)

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 28

    開始 所有程式 附屬應用程式 “DOS 命令提示字元”視窗 建立以下帳號

    說明 指令

    以”root”身份登入 1. 打開 “DOS 命令提示字元”視窗

    2. 輸入指令: mysql -u root -p

    3. 輸入密碼(Password): mysql

    建立具有管理權限的

    ”orders2”帳號

    mysql> GRANT ALL PRIVILEGES ON *.* TO

    'orders2'@'localhost' IDENTIFIED BY 'orders2' WITH GRANT

    OPTION;

    建立具有管理權限

    的”test”帳號

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'testdb'@'localhost'

    IDENTIFIED BY 'testdb' WITH GRANT OPTION;

    登出 MySQL mysql> exit;

    將” orders_innoDB.sql” 放置在安裝 MySQL 的目錄裏, 例如: C:\MySQL)

    建立資料庫 使用資料庫 設定連線字集 執行匯入 SQL 指令

    說明 指令

    以”test”身份登入 打開 “DOS 命令提示字元”視窗

    輸入指令: mysql -u orders2 -p

    輸入密碼(Password): orders2

    建立資料庫 mysql> create database orders2;

    Query OK, 1 row affected (0.00 sec)

    顯示目前有多少資料庫 mysql> show databases;

    +--------------------+

    | Database |

    +--------------------+

    | information_schema |

    | mysql |

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 29

    | orders2 |

    | performance_schema |

    | test |

    +--------------------+

    5 rows in set (0.00 sec)

    使用資料庫 mysql> use orders2;

    Database changed

    執行匯入 SQL 指令

    將 orders_innoDB.sql

    放置在 C:\MySQL 目錄

    (使用 InnoDB 交易檔格

    式)

    mysql> source c:\MySQL\orders_innoDB.sql

    Query OK, 0 rows affected (0.00 sec)

    Query OK, 0 rows affected (0.00 sec)

    Query OK, 0 rows affected (0.00 sec)

    Query OK, 8 rows affected (0.02 sec)

    Records: 8 Duplicates: 0 Warnings: 0

    ……………………………………

    Query OK, 0 rows affected (0.02 sec)

    Query OK, 29 rows affected (0.00 sec)

    ……………………………………

    mysql>

    顯示 orders2 資料庫

    裏, 有多少資料表格

    mysql> show tables;

    +-------------------+

    | Tables_in_orders2 |

    +-------------------+

    | autonumber |

    | categories |

    | customers |

    | departments |

    | dept |

    | emp |

    | employees |

    | orderdetails |

    | orders |

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 30

    | postal |

    | products |

    | shippers |

    | suppliers |

    +-------------------+

    13 rows in set (0.00 sec)

    設定連線字集 mysql> set names big5;

    Query OK, 0 rows affected (0.00 sec)

    練習 SQL 指令 mysql> SELECT DepartmentID, Name FROM Departments;

    登出 MySQL mysql> exit;

    2.5 如何移除 MySQL Server 註: 當 MySQL Server 安裝不完整或有問題時, 可使用以下方式解除安裝.

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 31

    控制台 打開”新增或移除程式” 選”MySQL Server 5.5” 按”移除”鍵

    按”是(Y)”鍵開始移除, 直到結束為止

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 32

    Windows XP 路徑 = C:\Documents and Settings\All Users\Application

    Data\MySQL

    Windows 7 路徑 = C:\ProgramData\MySQL

    將”MySQL”資料夾全部移除後, 才能確定 MySQL Server 完全清乾淨

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 33

    3 第三週 (100 年 09 月 23 日)

    3.1 課程摘要

    課程摘要 3.2 初探資料庫系統 (概念)

    3.3 關聯式資料庫的架構 (概念)

    尚未安裝 MySQL Server, 參照以下章節

    2.2 安裝 MySQL (隨堂練習 10%)

    2.3 安裝 MySQL Workbench: 圖形化管理程式 (隨堂練習 5%)

    3.4 將 SQL 檔案匯入到 MySQL (隨堂練習 5%)

    4.2 使用 MySQL Workbench 5.2 CE

    點名

    注意事項 自 9/30 起上課教室異動通知 上課地點: I5302

    原因: 在學期 中之後教學生如何使用"雲端網站開發平台 (Cloud

    WebCenter Platform)"與 MySQL 之整合, 須至少 1GB 記憶 體以上

    09/30 起, 進行”隨堂練習”登記

    教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN:

    9789866507564

    3.2 初探資料庫系統 (概念) 參閱課本第一章

    資料庫 資料庫是一堆相關資料的集合

    一個記錄由數個欄位所構成

    一個資料檔案由數個記錄所構成

    一個資料庫由數個資料檔所構成

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 34

    資料庫系統 資料庫(Database)

    資料庫管理系統(Data Base Mgmt System)

    應用程式(Application Program)所構成

    資料模型

    Data Model

    階層式資料庫

    Hierarchical DBS 採樹狀架構

    不同層次間資料關聯性直接且簡單

    資料以縱向發展,橫向很難建立

    網路式資料庫

    Network DBS 每筆資料都可當作一個節點

    可避免資料的重複性

    關聯性複雜

    關聯式資料庫

    RDB, Relational DataBase 行銷資料庫由客戶檔、商品檔、銷售員檔、交易檔…等所構成。

    每一資料檔以主關鍵欄位連結

    物件導向式資料庫

    利用物件導向的觀念來做資料處理

    具物件導向技術

    具有資料庫功能

    適用於處理各種大量且複的資料或表示資料間複雜關係的應用系統

    資料庫管理系統

    DBMS

    用來建立資料庫

    存取資料庫中資料

    以及維護資料庫的特殊套裝軟體

    對資料庫作查詢、新增、刪除、修改的軟體

    為何需要資料庫管理系統呢?

    簡化使用者的工作

    使用者可以藉由簡單的資料庫查詢語言,透過 DBMS 對資

    料庫進行新增、修改或刪除等動作

    提高資料庫的安全性

    由於使用者可以藉由簡單的資料庫查詢語言,透過 DBMS

    才能對資料庫中的資料進行更動

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 35

    圖為 DBMS 的架構,因為資料庫只是一群經過整合的資料而已,使

    用者與程式設計師可以分別使用不同的程式語言來擷取他們所需的資

    料,而且會將這些資料的共同格式,專換成應用程式所須知格式

    資料庫存取的三

    樣工具

    資料庫量以記錄資料與維護資料為目的的系統,為了達到資料存取處理,

    資料庫內必須有三樣工具,即是:

    資料庫組織工具:此工具是用來定義資料庫的邏輯結構,一般常用的

    資料庫邏輯結構有順序型、索引順序型等

    資料存取工具:此工具做為循序、查詢目錄即條件處理等三種常用的

    存取資料方法

    資料庫控制工具:此工具在維護資料的安全性、完整性,並進行各種

    資料的檢核、再起用與回復之功能

    3.3 關聯式資料庫的架構 (概念) 參閱課本第二章: 關聯式資料庫的架構 (2.1 ~ 2.3)

    檔案

    紀錄

    欄位

    資料庫是由一個或多個檔案(file)所組成,而檔案則是一群相關資料的

    集合。

    資料庫的檔案是由一群紀錄(record)所組成,每筆記錄則由數個欄位

    (field)來表示。

    就像一個表格裡面每一筆(row)資料便可稱為紀錄,而組成記錄的每

    一格資訊便可稱為欄位

    資料庫如何儲存資料: 表格(Table),欄位(Field),紀錄(Record)

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 36

    欄位的種類可以視所需求的狀況採取文字(text)、數值(numeric)、日

    期(date)或是計算性質(computed)的欄位

    關聯式資料庫

    (Relational Database)

    關係 (Relation),主鍵 (Primary Key),外鍵 (Foreign Key)

    舉例:一個學生資訊管理系統

    一筆記錄(record)代表一個學生。

    可以將資料庫分成幾個部份來記錄:

    學生成績單

    學費紀錄表

    課表檔案

    關鍵欄位(Primary Key field)

    學生 ID 是用來區別不同學生的主要依據,所以我們稱其為關鍵欄

    關係(Relationship):

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 37

    允許資料庫檔案之間存在著關係(relation),使得使用者修該其中一

    份檔案,另外幾份相關檔案也會跟著修改

    利用各關係檔案之中的關鍵欄位來互相建立關聯模組,串起整個相

    關資料

    SQL (Structured Query Language)

    操作資料庫的共通語言

    MySQL 簡介 MySQL 是什麼

    RDBMS (Relational Database Management System) Relational Database 是一個開放源碼的自由軟體

    習慣上唸成 “my-S-Q-L”,而非 “my-Sequel”

    MySQL 的特色

    MySQL 是一種開放源碼的自由軟體

    穩定,快速

    完全符合 SQL92 標準

    有 multi-threading (多執行緒) 能力

    可安裝於 Unix, MS-Windows, MacOS…多種平台之上

    提供 C/C++, Java, PHP, Perl, Python, Tcl…各種應用程式開發介

    面 (API, Application Programming Interface)

    3.4 MySQL Help

    MySQL Help mysql> help

    ………………………

    List of all MySQL commands:

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 38

    Note that all text commands must be first on line and end

    with ';'

    ? (\?) Synonym for `help'.

    clear (\c) Clear the current input statement.

    connect (\r) Reconnect to the server. Optional arguments

    are db and host.

    delimiter (\d) Set statement delimiter.

    ego (\G) Send command to mysql server, display result

    vertically.

    exit (\q) Exit mysql. Same as quit.

    go (\g) Send command to mysql server.

    help (\h) Display this help.

    notee (\t) Don't write into outfile.

    print (\p) Print current command.

    prompt (\R) Change your mysql prompt.

    quit (\q) Quit mysql.

    rehash (\#) Rebuild completion hash.

    source (\.) Execute an SQL script file. Takes a file

    name as an argument.

    status (\s) Get status information from the server.

    tee (\T) Set outfile [to_outfile]. Append everything

    into given outfile.

    use (\u) Use another database. Takes database name as

    argument.

    charset (\C) Switch to another charset. Might be needed

    for processing binlog

    with multi-byte charsets.

    warnings (\W) Show warnings after every statement.

    nowarning (\w) Don't show warnings after every statement.

    For server side help, type 'help contents'

    mysql>

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 39

    4 第四週 (100 年 09 月 30 日)

    4.1 課程摘要

    課程摘要 參照以下章節, 安裝 MySQL Server 相關軟體

    2.2 安裝 MySQL (隨堂練習 10%)

    安裝路徑 = C:\MySQL

    2.3 安裝 MySQL Workbench: 圖形化管理程式 (隨堂練習 5%)

    安裝路徑 = C:\MySQL

    (更新) 2.4 將 SQL 檔案匯入到 MySQL (隨堂練習 5%)

    3.4 MySQL Help

    4.2 使用 MySQL Workbench 5.2 CE

    隨堂練習登記 (依 4.2 為準)

    點名

    注意事項 自 9/30 起上課教室異動通知 上課地點: I5302

    原因: 在學期 中之後教學生如何使用"雲端網站開發平台 (Cloud

    WebCenter Platform)"與 MySQL 之整合, 須至少 1GB 記憶 體以上

    教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN:

    9789866507564

    4.2 使用 MySQL Workbench 5.2 CE 參考課本: 第三章: 資料庫之資料選取查詢

    3.2.4 使用 MySQL Query Browser (用 MySQL Workbench 5.2 CE 取代)

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 40

    連接到新的資料庫

    MySQL MySQL Workbench 5.2 CE Database Manage Connections…

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 41

    Manage DB Connections

    Connection Name: MySQL-Dev-Server (orders2) Commection Method: Standard (TCP/IP) Hostname: localhost Port: 3306 Username: orders2 Default Schema: orders2

    Password: orders2

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 42

    按[Test Connection]鍵, 進行資料庫連線測試

    有看到上面畫面{Connection parameters are correct.}, 表示資料庫連線測試成功.

    按[OK]鈕, 關掉視窗

    按[Close]鈕, 關掉{Manage DB Connections}視窗

    按{MySQL-Dev-Server (orders2)}, 打開資料庫視窗

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 43

    在{Connect to MySQL Server}視窗 Password: orders2

    會看到兩個資料庫 {orders2}與{test}

    表示 MySQL Workbench 成功的連線到資料庫

    練習 SQL 語法 SELECT DepartmentID, Name FROM Departments;

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 44

    輸入{ SELECT DepartmentID, Name FROM Departments; } 在 Query 選單裏 按{Execute (All or Selection) to Text} 在 Output 視窗裏, 可看到以下的結果 Query Output:

    > SELECT DepartmentID, Name FROM Departments

    + ----------------- + --------- +

    | DepartmentID | Name |

    + ----------------- + --------- +

    | 10 | 市場行銷部 |

    | 20 | 業務部 |

    | 30 | 管理部 |

    | 40 | 研發部 | + ----------------- + --------- +

    4 rows

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 45

    Q&A: 如果看到錯誤訊息{Error Code: 1146 Table’test.departments doesn’t exist}

    原因: 如果要 Query 不同的資料庫, 須指定資料庫名稱, 例如: orders2 或 test

    解法: 如下圖

    解法: 輸入{ SELECT DepartmentID, Name FROM orders2.Departments; }

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 46

    5 第五週 (100 年 10 月 07 日)

    5.1 課程摘要

    課程摘要 5.2 資料庫之資料選取查詢 (3.1 ~ 3.3)

    5.3 資料庫之資料選取查詢 (3.4.1 ~ 3.4.2)

    點名

    參照以下章節, 安裝 MySQL Server 相關軟體

    2.2 安裝 MySQL (隨堂練習 10%)

    安裝路徑 = C:\MySQL

    2.3 安裝 MySQL Workbench: 圖形化管理程式 (隨堂練習 5%)

    安裝路徑 = C:\MySQL

    2.4 將 SQL 檔案匯入到 MySQL (隨堂練習 5%)

    4.2 使用 MySQL Workbench 5.2 CE

    注意事項 轉達進修部訊息如下。

    一、新生班級學生印製學生證需上傳相片電子檔,請通知未上傳的同學,

    攜帶照片電子檔(如果沒有,則請攜帶一張 1 吋或 2 吋照片),依下列日

    期/時間到電算中心,由電算中心協助同學上傳。

    週一至週五夜間上課班級-10 月 6 日(星期四)、10 月 7 日(星期五)晚

    上 7 時至 9 時

    自 9/30 起上課教室異動通知 上課地點: I5302

    教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN:

    9789866507564

    5.2 資料庫之資料選取查詢 (3.1 ~ 3.3)

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 47

    參考課本: 第三章: 資料庫之資料選取查詢

    3.1 撰寫 SQL 指令

    3.3 使用 SELECT 選取資料

    註: 參考本講義 4.2 使用 MySQL Workbench 5.2 CE

    SQL 指令

    說明 指令

    資料查詢語言 (DQL-

    Data Query Language)

    用來查詢資料表裡的資

    料: SELECT 選取資料庫

    中的資料

    非程序性語言(Non-procedure Language)

    以單一敘述或指令來操作資料庫, 並以分號(;)作為結束符號.

    例如: SELECT * FROM table;

    註解: 先輸入”--”符號, 再補上說明文字即可.

    例如: --

    保留字或關鍵字(Keyword): 不需要背

    例如: database, databases, datetime, ……

    SQL 語言是不分大小寫

    用大寫英文字來標示保留字或關鍵字(Keyword)

    用小寫英文字來標示其它部份

    SQL 語法

    (參考課本 3.3)

    SELECT 的部份列舉要選取的欄位名稱

    FROM 的部份責是指定資料表來名稱

    練習(如下圖所示):

    SELECT DepartmentID, Name

    FROM Departments;

    SQL 語法

    (參考課本 3.3)

    想要選取資料表的所有欄位資料

    SELECT * FROM Departments;

    +--------------+------------+----------+

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 48

    | DepartmentID | Name | Location |

    +--------------+------------+----------+

    | 10 | 市場行銷部 | 台北 |

    | 20 | 業務部 | 台北 |

    | 30 | 管理部 | 台北 |

    | 40 | 研發部 | 台中 |

    +--------------+------------+----------+

    4 rows in set (0.00 sec)

    使用別名(AS)

    (參考課本 3.3)

    SELECT 的欄位名稱可以在空白後加入別名 (Alias)

    或用 AS 來設定別名

    練習: 將 DepartmentID 設為 Department

    SELECT DepartmentID AS Department, Name

    FROM Departments

    取中文別名

    (參考課本 3.3)

    SELECT DepartmentID AS 部門代號, Name AS 部門名稱

    FROM Departments

    產生相同多筆資料

    (參考課本 3.3)

    SELECT Location

    FROM Departments

    使用 DISTINCT 將相同

    資料只列出一次

    (參考課本 3.3)

    SELECT DISTINCT Location

    FROM Departments

    5.3 資料庫之資料選取查詢 (3.4.1 ~ 3.4.2)

    參考課本 -- 第三章: 資料庫之資料選取查詢

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 49

    3.4 使用 WHERE 設定條件選取資料

    說明 指令

    WHERE 需要選擇性地抓資料, 就需要用到 WHERE 這個指令

    於 WHERE 子句中只定條件運算式

    比較運算子 比較運算子是用來處理字元、數值或日期資料,並且可以用於查

    詢的 WHERE 或 HAVING 子句。

    比較運算子求得布林資料類型,而且依照測試條件的結果而傳回

    TRUE 或 FALSE。

    例如,若要計算 1998 年 3 月 15 日 (含) 之前僱用員工的獎金,則計算

    員工的 hire_date 是否小於或等於 1998 年 3 月 15 日,即可求得要發放

    獎金的員工清單。

    有效的比較運算子包括下列運算子:

    > (大於)

    < (小於)

    = (等於)

    = (大於或等於)

    != (不等於)

    (不等於)

    IS NULL (為空值)

    IS NOT NULL (不為空值)

    SQL 語法

    (參考課本 3.4.1)

    SELECT 的部份列舉要選取的欄位名稱

    FROM 的部份責是指定資料表來名稱

    WHERE 條件表示式

    練習

    (參考課本 3.4.1)

    列出部門代號為 10 的資料:

    SELECT *

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 50

    FROM Departments

    WHERE DepartmentID = 10;

    練習

    (參考課本 3.4.1)

    列出所有部門代號為 20 的所有員工資料:

    SELECT *

    FROM Employees

    WHERE DepartmentID = 20;

    NULL 值

    (參考課本 3.4.1)

    NULL 值代表是未知、未定的資料

    所有佣金是 NULL 的員工資料:

    SELECT *

    FROM Employees

    WHERE Commission IS NULL

    NULL 值

    (參考課本 3.4.1)

    NULL 值代表是未知、未定的資料

    所有佣金不為 NULL 的員工資料:

    SELECT *

    FROM Employees

    WHERE Commission IS NOT NULL;

    WHERE 設定複雜條件

    (參考課本 3.4.2)

    可以設定由多個條件組合而成的複雜條件

    可使用邏輯運算子(Logical Operator)來組合比較條件運算式

    AND (且 ; 和)

    OR (或)

    NOT (非 ; 不是)

    練習

    (參考課本 3.4.2)

    選出職務為業務且稱呼為先生的男性之員工編號、姓名和年薪:

    SELECT EmployeeID, Name, Salary, Title

    FROM Employees

    WHERE Title ='業務' AND TitleOfCourtesy = '先生';

    練習 選出職務為業務或佣金不為 NULL 的之員工編號、姓名、年薪、

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 51

    (參考課本 3.4.2)

    職稱、佣金資料

    SELECT EmployeeID, Name, Salary, Title, Commission

    FROM Employees

    WHERE Title = '業務' OR Commission IS NOT NULL;

    練習

    (參考課本 3.4.2)

    選出非業務員工資料

    注意: NOT 後括號是必要的

    SELECT *

    FROM Employees

    WHERE NOT (Title = '業務');

    SELECT *

    FROM Employees

    WHERE Title '業務';

    SELECT *

    FROM Employees

    WHERE Title != '業務';

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 52

    6 第六週 (100 年 10 月 14 日)

    6.1 課程摘要

    課程摘要 6.2 資料庫之資料選取查詢 (3.4.3 ~ 3.4.4)

    點名

    注意事項

    教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN:

    9789866507564

    6.2 資料庫之資料選取查詢 (3.4.3 ~ 3.4.4)

    參考課本 -- 第三章: 資料庫之資料選取查詢

    3.4 使用 WHERE 設定條件選取資料

    說明 指令

    指定模糊條件

    限制資料範圍

    (參考課本 3.4.3)

    LIKE (如 ; 像) ; 可用萬用字元”%”

    BETWEEN ….. AND ….. (介於)

    IN (在於…之中)

    練習

    (參考課本 3.4.3)

    選出含有的經理所有員工:

    SELECT *

    FROM Employees

    WHERE Title LIKE '%經理';

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 53

    練習

    (參考課本 3.4.3)

    選出姓式為’張’的所有員工:

    SELECT *

    FROM Employees

    WHERE Name LIKE '張%';

    練習

    (參考課本 3.4.3)

    選出員工的英文姓名字母為'M___'(三個底線)

    SELECT *

    FROM Employees

    WHERE EngName LIKE 'M___';

    練習

    (參考課本 3.4.3)

    選出員工英文字含有'ar'

    SELECT *

    FROM Employees

    WHERE EngName LIKE '%ar%';

    練習

    (參考課本 3.4.3)

    選出所有員工年薪介於 420000 ~ 540000

    SELECT *

    FROM Employees

    WHERE Salary BETWEEN 420000 AND 540000;

    SELECT *

    FROM Employees

    WHERE Salary >= 420000 AND Salary

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 54

    (參考課本 3.4.3) FROM Employees

    WHERE EngName IN ('Mary', 'Marua', 'Mike', 'Linda');

    進行資料排序

    (參考課本 3.4.4)

    用 ORDER BY 子句來設定排序方式

    SELECT 的部份列舉要選取的欄位名稱

    FROM 的部份責是指定資料表來名稱

    WHERE 條件表示式

    ORDER BY 排序欄位一 [ASC | DESC], 排序欄位二[ASC | DESC]

    練習

    (參考課本 3.4.4)

    依部門代號由大到小(主排序)及員工編號由大到小(次要排序):

    SELECT *

    FROM Departments

    ORDER BY DepartmentID DESC;

    練習

    (參考課本 3.4.4)

    依部門代號由小到大及員工編號由小到大:

    SELECT DepartmentID, EmployeeID, Name, EngName

    FROM Employees

    ORDER BY DepartmentID, EmployeeID;

    練習

    (參考課本 3.4.4)

    依部門代號由大到小(主排序)及員工編號由小到大(次要排序):

    SELECT DepartmentID, EmployeeID, Name, EngName

    FROM Employees

    ORDER BY DepartmentID DESC, EmployeeID;

    練習

    (參考課本 3.4.4)

    以欄位編號為主: 依部門代號由大到小(主排序)及員工編號由小

    到大(次要排序):

    SELECT DepartmentID, EmployeeID, Name, EngName

    FROM Employees

    ORDER BY 1 DESC, 2;

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 55

    7 第七週 (100 年 10 月 21 日)

    7.1 課程摘要

    課程摘要 7.2 資料庫之資料選取查詢 (3.5 ~ 3.10)

    點名

    注意事項

    教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN:

    9789866507564

    7.2 資料庫之資料選取查詢 (3.5 ~ 3.10) 參考: 第三章--資料庫之資料選取查詢

    3.5, 3.6, 3.7, 3.8, 3.10

    SQL 指令:

    說明 指令

    使用運算式

    及函數

    (參考課本 3.5)

    算術運算子: + , - , * , / , %(取餘數)

    練習

    (參考課本 3.5)

    計算訂單編號明細

    SELECT ProductID AS '產品編號', UnitPrice AS '單價', Quantity AS

    '數量', UnitPrice*Quantity AS '總價'

    FROM OrderDetails

    WHERE OrderID = 10251;

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 56

    練習

    (參考課本 3.5)

    位元運算

    SELECT 12 & 24, 12 | 24, 12 ^ 24;

    練習

    (參考課本 3.5)

    列表 3.8: 數學函數

    ROUND( 四捨五入 ), LEAST( 回傳最小值 ), RAND(0~1 隨機值 ),

    SIGN(X>0 傳回 1, X

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 57

    四種函數) 及範圍聚合函數來計算各種統計值。

    使用 SQL 聚合函數,您可以在多組的值上計算多種不同的統計。

    練習

    (參考課本 3.6)

    要取得員工的總筆數

    SELECT COUNT(*) FROM Employees;

    練習

    (參考課本 3.6)

    要取得員工的總人數、最低 / 最高 / 總計 / 平均薪資及標準差

    SELECT COUNT(*) AS '員工數', MIN(Salary) AS '最低薪資',

    MAX(Salary) AS '最高薪資', SUM(Salary) AS '薪資總計',

    AVG(Salary) AS '平均薪資', STDDEV(Salary) AS '標準差'

    FROM Employees;

    練習

    (參考課本 3.6)

    要取得員工部門代號為 10 的總人數、最低 / 最高 / 總計 / 平均薪資及

    標準差

    SELECT COUNT(*) AS '員工數', MIN(Salary) AS '最低薪資',

    MAX(Salary) AS '最高薪資', SUM(Salary) AS '薪資總計',

    AVG(Salary) AS '平均薪資', STDDEV(Salary) AS '標準差'

    FROM Employees

    WHERE DepartmentID = 10;

    練習

    (參考課本 3.6)

    要取得員工佣金總筆數, 非 NULL 值及不同值資料數

    SELECT COUNT(*), COUNT(Commission), COUNT(DISTINCT

    Commission)

    FROM Employees;

    GROUP BY

    使用 GROUP BY 將資料群組化,然後使用聚合函數來取得我們需要的

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 58

    (參考課本 3.7) 語法:

    SELECT {field}, {aggregate_function(field)}

    FROM {table}

    WHERE {criteria}

    GROUP BY {field}

    練習

    (參考課本 3.7)

    要取得各部門員工的總人數、最低 / 最高 / 總計 / 平均薪資及標準差

    SELECT DepartmentID, COUNT(*) AS '員工數', MIN(Salary) AS '最

    低薪資',

    MAX(Salary) AS '最高薪資', SUM(Salary) AS '薪資總計',

    AVG(Salary) AS '平均薪資', STDDEV(Salary) AS '標準差'

    FROM Employees

    GROUP BY DepartmentID;

    練習

    (參考課本 3.7)

    注意: 使用群組化 GROUP BY,只能使用聚合函數及 GROUP BY 中

    指定的欄位名稱

    錯誤 SQL!!

    SELECT DepartmentID, Name, COUNT(*) AS '員工數',

    MIN(Salary) AS '最低薪資',MAX(Salary) AS '最高薪資',

    SUM(Salary) AS '薪資總計',AVG(Salary) AS '平均薪資'

    FROM Employees

    GROUP BY DepartmentID;

    HAVING

    (參考課本 3.8)

    HAVING 對群組化後的資料進行篩選

    HAVING 子句通常是在一個 SQL 句子的最後。

    一個含有 HAVING 子句的 SQL 並不一定要包含 GROUP BY 子句。

    HAVING 的語法如下:

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 59

    SELECT "欄位 1", SUM("欄位 2")

    FROM "表格名"

    GROUP BY "欄位 1"

    HAVING (函數條件)

    練習

    (參考課本 3.8)

    要取得各部門員工(依部門群組化)的總人數、最低 / 最高 / 總計 / 平均

    薪資及標準差, 總人數需達 5 人以上

    SELECT DepartmentID AS '部門代號', COUNT(*) AS '員工數',

    MIN(Salary) AS '最低薪資',MAX(Salary) AS '最高薪資',

    SUM(Salary) AS '薪資總計',AVG(Salary) AS '平均薪資',

    STDDEV(Salary) AS '標準差'

    FROM Employees

    GROUP BY DepartmentID

    HAVING COUNT(*) >= 5;

    NULL

    (參考課本 3.10)

    一個用來表示缺少或未知的資料的值。

    Null 值可以在一個運算式或查詢中輸入,用來表示一個資訊未知的欄

    位。

    有些欄位,例如做為主索引的欄位,不能包含 Null 值。

    練習

    (參考課本 3.10)

    計算員工薪資: 有多少 NULL 值?

    SELECT EmployeeID, Name, Salary, Commission,

    Salary+Commission AS Total

    FROM Employees;

    練習

    (參考課本 3.10)

    含有 NULL 值的聚合統計

    SELECT DepartmentID, SUM(Salary), SUM(Commission),

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 60

    SUM(Salary+Commission) AS Total

    FROM Employees

    GROUP BY DepartmentID;

    練習

    (參考課本 3.10)

    IFNULL(expr, value): 當 expr 為 NULL 時用 value 值取代

    SELECT EmployeeID, Name, Salary, Commission,

    Salary + IFNULL(Commission,0) AS Total

    FROM Employees;

    練習

    (參考課本 3.10)

    IFNULL(expr, value): 當 expr 為 NULL 時用 value 值取代

    SELECT DepartmentID, SUM(Salary), SUM(Commission),

    SUM(Salary + IFNULL(Commission,0) ) AS Total

    FROM Employees

    GROUP BY DepartmentID;

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 61

    8 第八週 (100 年 10 月 28 日)

    8.1 課程摘要

    課程摘要 8.2 說明期中作業要點, 並開始撰寫

    作業方式: (1)獨立作業 ; (2) 2 人為一組

    繳交方式: 以 e-mail 或課堂內繳交"此電子檔+自己姓名"

    例如: 夜四資工二 A_資料庫導論_1001_期中作業_你的大名.txt

    繳交日期: 100 年 11 月 04 日晚上 8:00PM 前 (註: 10/28~11/04 之間,

    如果完成皆可以 e-mail 繳交)

    期中作業:30%

    e-mail: [email protected]

    注意事項 1: 當繳交完期中作業後, 就算一次點名, 因此 100 年 11 月

    04 日(星期五)可以選擇不到班上, 由同學自行決定.

    注意事項 2: 如果有想要聽解答的同學, 在 100 年 11 月 04 日(星期

    五)"晚上 8:00PM 後", 再到班上即可.

    注意事項 3: 如有同學尚未繳交期中作業, 100 年 11 月 04 日(星期五)

    當天 6:30PM ~ 8:00PM 為撰寫時間

    點名

    注意事項

    教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN:

    9789866507564

    8.2 說明期中作業要點, 並開始撰寫

    作業方式: (1)獨立作業 (2) 2 人為一組

    mailto:[email protected]

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 62

    繳交方式: 以 e-mail 或課堂內繳交"此電子檔+自己姓名"

    例如: 夜四資工二 A_資料庫導論_1001_期中作業_你的大名.txt

    繳交日期: 100 年 11 月 04 日晚上 8:00PM 前 (註: 10/28~11/04 之間, 如果完成皆可以 e-

    mail 繳交)

    期中作業:30%

    範例: 請使用 SQL 指令查詢範例資料庫中部門編號為 10 之員工姓名與抬頭

    指令:

    SELECT Name, Title FROM Employees WHERE DepartmentID = 10;

    結果:

    + --------- + ---------- + | Name | Title | + --------- + ---------- + | 何力宇 | 行銷經理 |

    | 王明亮 | 行銷工程師 |

    | 顏子福 | 廣告設計師 |

    + --------- + ---------- + 3 rows

    題目 請查詢員工薪資年薪超過 50 萬且為業務部門 20 的員工之工號、姓名、

    年薪、及雇用日期

    SQL 語法

    (參考課本 3.4.1)

    使用 WHERE 子句來過濾資料

    於 WHERE 子句中指定條件運算式

    練習: 查詢範例資料庫中業務部門 20 之員工資料

    SELECT *

    FROM Employees

    WHERE DepartmentID = 20;

    SQL 語法

    使用比較運算子(>=)

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 63

    (參考課本 3.4.1)

    練習: 查詢員工薪資年薪超過 20 萬

    SELECT *

    FROM Employees

    WHERE Salary >= 200000;

    SQL 語法

    (參考課本 3.4.2)

    使用邏輯運算子(Logical Operator)來組合比較條件運算式

    邏輯運算子(Logical Operator): “AND”、”OR”、”NOT”

    練習: 選出職務為業務且稱呼為先生的男性之員工編號、姓名、年

    薪、及雇用日期

    SELECT EmployeeID, Name, Salary, HireDate

    FROM Employees

    WHERE Title = '業務' AND TitleOfCourtesy = '先生';

    題目 請查詢薪資介於 40~70 萬的男性員工之部門、工號、姓名、薪資及職務

    等相關資料。

    SQL 語法

    (參考課本 3.4.3)

    邏輯運算子:

    BETWEEN … AND 介於

    練習 (1): 查詢薪資介於 42~52 萬的員工之部門、工號、姓名、薪資

    及職務等相關資料

    SELECT DepartmentID, EmployeeID, Name, Salary,

    Title

    FROM Employees

    WHERE Salary BETWEEN 420000 AND 540000;

    練習 (2): 查詢薪資介於 42~52 萬的員工之部門、工號、姓名、薪資

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 64

    及職務等相關資料

    SELECT DepartmentID, EmployeeID, Name, Salary,

    Title

    FROM Employees

    WHERE Salary >= 420000 AND Salary

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 65

    (參考課本 3.4.1) SELECT *

    FROM Employees

    WHERE Commission IS NOT NULL;

    題目 選出員工英文姓名為'Mary', 'Mike', 'Linda', 且依員工編號由大到小(主排序)

    結果顯示 EmployeeID, DepartmentID, Name, EngName 即可

    練習

    (參考課本 3.4.3)

    選出員工英文姓名為'Mary', 'Marua', 'Mike', 'Linda'

    SELECT *

    FROM Employees

    WHERE EngName IN ('Mary', 'Marua', 'Mike', 'Linda');

    練習

    (參考課本 3.4.4)

    依部門代號由大到小(主排序)及員工編號由小到大(次要排序):

    SELECT DepartmentID, EmployeeID, Name, EngName

    FROM Employees

    ORDER BY DepartmentID DESC, EmployeeID;

    題目 員工雇用日期滿 6 年, 且業務部門 20

    練習

    (參考課本 3.5)

    員工雇用日期滿三年

    SELECT Name, HireDate, DATE_ADD(HireDate, INTERVAL 3

    YEAR)

    FROM Employees;

    SQL 語法

    (參考課本 3.4.1)

    使用 WHERE 子句來過濾資料

    於 WHERE 子句中指定條件運算式

    練習: 查詢範例資料庫中部門編號為 10 之員工資料

    SELECT *

    FROM Departments

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 66

    WHERE DepartmentID = 10;

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 67

    9 第九週 (100 年 11 月 04 日)

    9.1 完成與繳交期中作業

    課程摘要 尚未完成期中作業的同學, 請今天 8:00PM 前務必完成並繳交

    8.2 說明期中作業要點, 並開始撰寫

    作業方式: (1)獨立作業 ; (2) 2 人為一組

    繳交方式: 以 e-mail 或課堂內繳交"此電子檔+自己姓名"

    例如: 夜四資工二 A_資料庫導論_1001_期中作業_你的大名.txt

    繳交日期: 100 年 11 月 04 日晚上 8:00PM 前 (註: 10/28~11/04 之間,

    如果完成皆可以 e-mail 繳交)

    期中作業:30%

    e-mail: [email protected]

    注意事項 1: 當繳交完期中作業後, 就算一次點名, 因此 100 年 11 月

    04 日(星期五)可以選擇不到班上, 由同學自行決定.

    注意事項 2: 如果有想要聽解答的同學, 在 100 年 11 月 04 日(星期

    五)"晚上 8:00PM 後", 再到班上即可.

    注意事項 3: 如有同學尚未繳交期中作業, 100 年 11 月 04 日(星期五)

    當天 6:30PM ~ 8:00PM 為撰寫時間

    9.2 說明期中作業答案

    點名 (以完成繳交期中作業為主)

    9.2 說明期中作業答案

    說明”夜四資工二 A_資料庫導論_1001_期中作業_解答.txt”

    mailto:[email protected]

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 68

    4. 選出員工英文姓名為'Mary', 'Mike', 'Linda', 且依員工編號由大到小(主排序)

    結果顯示 EmployeeID, DepartmentID, Name, EngName 即可

    指令:

    SELECT EmployeeID, DepartmentID, Name, Commission FROM Employees WHERE EngName IN ('Mary', 'Mike', 'Linda') ORDER BY DepartmentID DESC, EmployeeID;

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 69

    10 第十週 (100 年 11 月 11 日)

    10.1 課程摘要

    課程摘要 9.2 說明期中作業答案

    10.2 結合與子查詢 (課本 4.1 ~ 4.5)

    點名

    注意事項 曾主任於 100 年 11 月 2 日中午開完 100 學年度第 6 次主管會議,院長指示

    辦理事項,請各位老師配合,謝謝。

    1. 請宣導上課勿著拖鞋與睡覺、上課勿打電動。

    2. 資工系夜間部老師,請向同學宣導,抽煙請至一樓抽煙區並勿隨意丟棄

    煙蒂。

    教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN:

    9789866507564

    10.2 結合與子查詢 (課本 4.1 ~ 4.5) 參考: 第四章—結合與子查詢

    4.1, 4.3, 4.5

    說明 指令

    JOIN

    (參考課本 4.1)

    JOIN (連結) 是利用不同資料表之間欄位的關連性來結合多資料表之檢

    索。

    是結合多個資料表而組成一抽象的暫時性資料表以供資料查詢,在原

    各資料表中之紀錄及結構皆不會因此連接查詢而改變。

    NATUARAL 利用相同名稱之特定的欄位來結合資料表

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 70

    JOIN 自然結合

    (參考課本 4.1)

    練習

    (參考課本 4.1.1)

    使用 Naturnal JOIN 來連結訂單主檔與訂單明細檔。

    SELECT *

    FROM Orders NATURAL JOIN OrderDetails;

    練習

    (參考課本 4.1.1)

    使用 Naturnal JOIN 來連結訂單主檔與訂單明細檔。

    訂單編號小於等於 10250

    SELECT *

    FROM Orders NATURAL JOIN OrderDetails

    WHERE Orders.OrderID

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 71

    (參考課本 4.1.2)

    Name、EngName。

    “Departments.*”表示我們要選取 Departments 中所有的欄位

    SELECT Departments.*, EmployeeID, Employees.Name,

    EngName

    FROM Departments INNER JOIN Employees

    ON Departments.DepartmentID = Employees.DepartmentID;;

    練習

    (參考課本 4.1.2)

    選取 Departments 中所有欄位及 Employees 中的 EmployeeID、

    Name、EngName,並且只要部門編號 10 的資料,且依員工的英文名

    字排列。

    “Departments.*”表示我們要選取 Departments 中所有的欄位

    SELECT Departments.*, EmployeeID, Employees.Name,

    EngName

    FROM Departments INNER JOIN Employees

    ON Departments.DepartmentID = Employees.DepartmentID

    WHERE Departments.DepartmentID = 10

    ORDER BY Employees.Name;

    SELECT D.*, EmployeeID, E.Name, EngName

    FROM Departments D INNER JOIN Employees E

    ON D.DepartmentID = E.DepartmentID

    WHERE D.DepartmentID = 10

    ORDER BY E.Name

    OUTER JOIN

    (參考課本 4.1.3)

    LEFT OUTER JOIN 關鍵字 - 左側外部結合

    LEFT OUTER JOIN 可以用來建立左外部結合

    查詢的 SQL 敘述句 LEFT JOIN 左側資料表 (table_name1) 的所有記

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 72

    錄都會加入到查詢結果中

    即使右側資料表 (table_name2) 中的連接欄位沒有符合的值也一樣

    LEFT JOIN 語法

    SELECT table_column1, table_column2···

    FROM table_name1

    LEFT OUTER JOIN table_name2

    ON table_name1.column_name=table_name2.column_name;

    練習

    (參考課本 4.1.3)

    使用 INNER JOIN 並不會列出部門編號 40 的資料

    SELECT D.*, EmployeeID, E.Name, EngName

    FROM Departments D INNER JOIN Employees E

    ON D.DepartmentID = E.DepartmentID;

    練習

    (參考課本 4.1.3)

    要取得各部門員工資料,即使該部門為新設而尚無部門員工

    SELECT D.*, EmployeeID, E.Name, EngName

    FROM Departments D LEFT OUTER JOIN Employees E

    ON D.DepartmentID = E.DepartmentID;

    CROSS JOIN

    (參考課本 4.1.4)

    CROSS JOIN 關鍵字 - 交叉結合

    交叉結合為兩個資料表間的笛卡兒乘積 (Cartesian product)

    兩個資料表在結合時,不指定任何條件,即將兩個資料表中所有的可

    能排列組合出來

    練習

    (參考課本 4.1.4)

    以下例而言 CROSS JOIN 出來的結果資料列數為 4×15=60 筆,因此,

    當有 WHERE、ON、USING 條件時不建議使用。

    SELECT *

    FROM Departments CROSS JOIN Employees;

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 73

    SELECT *

    FROM Departments, Employees;

    練習

    (參考課本 4.1.4)

    也可將其關聯條件併入 CROSS JOIN 的 WHERE 子句

    SELECT Orders.OrderID, Orders.OrderDate,

    OrderDetails.ProductID, Products.ProductName,

    OrderDetails.UnitPrice, OrderDetails.Quantity

    FROM Orders INNER JOIN OrderDetails

    ON Orders.OrderID = OrderDetails.OrderID

    INNER JOIN Products

    ON OrderDetails.ProductID = Products.ProductID

    WHERE (Orders.OrderID

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 74

    UNION 與 JOIN 不同的地方在於,Join 是作橫向結合(合併多個資料表

    的各欄位);而 UNION 則是作垂直結合(合併多個資料表中的紀錄)。

    練習

    (參考課本 4.3)

    查詢客戶的公司名稱號(CustomerID

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 75

    (參考課本 4.5) SELECT *

    FROM OrderDetails

    WHERE ProductID =

    (

    SELECT ProductID

    FROM Products

    WHERE ProductName = '牛奶'

    );

    Sub-Query (IN)

    (參考課本 4.5.1)

    (NOT) IN 運算子 (SQL (NOT) IN Operator)

    IN 搭配 WHERE 子句可以用來限定必需符合某些欄位值為條件來搜尋

    資料表中的特定資料。

    IN 內層不可使用 ORDER BY

    語法:

    SELECT table_column1, table_column2, table_column3···

    FROM table_name

    WHERE column_name

    IN (value1, value2, value3···);

    練習

    (參考課本 4.5.1)

    查詢訂單編號

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 76

    WHERE ProductName LIKE '%起司%'

    )

    ORDER BY ProductID;

    練習

    (參考課本 4.5.1)

    查詢訂單編號

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 77

    (參考課本 4.5.3) SELECT CustomerID, CompanyName

    FROM Customers

    WHERE EXISTS

    (

    SELECT *

    FROM Orders

    WHERE Orders.CustomerID = Customers.CustomerID

    AND (OrderDate BETWEEN '1996-07-01' AND '1996-07-15' )

    );

    練習

    (參考課本 4.5.3)

    查詢('1996-07-01' AND '1996-07-15')未曾下過訂單的客戶編號與名稱

    SELECT CustomerID, CompanyName

    FROM Customers

    WHERE NOT EXISTS

    (

    SELECT *

    FROM Orders

    WHERE Orders.CustomerID = Customers.CustomerID

    AND (OrderDate BETWEEN '1996-07-01' AND '1996-07-15' )

    );

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 78

    11 第十一週 (100 年 11 月 18 日)

    11.1 課程摘要

    課程摘要 11.2 資料庫之資料維護 (課本 5.1 ~ 5.5)

    點名

    注意事項

    教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN:

    9789866507564

    11.2 資料庫之資料維護 (課本 5.1 ~ 5.5) 參考課本: 第五章--資料庫之資料維護

    說明 指令

    資料操縱語言 (DML-Data Manipulation Language)

    用來處理資料表裡的資料,常見的指令有:

    INSERT 新增資料到資料表中

    UPDATE 更改資料表中的資料

    DELETE 刪除資料表中的資料

    INSERT INTO

    VALUES

    (參考課本 5.1)

    INSERT 是用來新增資料 (new row) 至資料表 (table)。

    INSERT INTO 敘述句 (SQL INSERT INTO Statement)

    使用 VALUES 子句: 指定資料欄位之各別數值

    INSERT INTO 語法:

    INSERT INTO table_name (column1, column2, column3,···)

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 79

    VALUES (value1, value2, value3,···);

    簡寫的語法: (每個欄位的值都必需要依序輸入)

    INSERT INTO table_name

    VALUES (value1, value2, value3,···);

    練習

    (參考課本 5.1.1)

    新增一筆資料到部門資料表

    部門編號: ‘50’, 名稱: ‘生產製造部’, 地點: ‘台中縣’

    INSERT INTO Departments(DepartmentID, Name, Location)

    VALUES(50, '生產製造部', '台中縣');

    查詢上述資料

    SELECT * FROM Departments

    練習

    (參考課本 5.1.1)

    錯誤 : 主鍵重覆 (Error Code: 1062 ; Duplicate entry '50' for key

    'PRIMARY')

    INSERT INTO Departments

    VALUES(50, '生產製造部', '台中縣');

    錯誤: 'Location' 欄位不能為空白值 NULL (Error Code: 1048 ; Column

    'Location' cannot be null)

    INSERT INTO Departments(DepartmentID, Name, Location)

    VALUES(60, '客戶服務部', NULL);

    顯示目前資料表

    的資訊

    mysql> describe departments;

    +--------------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +--------------+-------------+------+-----+---------+-------+

    | DepartmentID | smallint(6) | NO | PRI | 0 | |

    | Name | varchar(20) | NO | | | |

    | Location | varchar(20) | NO | | | |

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 80

    +--------------+-------------+------+-----+---------+-------+

    練習

    (參考課本 5.1.1)

    新增一筆資料到員工資料表 (註: 課本 p.188 無 Sex 欄位)

    INSERT INTO Employees(EmployeeID, DepartmentID, Name,

    SupervisorID, ReportsTo, EngName, BirthDate, Salary, Sex)

    VALUES(1016, 10, '張子強', 1013, 1013, 'John', '1970/01/12', 400000,

    'M');

    查詢上述資料

    SELECT * FROM Employees;

    顯示目前資料表

    的資訊

    mysql> describe Employees;

    看 Sex 欄位的條件限制

    INSERT ...

    SELECT

    (參考課本 5.1.2)

    一次新增多筆資料 - INSERT ... SELECT

    利用子查詢,從其它的資料表中取得資料來作一次多筆新增

    在子查詢中也可以利用 WHERE、GROUP BY 及 HAVING 等子句來

    作有條件的新增資料。

    INSERT INTO table_name (column1, column2, column3,···)

    SELECT othercolumn1, othercolumn2, othercolumn3,···

    FROM othertable_name

    WHERE condition

    GROUP BY column;

    練習

    (參考課本 5.1.2)

    建立’ ProductSales’資料表 (5.1.2 尚未教; 參考課本 6.3)

    CREATE TABLE ProductSales

    (

    ProductID INT NOT NULL,

    OrderDate Date NOT NULL,

    Quantity SMALLINT,

    Amount DOUBLE

    );

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 81

    統計各年各產品的銷量與金額

    INSERT INTO ProductSales(ProductID, OrderDate, Quantity, Amount)

    SELECT ProductID, A.OrderDate, SUM( D.Quantity ) AS Qty ,

    SUM( D.UnitPrice * D.Quantity ) AS Total

    FROM Orders A, OrderDetails D

    WHERE A.OrderID = D.OrderID

    GROUP BY ProductID, A.OrderDate;

    查詢上述資料

    SELECT * FROM ProductSales;

    UPDATE 敘述句

    (參考課本 5.2)

    要修改資料表中的資料我們就會需要用到 UPDATE。

    避免「全部」的資料都更改,須加 WHERE 條件式,這樣才會只更新特

    定某(幾)筆資料。

    UPDATE 語法

    UPDATE table_name

    SET column1=value1, column2=value2, column3=value3··

    WHERE column_name operator value;

    練習

    (參考課本 5.2)

    將員工編號 1014 的薪資調整 10%,並異動職稱為’ 資深行銷工程師’

    UPDATE Employees

    SET Salary = Salary * 1.10,

    Title = '資深行銷工程師'

    WHERE EmployeeID = 1014

    將員工編號 1014 的某個欄位設成 NULL

    UPDATE Employees

    SET ReportsTo = NULL

    WHERE EmployeeID = 1014

    練習

    查詢員工傭佣金 SELECT * FROM Employees;

    調整員工編號 1001 的佣金

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 82

    (參考課本 5.2) UPDATE Employees

    SET Commission = IFNULL(Commission, 0) +

    (

    SELECT SUM(B.UnitPrice * B.Quantity)*0.05

    FROM Orders A, OrderDetails B

    WHERE A.OrderID = B.OrderID

    AND EmployeeID = 1001

    AND Year(OrderDate) = 1998

    )

    WHERE EmployeeID = 1001

    練習

    (參考課本 5.2)

    查部門代號

    SELECT DepartmentID

    FROM Departments

    WHERE Name = '管理部';

    調整部門為’ 管理部’所有員工之薪資加為 10%

    UPDATE Employees

    SET Salary = Salary * 1.10

    WHERE DepartmentID IN

    (

    SELECT DepartmentID

    FROM Departments

    WHERE Name = '管理部'

    )

    類似同上的方法

    UPDATE Employees

    SET Salary = Salary * 1.10

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 83

    FROM Employees, Departments

    WHERE Employees.DepartmentID =

    Departments.DepartmentID

    AND Departments.Name = '管理部'

    DELETE FROM

    (參考課本 5.3)

    DELETE FROM 是用來刪除資料表中的資料。

    需加 WHERE 條件式!不然「全部」的資料都會被刪除。

    DELETE FROM 語法

    DELETE FROM table_name

    WHERE column_name operator value;

    練習

    (參考課本 5.3)

    刪除 ProductSales

    DELETE FROM ProductSales

    刪除客戶代號’ VINET’的訂單資料

    DELETE FROM OrderDetails

    WHERE OrderID IN

    (

    SELECT OrderID

    FROM Orders

    WHERE CustomerID = 'VINET'

    )

    練習

    (參考課本 5.3)

    刪除客戶名稱’ 東南實業’的訂單資料

    DELETE FROM Orders

    WHERE OrderID IN

    (

    SELECT OrderID

    FROM Orders, Customers

    WHERE Orders.CustomerID = Customers.CustomerID

    AND Customers.CompanyName = '東南實業'

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 84

    );

    TRUNCATE

    TABLE

    (參考課本 5.4)

    要清除一個表格中的所有資料。就是運用 TRUNCATE TABLE 的指

    令。在這個指令之下,表格中的資料會完全消失,可是表格本身會繼

    續存在。

    要達到者個目的,一種方式是我們在 上一頁看到 的 DROP TABLE

    指令。不過這樣整個表格就消失,而無法再被用了。

    TRUNCATE TABLE 的語法為下:

    TRUNCATE TABLE "表格名"

    所以,我們如果要清除在 SQL Create Table 那一頁建立的顧客表

    格之內的資料,我們就鍵入:

    TRUNCATE TABLE ProductSales

    練習

    (參考課本 5.5)

    INSERT INTO Departments(DepartmentID, Name,

    Location) VALUES(60, '測試部', NULL)

    INSERT INTO Departments(DepartmentID, Name,

    Location) VALUES(30, '測試部', '台中市')

    DELETE FROM Departments WHERE DepartmentID = 30

    UPDATE Departments

    SET DepartmentID = 60

    WHERE DepartmentID = 30

    INSERT INTO Departments(DepartmentID, Name,

    Location)

    SELECT 60, Name, Location

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 85

    FROM Departments

    WHERE DepartmentID=30

    UPDATE Employees

    SET DepartmentID = 60

    WHERE DepartmentID=30

    DELETE FROM Departments

    WHERE DepartmentID=30

  • 夜四資工二 A_資料庫導論_1001_上課教材_吳建衡 SECURITY: General

    Rev 1.0 / Page : 86

    12 第十二週 (100 年 11 月 25 日)

    12.1 課程摘要

    課程摘要 12.2 資料庫與資料表定義 (課本 6.1 ~ 6.3)

    點名

    注意事項

    教材 資料庫系統應用與設計 (2/e) / 張丁才 / 滄海書局 / ISBN:

    9789866507564

    12.2 資料庫與資料表定義 (課本 6.1 ~ 6.3)

    參考課本: 第六章--資料庫與資料表定義

    說明 指令

    資 料 庫 綱 要

    Database

    Schema

    定義:

    是指整個資料庫的描述,即描述整個資料庫儲存資料的定義資料。

    三層資料庫綱要

    外部綱要(External Schema):外部綱要源於概念綱要,主要是描

    述外部層顯示的資料,每一個外部層綱要只描述資料庫的部分資料,

    隱藏其它部分的資料。

    概念綱要(Conceptual Schema):概念綱要是描述概念層的完整資

    料庫,這是「概念資料庫設計」(Conceptual Database Design)的

    結果,概念資料庫設計主要是分析使用者資訊,以便定義所需的資料

    項目,並不涉及到�