資料庫——一些復健(主要是約束和索引相關練習)

程序计算机人發表於2024-04-26

  重要的是練習,寫作業時寫的絮絮叨叨就忽略吧。

強化學習2

【練習9.1】在stusys資料庫中建立course1表,以列級完整性約束方式定義主鍵。

【練習9.2】在stusys資料庫中建立course2表,以表級完整性約束方式定義主鍵。

【練習9.3】在stusys資料庫中建立course3表,以表級完整性約束方式定義主鍵,並指定主鍵約束名稱。

【練習9.4】 刪除練習9.3建立的在course3表上的主鍵約束。

【練習9.5】重新在course3表上定義主鍵約束。

【練習9.6】在stusys資料庫中建立course4表,以列級完整性約束方式定義唯一性約束。

(這裡都寫錯了,要將unique設定成cname列,因為cid預設主鍵,沒法刪掉的)

【練習9.7】在stusys資料庫中建立course5表,以表級完整性約束方式定義唯一性約束。

(這裡都寫錯了,unique設定成cname列,因為cid預設主鍵,沒法刪掉的)

【練習9.8】

刪除練習9.7在course5表建立的唯一性約束。(這裡比較特殊,需要記憶)

【練習9.9】重新在course5表上定義唯一性約束。

【練習9.10】,建立score1表,在cno列以列級完整性約束方式定義外來鍵。

(寫的時候寫快了,要求是cno,但是我這裡寫的是cid,畢竟我是先寫強化學習2,所以建表的列名全是自己寫的,將cid替換成cno就行了,列級完整性約束方式定義外來鍵還是一樣的寫法,之後也可能會有類似的行為,)

【練習9.11】

建立score2表,在cno列以表級完整性約束方式定義外來鍵,並定義相應的參照動作。

【練習9.12】刪除練習9.11在score2表上定義的外來鍵約束。

【練習9.13】 重新在score2表上定義外來鍵約束。

【練習9.14】在stusys資料庫中建立表score3,在grade列以列級完整性約束方式定義檢查約束。

【練習9.15】在stusys資料庫中建立表score4,在grade列以表級完整性約束方式定義檢查約束。

【練習9.16】刪除練習9.15在score4表上定義的檢查約束。

【練習9.17】重新在score4表上定義檢查約束。

總結:如果是想要新增表級約束,那麼可以直接用constraint 約束名稱 約束條件。如果是想要刪掉/新增 約束,那麼可以使用alter table 表名 DROP/ADD …… ,如果是表級的新增,省略號那裡可以寫 constraint 約束名稱 約束條件,比如,alter table course3 add constraint pk_course3 primary key(id) , 表級的刪除,可以寫約束條件 約束名稱 ,比如,alter table score2 drop foreign key FK_score2;如果是列級的新增,省略號那裡可以把constraint 約束名稱。(上述情況unique除外)

ps:如果想要檢視約束,可以使用show create table 表名 這個命令。

強化學習1

【練習8.1】 在stusys資料庫中student表的sname列上,建立一個普通索引I_studentSname。

【練習8.2】 在stusys資料庫中course表的cno列上,建立一個索引I_courseCno,要求按課程號cno欄位值前2個字元降序排列。

【練習8.3】 在stusys資料庫中student表的tc列(降序)和sname列(升序),建立一個組合索引I_studentTcSname。

【練習8.4】在stusys資料庫teacher表的tname列,建立一個唯一性索引I_teacherTname,並按降序排列。

【練習8.5】在stusys資料庫中,建立新表score1表,主鍵為sno和cno,同時在grade列上建立普通索引。

【練習8.6】檢視練習8.5所建立的score1表的索引。

【練習8.7】刪除已建索引I_studentTcSname。

【練習8.8】刪除已建索引I_teacherTname。

相關文章