第一篇:數(shù)據(jù)庫上機(jī)實(shí)驗(yàn)8實(shí)驗(yàn)報(bào)告
上機(jī)實(shí)驗(yàn)八——完整性約束的實(shí)現(xiàn)
一、實(shí)習(xí)目的:
掌握SQL中實(shí)現(xiàn)數(shù)據(jù)完整性的方法,加深理解關(guān)系數(shù)據(jù)模型的三類完整性約束。
二、實(shí)習(xí)準(zhǔn)備:
1.復(fù)習(xí)“完整性約束SQL定義”
2.完成習(xí)題四第10題中的各項(xiàng)操作的SQL語句。
3.了解SQL Server 中實(shí)體完整性、參照完整性和用戶自定義完整性的實(shí)現(xiàn)手段
三、實(shí)習(xí)內(nèi)容:
1.驗(yàn)證習(xí)題四第10題四個(gè)表結(jié)構(gòu)的SQL語句。
表一:Sstudent CREATE TABLE Sstudent(Sno char(7)NOT NULL PRIMARY KEY, Sname VarChar(20)NOT NULL, Ssex Char(2)NOT NULL DEFAULT('男')check(Ssex IN('男','女')), Sage smallint check(Sage >14 AND Sage<65), Clno Char(5)NOT NULL REFERENCES Cclass(Clno)ON UPDATE CASCADE);
表二:Ccourse CREATE TABLE Ccourse(Cno Char(1)NOT NULL PRIMARY KEY, Cname VarChar(20)NOT NULL, Credit Smallint CHECK(Credit IN(1,2,3,4,5,6)));
表三:Cclass CREATE TABLE Cclass(Clno Char(5)NOT NULL PRIMARY KEY, Speciality VarChar(20)NOT NULL, Inyear Char(4)NOT NULL, Number Integer CHECK(Number>1 AND Number<100), Mointor Char(7)REFERENCES Student(Sno));
表四:Ggrade CREATE TABLE Ggrade(Sno Char(7)NOT NULL REFERENCES Student(Sno)ON DELETE CASCADE ON UPDATE CASCADE, Cno Char(1)NOT NULL REFERENCES Course(Cno)ON DELETE CASCADE ON UPDATE CASCADE, Gmark Numeric(4,1)CHECK(Gmark>0 AND Gmark<100), PRIMARY KEY(Sno,Cno));
2.SQL Server中提供了那些方法實(shí)現(xiàn)實(shí)體完整性、參照完整體和用戶自定義完整性
答:實(shí)體完整性:是通過主碼的定義(PRIMARY KEY)來實(shí)現(xiàn)的;
參照完整性:是利用外部碼(REFERENCES)的說明,以限制相關(guān)表中某些屬性的取值,當(dāng)用戶違反規(guī)則時(shí),提供三種:RESTRICT(限制策略),CASCADE(級聯(lián)策略),SET NULL(置空策略);
用戶自定義完整性:check約束,對元組的CHECK約束
第二篇:數(shù)據(jù)庫上機(jī)實(shí)驗(yàn)報(bào)告
蘭州理工大學(xué)
學(xué)生上機(jī)報(bào)告
學(xué)院計(jì)算機(jī)與通信學(xué)院課程名稱數(shù)據(jù)庫原理
學(xué)生姓名侯予南學(xué)號(hào)05550204
專業(yè)班級基地班05級1班
上機(jī)日期2008年4月17日
指導(dǎo)教師李明
上機(jī)實(shí)驗(yàn)報(bào)告
(一)實(shí)驗(yàn)內(nèi)容:
1、熟悉SQL Server 2000應(yīng)用環(huán)境;
熟悉查詢分析器的使用方法;
2、運(yùn)行課堂示例:建立表Teacher , Course ;
進(jìn)行數(shù)據(jù)插入、查詢、更新、建立視圖、創(chuàng)建觸發(fā)器等操作;
3、完成作業(yè)(P108 第5題,P145第5題);
4、完成實(shí)驗(yàn)報(bào)告。
實(shí)驗(yàn)環(huán)境:
數(shù)據(jù)庫系統(tǒng):SQL Server 2000
實(shí)驗(yàn)過程:
在實(shí)驗(yàn)中發(fā)現(xiàn)的問題:
小結(jié):
教師評語:
成績:
第三篇:數(shù)據(jù)庫上機(jī)實(shí)驗(yàn)報(bào)告
數(shù)據(jù)庫上機(jī)實(shí)驗(yàn)報(bào)告
試驗(yàn)內(nèi)容
1、數(shù)據(jù)表的建立
基本表《簡單的》帶有主鍵
帶有外碼約束的(外碼來自其他表或者本表)
2、數(shù)據(jù)表的修改
添加刪除列
修改列屬性類型
添加刪除約束(約束名)
元組的添加,修改,刪除
刪除數(shù)據(jù)表
試驗(yàn)過程
1、create
table
student
(sno
char(9)
primary
key,/*sno是主碼
列級完整性約束條件*/
sname
char(20)
unique,/*sname取唯一值*/
ssex
char(2),sage
smallint,/*類型為smallint*/
sdept
char(20)
/*所在系*/);
create
table
course
(cno
char(4)
primary
key,/*列級完整性約束條件,cno是主碼*/
cname
char(40),cpno
char(4),/*cpno的含義是先行課*/
ccredit
smallint,foreign
key
(cpno)
references
course(cno)
/*表級完整性約束條件,cpno是外碼,被參照表是course,被參照列是cno*/);
create
table
sc
(sno
char(9),cno
char(4),grade
smallint,primary
key
(sno,cno),/*主碼有兩個(gè)屬性構(gòu)成,必須作為表級完整性進(jìn)行定義*/
foreign
key
(sno)
references
student(sno),/*表級完整性約束條件,sno是外碼,被參照表是student*/
foreign
key
(cno)
references
course(cno),/*表級完整性約束條件,cno是外碼,被參照表示course*/);
例
1、create
table
s
(cno
varchar(3),/*變長的字符串,輸入2個(gè)字符就是兩個(gè)字符不會(huì)補(bǔ)空格*/
sname
varchar(20),status
int,city
varchar(20),constraint
pk_sno
primary
key(sno),/*約束條件的名字為pk_sno*/);
create
table
p
(pno
varchar(3),pname
varchar(20),color
varchar(3),weight
int,constraint
pk_pno
primary
key
(pno),/*約束條件的名字是pk_pno*/);
create
table
j
(jno
varchar(3),jname
varchar(20),city
varchar(20),constraint
pk_jno
primary
key(jno)
/*約束條件的名字為pk_jno*/);
例
2、create
table
spj
(sno
varchar(3),/*第一個(gè)表中的主碼*/
pno
varchar(3),jno
varchar(3),qty
int,/*數(shù)量*/
constraint
pk_spj
primary
key(sno,pno,jno),/*主碼由3個(gè)屬性組成*/
foreign
key(sno)
references
s(sno),/*表級完整性約束條件,sno是外碼,被參照表是s*/
foreign
key(pno)
references
p(pno),/*表級完整性約束條件,pno是外碼,被參照表是p*/
foreign
key(jno)
references
j(jno),
第四篇:數(shù)據(jù)庫上機(jī)實(shí)驗(yàn)報(bào)告
數(shù)據(jù)庫上機(jī)實(shí)驗(yàn)報(bào)告
試驗(yàn)內(nèi)容
1、數(shù)據(jù)表的建立
基本表《簡單的》帶有主鍵
帶有外碼約束的(外碼來自其他表或者本表)
2、數(shù)據(jù)表的修改
添加刪除列
修改列屬性類型
添加刪除約束(約束名)
元組的添加,修改,刪除
刪除數(shù)據(jù)表
試驗(yàn)過程
1、createtablestudent
(snochar(9)primarykey,/*sno是主碼列級完整性約束條件*/
snamechar(20)unique,/*sname取唯一值*/
ssexchar(2),sagesmallint,/*類型為smallint*/
sdeptchar(20)/*所在系*/);
createtablecourse
(cnochar(4)primarykey,/*列級完整性約束條件,cno是主碼*/
cnamechar(40),cpnochar(4),/*cpno的含義是先行課*/
ccreditsmallint,foreignkey(cpno)referencescourse(cno)
/*表級完整性約束條件,cpno是外碼,被參照表是course,被參照列是cno*/);
createtablesc
(snochar(9),cnochar(4),gradesmallint,primarykey(sno,cno),/*主碼有兩個(gè)屬性構(gòu)成,必須作為表級完整性進(jìn)行定義*/
foreignkey(sno)referencesstudent(sno),/*表級完整性約束條件,sno是外碼,被參照表是student*/
foreignkey(cno)referencescourse(cno),/*表級完整性約束條件,cno是外碼,被參照表示course*/);
例
1、createtables
(cnovarchar(3),/*變長的字符串,輸入2個(gè)字符就是兩個(gè)字符不會(huì)補(bǔ)空格*/
snamevarchar(20),statusint,cityvarchar(20),constraintpk_snoprimarykey(sno),/*約束條件的名字為pk_sno*/);
createtablep
(pnovarchar(3),pnamevarchar(20),colorvarchar(3),weightint,constraintpk_pnoprimarykey(pno),/*約束條件的名字是pk_pno*/);
createtablej
(jnovarchar(3),jnamevarchar(20),cityvarchar(20),constraintpk_jnoprimarykey(jno)/*約束條件的名字為pk_jno*/);
例
2、createtablespj
(snovarchar(3),/*第一個(gè)表中的主碼*/
pnovarchar(3),jnovarchar(3),qtyint,/*數(shù)量*/
constraintpk_spjprimarykey(sno,pno,jno),/*主碼由3個(gè)屬性組成*/
foreignkey(sno)referencess(sno),/*表級完整性約束條件,sno是外碼,被參照表是s*/
foreignkey(pno)referencesp(pno),/*表級完整性約束條件,pno是外碼,被參照表是p*/
foreignkey(jno)referencesj(jno),/*表級完整性約束條件,jno是外碼,被參照表是j*/);
2、數(shù)據(jù)表的更改
在s表中添加一個(gè)concat列
altertablesaddconcatvarchar(20)
在s表中刪除concat列
altertablesdropcolumnconcat
更改s表concat列的屬性把長度由20改為30
altertablesaltercolumnconcatvarchar(30)
聯(lián)系方式名字為concat修改屬性為唯一的屬性名為con_concat
altertablesaddconstraintcon_concatunique(concat)
刪除約束關(guān)系con_concat
altertablesdropconstraintcon_concat
/*插入一個(gè)元組*/
insertintosvalus(‘s1’,’精益’,20,’天津’)/*20不能寫成’20’*/
試驗(yàn)中的問題的排除與總結(jié):
1、在創(chuàng)建spj時(shí)
有三個(gè)實(shí)體所以從3個(gè)實(shí)體中取主碼,還有一個(gè)數(shù)量屬性也要寫上
主碼由那3個(gè)主碼確定
2、更改一個(gè)數(shù)據(jù)庫中數(shù)據(jù)表時(shí)一定要先使該數(shù)據(jù)庫處于正在使用狀態(tài)
3、constraint
是可選關(guān)鍵字,表示primarykey、notnull、unique、foreignkey或check約束定義的開始。約束是特殊屬性,用于強(qiáng)制數(shù)據(jù)完整性并可以為表及其列創(chuàng)建索引。
4、--go可以不加但是要注意順序注:go--注釋提示錯(cuò)誤
5、注意添加一個(gè)空元素用null
附sql備份
--創(chuàng)建一個(gè)數(shù)據(jù)庫student
createdatabasestudent
go
--在數(shù)據(jù)庫student中創(chuàng)建表studentcoursesc注意順序
usestudent
--
createtablestudent
(snochar(9)primarykey,/*sno是主碼列級完整性約束條件*/
snamechar(10)unique,/*sname取唯一值*/
ssexchar(2),sagesmallint,/*類型為smallint*/
sdeptchar(20)/*所在系*/);/*;要加*/
-----------
第五篇:地質(zhì)數(shù)據(jù)庫上機(jī)實(shí)驗(yàn)報(bào)告
《地質(zhì)數(shù)據(jù)庫設(shè)計(jì)與應(yīng)用》上機(jī)實(shí)習(xí)報(bào)告
班級:姓名:學(xué)號(hào):成績:
五、實(shí)習(xí)中存在的主要問題
一、實(shí)習(xí)名稱
二、實(shí)習(xí)目的三、實(shí)習(xí)內(nèi)容
四、實(shí)習(xí)主要操作步驟(或所用主要命令、函數(shù)操作方法)