MySQL數據庫定義與操作語言


文章為作者原創,未經許可,禁止轉載。    -Sun Yat-sen University 馮興偉

實驗1.1 數據庫定義

1)實驗目的

理解和掌握數據庫DDL語言,能夠熟練地使用SQL DDL語句創建、修改和刪除數據庫、模式和基本表。

2)實驗內容和要求

理解和掌握SQL DDL語句的語法,特別是各種參數的具體含義和使用方法;使用SQL語句創建、修改和刪除數據庫、模式和基本表。掌握SQL語句常見語法錯誤的調試方法。

3)實驗重點和難點

實驗重點:創建數據庫、基本表。

實驗難點:創建基本表時,為不同的列選擇合適的數據類型,正確創建表級和列級完整性約束,如列值是否允許為空、主碼和外碼等。注意:數據完整性約束,可以在創建基本表時定義,也可以先創建表然后定義完整性約束;由於完整性約束的限制,被引用的表要先創建。

4)實驗過程

a.         創建名為university的數據庫:

b.         刪除名為university的數據庫:

c.         定義名為university的模式:

注:后續各個實驗項目基於當前創建的university數據庫

university數據庫模式由(課程專業表)course、(系表)department、(教師表)instructor、(課程安排表)section、(學生名單表)student、(學生選課表)takes和(教師上課表)teaches組成。

d.         在university 數據庫中創建上述各表,為不同的列選擇合適的數據類型以及做好表的完整性約束:

 

e.         在建立好各個表后,進行數據庫的刪除,插入和更新操作:

為不冗余復述,以department表為例,其余各表操作類似。

刪除操作:

 

插入操作:

 

更新數據后department的結果:

 

f.          同理對其余各表進行插入數據以及更新操作,為方便后續檢查,得到各表格結果如下:

instructor表:                                                     

 

course表:

 

section表:

 

teaches表:

 

student表:

takes表:

 

 

實驗1.2 數據基本查詢

1)實驗目的

掌握SQL程序設計基本規范,熟練運用SQL語言實現數據基本查詢,包括單表查詢、分組統計查詢和連接查詢。

2)實驗內容和要求

針對TPC-H數據庫設計各種單表查詢SQL語句、分組統計查詢語句;設計單個表針對自身的連接查詢,設計多個表的連接查詢。理解和掌握SQL查詢語句各個子句的特點和作用,按照SQL程序設計規范寫出具體的SQL查詢語句,並調試通過。

說明:簡單地說,SQL程序設計規范包含SQL關鍵字大寫、表名、屬性名、存儲過程名等標示符大小寫混合、SQL程序書寫縮進排列等編程規范。具體內容參見參考文獻3。

3)實驗重點和難點

實驗重點:分組統計查詢、單表自身連接查詢、多表連接查詢。

實驗難點:區分元組過濾條件和分組過濾條件;確定連接屬性,正確設計連接條件。

4)實驗過程

a.         單表查詢(實現投影操作)

查詢教師的編號,姓名和所在系。

 

查詢結果:

 

b.         單表查詢(實現選擇操作)

查詢所有在computer science系並且工資超過70000美元的教室的姓名。

 

查詢結果:

 

c.         不帶分組過濾條件的分組統計查詢

查詢找出每個系的平均工資。

 

查詢結果:

 

d.         帶分組過濾條件的分組統計查詢

查詢平均工資超過42000美元的系及其平均工資。

 

查詢結果:

 

e.         單表自身連接查詢

查詢工資至少比Biology系某個老師工資要高的所有老師姓名

 

查詢結果:

 

f.          兩表連接查詢

查詢大學中所有講授課程的教師的名字以及所講述的所有課程標識。

 

查詢結果:

 

g.         三表連接查詢

查詢教師的名字以及他們所講授課程的名稱。

 

查詢結果:

 

 

實驗1.3 數據高級查詢

1)實驗目的

掌握SQL嵌套查詢和集合查詢等各種高級查詢的設計方法等。

2)實驗內容和要求

針對TPC-H數據庫,正確分析用戶查詢要求,設計各種嵌套查詢和集合查詢。

3)實驗重點和難點

實驗重點:嵌套查詢。

實驗難點:相關子查詢、多層EXIST嵌套查詢。

4)實驗過程

a.         in 嵌套查詢

查詢2009年秋季和2010年春季學期同時開課的所有課程。

 

查詢結果:

 

b.         單層EXIST嵌套查詢

查詢2009年秋季和2010年春季學期同時開課的所有課程。

查詢結果:

 

c.         FROM子句中的嵌套查詢

查詢平均工資超過42000美元的系及其平均工資。

 

查詢結果:

 

d.         由於MySQL沒有交集和差集運算,只進行集合並集的查詢

查詢2009年秋季開課,或者2010年春季開課或兩個學期都開課的所有課程。

 

查詢結果:

 

 

實驗1.4 數據更新

1)實驗目的

熟悉數據庫的數據更新操作,能夠使用SQL語句對數據庫進行數據的插入、修改、刪除操作。

2)實驗內容和要求

針對TPC-H數據庫設計單元組插入、批量數據插入、修改數據和刪除數據等SQL語句。理解和掌握INSERT、UPDATE和DELETE語法結構的各個組成成分,結合嵌套SQL子查詢,分別設計幾種不同形式的插入、修改和刪除數據的語句,並調試成功。

3)實驗重點和難點

實驗重點:插入、修改和刪除數據的SQL。

實驗難點:與嵌套SQL子查詢相結合的插入、修改和刪除數據的SQL語句;利用一個表的數據來插入、修改和刪除另外一個表的數據。

4)實驗過程

a.         INSERT基本語句

student表中插入一條學生記錄。

 

插入結果:

 

b.         UPDATE語句

更新剛才插入的名字屬性值為我的名字拼音Feng Xingwei

更新結果:

 

c.         DELETE基本語句

刪除剛才插入和修改過的那條編號為11111的記錄。

 

刪除后結果:

 

 

實驗1.5 視圖

1)實驗目的

熟悉SQL語言有關視圖的操作,能夠熟練使用SQL語句來創建需要的視圖,定義數據庫外模式,並能使用所創建的視圖實現數據管理。

2)實驗內容和要求

針對給定的數據庫模式,以及相應的應用需求,創建視圖、創建帶WITH CHECK OPTION的視圖,並驗證視圖WITH CHECK OPTION選項的有效性。理解和掌握視圖消解執行原理,掌握可更新視圖和不可更新視圖的區別。

3)實驗重點和難點

實驗重點:創建視圖。

實驗難點:可更新的視圖和不可更新的視圖之區別, WITH CHECK OPTION的驗證。

4)實驗過程

a.         創建視圖

創建一個視圖history_instructors,用於列出所有教師中那些歸屬為歷史系的教師信息

 

b.         使用視圖進行操作

 

操作結果:

 

c.         不帶WITH CHECK OPTION對視圖進行更新操作

 

操作結果:

 

結論:所以不加WITH CHECK OPTION時可以更新

刪除剛才加進來的記錄。

 

d.         帶WITH CHECK OPTION對視圖進行更新操作

刪除之前創建的不帶WITH CHECK OPTION的history_instructors視圖,重新創建帶WITH CHECK OPTION的同名視圖,並進行插入操作,代碼如下。

 

實驗結果:

 

插入操作不被允許,原因在於系名為Comp.Sci而不是History所以不允許更新,因此WITH CHECK OPTION得到驗證。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM