數據庫實驗3數據定義語言DDL

NO IMAGE

2017-3-21

實驗目的
1.熟悉SQL語言中DDL的功能;
2.熟悉並掌握數據庫中各種完整性約束條件的作用和使用方法;
3.觀察和了解數據定義時數據字典的變化。

實驗環境
軟件:OS:Windows7 DBMS:SQL Server 2008 Compiler:SQL Server Management Studio

實驗用時:一次上機
實驗要求
1.瞭解和使用SQL數據定義語言進行數據庫、用戶表和索引的建立、刪除和修改操作;
2.在實驗的過程中,觀察系統表的變化,並結合系統表分析、總結DDL的處理流程;
3.掌握創建完整性約束的方法,通過“步驟三”中的操作,理解各個約束的作用;
4.熟悉索引的創建、刪除方法,並掌握並區分各類索引的異同點;
5.記錄實驗過程,並對各活動(包括錯誤活動)作分析說明。

二.實驗情況截圖
1.創建數據庫school,建立數據表
SQL語句:
CREATE DATABASE school CREATE TABLE Student ( Sno varchar(5) NOT NULL PRIMARY KEY, SName varchar(10), Sex varchar(2), Sbirth smalldatetime, Sdept varchar(20), parent varchar(20) )

CREATE TABLE Course ( Cno varchar(3) NOT NULL PRIMARY KEY, CName varchar(20), Cpno varchar(3), Credit Decimal(3,1) )

CREATE TABLE Teacher ( Tno varchar(4) NOT NULL PRIMARY KEY, Tname varchar(10), Tsex char(2), Tphone varchar(12), Tdept varchar(20), Taddr varchar(30), Tprof varchar(10), Tpay Decimal(10,2) )

CREATE TABLE SCT ( ID INT IDENTITY (1,1) NOT NULL PRIMARY KEY, Sno varchar(5) NOT NULL, Cno varchar(3) NOT NULL, Tno varchar(4) NOT NULL, Grade Decimal(5,1) )
2.創建數據表,同時在指定列上創建“主鍵”和“NULL/NOT NULL”完整性約束。
3.為上述各表添加指定的完整性約束。
(1)實體完整性
ALTER TABLE Course ADD CONSTRAINT name UNIQUE ( CName )

(2)域完整性
ALTER TABLE Teacher ADD CONSTRAINT sex DEFAULT '男' FOR Tsex
ALTER TABLE SCT ADD CONSTRAINT grade CHECK ( 0<= Grade <=100 )

(3)參照完整性
ALTER TABLE SCT ADD CONSTRAINT SSno FOREIGN KEY ( Sno ) REFERENCES Student ( Sno ) ALTER TABLE SCT ADD CONSTRAINT Scno FOREIGN KEY ( Cno ) REFERENCES Course ( Cno ) ALTER TABLE SCT ADD CONSTRAINT Stno FOREIGN KEY ( Tno ) REFERENCES Teacher ( Tno )

通過圖形界面做以下操作,實驗是否能成功並思考結果產生的原因:
1)在學生信息表中添加一名學號暫未分配(即學號為NULL)的學生。
結果失敗,原因應該是,學生的學號作為PRIMARY KEY,不能置空,所以在建立一個成員信息的時候不允許空學號的情況出現。

2)在學生信息表中添加兩名學號完全相同的學生。
結果出錯:學號是UNIQUE的,為保證唯一性,不允許重複的學號

3)在教師信息表中插入一名不指定性別的教師。
結果:性別自動默認成‘男’
分析:在設置的時候對Teacher表屬性列Tsex設置默認值為‘男’。

4)將課程信息表中的一個課程的課程號改為6位數。
結果出錯:課程表的課程號允許的最大長度是3位,改成6位數是違反規則的

5)在學生選課表中插入一條對應學號在學生信息表中不存在的選課信息。
結果出錯:課程信息無法訪問,不能建立外鍵

6)在學生選課表中正確插入一條記錄後,在課程信息表中刪除對應的課程。
結果失敗:要刪除的列已經建立外鍵,不允許被刪除(默認為DISTRICT)

7.刪除SCT的一條記錄,插入下一條記錄時複用這條被刪除記錄的ID。
結果失敗:無法對ID進行任何修改

8.修改學生選課表一條記錄的成績為150。
結果失敗:對SCT設置Grade要求範圍是 0<=grade<=100,150>100

4.查看錶關係圖。

5.索引的建立與刪除。
1)新建表test;
2)在表test中插入數據(通過圖形化界面方式完成);
3)在屬性列“Name”上建唯一索引,看能否成功,並分析原因。

結果失敗:因為定義一個主鍵或是定義約束會導致索引被創建,所以必須在約束定義時就給出必要的索引信息,上面ALTER TABLE語句中默認包含了”CLUSTERED”關鍵字,所以test表中不能含有與建立index相同的名字
如果唯一索引或約束所約束的列在當前的表中已經含有了重複值,那麼創建索引會失敗。
4)首先在屬性列“ID”建聚簇索引,然後在屬性列“Age”上再次建聚簇索引,
看能否成功,並分析原因。如果在列“Age”上建的是非聚簇索引呢?
在Age中建立CLUSTERED失敗,建立NONCLUSTERED成功。
分析:CLUSTERED在一個基本表中只允許出現一次,但是NONCLUSTERED沒有限制

刪除索引
6.刪除表和數據庫。
1)刪除表Course;
2)刪除school數據庫。

7.關係數據庫中的簡單查詢
要求:(1)請寫出1-5使用關係代數查詢得出的結果,使用SQL語句查詢得出的結果截圖,並對這兩種結果進行比較。
(2)記錄實驗過程中用到的所有SQL語句(包括創建數據庫、創建表、插入數據等)
難度:自己設計每個表中各個參數的類型、主鍵等。
設有一個SPJ數據庫,包括S,P,J,SPJ四個關係模式
各個關係結構如下:(可參考第二章課後習題5的題幹)

供應商表 S
SNO SNAME STATUS CITY 備註
S1 精益 20 天津
S2 盛錫 10 北京
S3 東方紅 30 北京
S4 豐泰盛 20 天津
S5 為民 30 上海

零件表 P
PNO PNAME COLOR WEIGHT 備註
P1 螺母 紅 12
P2 螺栓 綠 17
P3 螺絲刀 藍 14
P4 螺絲刀 紅 14
P5 凸輪 藍 40
P6 齒輪 紅 30

工程項目表 J
JNO JNAME CITY 備註
J1 三建 北京
J2 一汽 長春
J3 彈簧廠 天津
J4 造船廠 天津
J5 機車廠 唐山
J6 無線電廠 常州
J7 半導體廠 南京

供應情況表 SPJ
SNO PNO JNO QTY 備註
S1 P1 J1 200
S1 P1 J3 100
S1 P1 J4 700
S1 P2 J2 100
S2 P3 J1 400
S2 P3 J2 200
S2 P3 J4 500
S2 P3 J5 500
S2 P5 J1 400
S2 P5 J2 100
S3 P1 J1 200
S3 P3 J1 200
S4 P5 J1 100
S4 P6 J3 300
S4 P6 J4 200
S5 P2 J4 100
S5 P3 J1 200
S5 P6 J2 200
S5 P6 J4 500

相關文章

數據庫實驗1初識DBMS,掌握DBMS常用工具

數據庫實驗4:JDBC&ODBC

C++期末大作業圖書評論和推薦系統

C++課大作業魔獸世界Part2