一、實驗目的:
1、掌握資料庫約束的概念;
2、熟悉sql server 的完整性約束技術。
3、了解sql server 的違反完整性處理措施。
二、實驗準備
1、了解資料庫完整性約束的基本概述
2、了解sql server完整性約束技術。 包括實體完整性、參照完整性、使用者定義完整性等。
3、了解主鍵(primary key)約束
4、了解外來鍵(foreign key)約束
5、了解唯一性(unique)約束
6、了解檢查(check)約束
7、了解default 約束
8、了解允許空值約束
9、了解觸發器的使用
二、實驗內容:
1.在前幾次實驗所使用的資料庫中新建乙個教師資訊表,表名為teacher,字段包括tno(教師編號),tname(姓名),t***(性別),ttitle(職稱),完整性包括:設定tno為主鍵,tname非空,t***的取值範圍為「男」或「女」。
create
table teacher
(tno char
(9)primary
key,
tname char
(20)
notnull,
t*** char
(2)check
(t*** in
('男'
,'女'
)),
ttitle char
(10), );
2. 用insert語句插入如下記錄,觀察實驗結果:
insert into teacher values('2016001','王明','男','講師')
insert into teacher values('2016001','王英','女','助教')
insert into teacher values('2016002','張方','a','講師')
級別14,狀態1,第2 行
違反了primary key 約束'pk__teacher__0ad2a005'。不能在物件'dbo.teacher' 中插入重複鍵。
語句已終止。
級別16,狀態0,第3 行
insert 語句與check 約束"ck__teacher__t***__0bc6c43e"衝突。該衝突發生於資料庫"sql",表"dbo.teacher", column 't***'。
語句已終止。
3.對teacher表增加乙個約束,ttitle屬性的取值範圍為('助教','講師','副教授','教授'),並插入一條記錄:
insert into teacher values('2016003','劉陽','男','研究員'),觀察實驗結果。
insert 語句與 check 約束"ck__teacher__ttitle__108b795b"衝突。該衝突發生於資料庫"sql",表"dbo.teacher", column 'ttitle'。
語句已終止。
4.為學生表student增加乙個約束,s***的取值範圍為「男」或「女」。
create
table student
(sno char
(9)primary
key,
sname char
(20)
unique,
s*** char
(2)check
(s*** in
('男'
,'女'
)),
sage smallint,
sdept char
(20) );
5.為選課表sc增加乙個約束,grade的取值在0至100之間。
create
table sc
(sno char
(9),
cno char
(4),
grade smallint
check
(grade>=0 and grade<=100),
primary
key(sno,cno))
資料庫(實驗2 資料庫表)
建立資料庫 建立資料庫資料檔案 create database testbase2 on name testbase2 data,filename d 張小山資料庫 lianxi2 testbase2 data.mdf size 5mb,maxsize 50mb,filegrowth 20 建立資料...
資料庫實驗2
1.dbms 登入帳號管理 create login sqluser with password pswdforuser 1 create login sqluser2 with password pswdforuser 123 create login uselessuser with passw...
資料庫索引實驗
上週客戶的系統有乙個網頁反應超級緩慢,最後幫客戶定位到原因是sql慢查詢,在這兒簡單總結一下。當資料庫中的資料量非常大的時候,資料庫訪問的速度會越來越慢,cpu和記憶體消耗變大,影響使用者體驗,可以通過建立索引來解決。我做了乙個實驗驗證了一下,效果非常明顯。首先建立了乙個資料表,通過指令碼插入了14...