教材: 王珊薩師煊《數據庫系統概論》
platform:MySQL2012
實驗一:熟悉MySQL的開發環境 PS: 這個就略過了
實驗二 SQL 的數據定義(表和索引)
一、實驗目的:
1. 會使用界面工具和命令兩種方法定義、修改、撤消基本表。
2. 會使用界面工具和命令兩種方法定義、撤消基本表的索引。
3. 進一步學會使用界面工具插入、修改、刪除數據。
二、實驗準備及任務
1.複習SQL語言中數據定義的相關命令。
2.根據實驗樣例數據庫的要求預先寫好相應的命令(完整性約束可不定義,留待實驗三完成)。
(1)使用命令完成附錄中實驗樣例數據庫四張表的數據定義:學生表Student、課程表Course、班級表Class、成績表 Cj。四張表結構詳見附錄一。
(2)使用界面工具,在實驗樣例數據庫中的Student表中添加一個新字段:Birthday,其數據類型爲日期型;使用命令爲Student表再添加另一個新字段:Class,其數據類型爲字符型,寬度爲5,並檢查結果。
(3)使用界面工具和命令,將實驗樣例數據庫中的Student表中Class字段寬度改爲10。最後,在該表中刪除Class和Birthday兩個字段,並檢查結果。
(4) 先將實驗樣例數據庫另外在磁盤上做一個備份,然後使用界面工具,將撤消基本表Student表的定義,使用命令撤消基本表Class的定義。
(5)使用數據庫附加功能,重新使用先前備份的實驗樣例數據庫,然後使用界面工具進行插入、修改、刪除數據的操作,將實驗樣例數據庫中的四張表分別填滿數據,爲後面實驗做準備,數據詳見附錄二。
(6)使用界面工具,爲實驗樣例數據庫中的Student表按學號升序建唯一索引。
(7)使用命令,爲Course表按課程號升序建唯一索引,爲CJ表按學號升序和課程號降序建唯一索引,爲CJ表按成績降序建聚簇索引。
(8)使用命令,刪除建立的相關索引。
code:
/*幾點說明
1.書本上代碼大部分是大寫,但SQL不區分大小寫所以爲了代碼簡潔明瞭這一系列都採用了小寫
2.實際代碼在實驗中沒保存下來,而我又沒學到如何調用日誌文件ORZ所以以下代碼沒實際運行,可以作爲參考*/
create table student
(
Sno char(7) primary key,
Sname char(10) not null,
Ssex char(2),
constaint c1 check(Ssex in '男' or '女'),
Sage Smallint,
constaint c2 check(Sage between 14 and 65),
clno char(5) not null,
)
create table Course
(
Cno char(1) primary key,
Cname char(20) unique,
Credit Smallint
constraint c3 check(Credit between 1 and 6),
)
create table Class
(
clno char(5) primary key,
Speciality char(20) not null,
Number Smallint
constraint c4 check(Number between 1 and 60),
Monitor char(7),
)
create table cj
(
Sno char(7),
Cno char(1),
Grade decimal(4,1)
constaint c5 check(Grade between 1 and 100),
primary key(Sno, Cno),
foreign key(Sno) references Student(Sno)
on delete cascade
on update cascade,
foreign key(Cno) references Course(Cno)
on delete cascade
on update cascade,
)
/*問題二*/
alter table Student add Class char(5)
/*問題七*/
create unique index Course on Course(Cno),
create unqiue index SCno on cj(Sno asc, Cno desc),
以上code實際解決了實驗二和實驗三的完整性約束,實驗三具體操作步驟不列出僅將題目給出
實驗三SQL 的完整性約束定義
一、實驗目的:
1. 掌握關係數據庫的三類完整性約束定義,並領會其作用。
2. 會使用界面工具定義實體完整性、參照完整性和用戶自定義完整性。
3. 掌握使用命令定義實體完整性、參照完整性和用戶自定義完整性。
二、實驗準備及任務
1.複習教材第五章完整性約束定義的相關內容。
2.根據下面要求完成實驗樣例數據庫中提到的完整性約束定義。
(1)使用create table命令定義學生表Student,同時定義該表的主碼(實體完整性)、性別取值爲男或女、年齡取值爲大於14,小於65(用戶自定義完整性。);使用create table命令定義課程表Course,同時定義該表的相關完整性約束,約束詳見附錄一。
(2)使用界面工具,在實驗樣例數據庫中的定義班級表Class和該表的實體完整性、參照完整性和用戶自定義完整性,約束詳見附錄一。
(3)使用alter table命令定義學生表Student的clno爲外碼,同時指定其違約處理方式爲刪除級聯和更新級聯,約束詳見附錄一。
(4)將班級表Class的Credit的check約束改爲其在1、2、3、4之一取值。
(5)使用命令,完成成績表 Cj的定義和相關完整性約束,詳見附錄一。
(6)使用界面工具,按附錄二進行插入、修改、刪除數據,驗證完整性
約束的效果。至少各有一種情況分別違背了三類完整性約束(如在 Cj中把‘2001102’同學的‘6’號課程的成績由83分改爲150分),並記錄。
還有幾個實驗做完就等待期末考試了,最後還有個數據庫開發實訓爲期兩週,不知道幹什麼的到時候一起上傳上來
紀念第一篇技術文檔fighting