資料庫實驗3 資料定義語言DDL

URNOTJANET發表於2017-12-13

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

相關文章