第一篇:數(shù)據(jù)庫課程上機(jī)實(shí)驗(yàn)報(bào)告模版
《數(shù)據(jù)庫原理與設(shè)計(jì)》實(shí)驗(yàn)報(bào)告(實(shí)驗(yàn)名稱 :)
專業(yè)班級學(xué)號學(xué)生姓名任課教師朱焱老師輔導(dǎo)教師楊方蓉、梁懿
年月日
一、實(shí)驗(yàn)?zāi)康谋敬螌?shí)驗(yàn)所涉及并要求掌握的知識點(diǎn)。根據(jù)老師實(shí)驗(yàn)前的講授自行撰寫。(小四號字,宋體)
二、實(shí)驗(yàn)環(huán)境
本次實(shí)驗(yàn)所使用的系統(tǒng)平臺和相關(guān)軟件。(小四號字,宋體)
三、實(shí)驗(yàn)內(nèi)容:
本次實(shí)驗(yàn)的內(nèi)容描述及相關(guān)題目
四、程序源碼與運(yùn)行結(jié)果
按照實(shí)驗(yàn)內(nèi)容編寫的代碼與結(jié)果顯示(五號字,宋體),重復(fù)的SQL語句只寫一次。
五、實(shí)驗(yàn)總結(jié)
(小四號字,宋體).實(shí)驗(yàn)中遇到的問題、原因分析及解決方法.實(shí)驗(yàn)體會和收獲。
第二篇:數(shù)據(jù)庫課程上機(jī)實(shí)驗(yàn)報(bào)告
一、實(shí)驗(yàn)?zāi)康耐ㄟ^用SQL語句對數(shù)據(jù)進(jìn)行完整性控制,了解掌握提供定義完整性約束條件的機(jī)制、提供完整性檢查的方法以及違約處理
二、實(shí)驗(yàn)環(huán)境
WINDOWS XP 和 SQLServer200
5三、實(shí)驗(yàn)內(nèi)容:
參照完整性定義
參照完整性檢查和違約處理
屬性上的約束條件的定義(1.不允許去控空值 2.劣質(zhì)唯一 3.用CHECK短語指定列值應(yīng)該滿足的條件)
屬性上的約束條件檢查和違約處理
元祖上的約束條件的定義
完整性約束命名子句
修改表中的完整性限制
定義觸發(fā)器
激活觸發(fā)器
四、程序源碼與運(yùn)行結(jié)果
一、定義SC中的參照完整性。
CREATE TABLE SC
(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno));
二、顯式說明參照完整性的違約處理示例。
CREATE TABLE SC
(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno)
ON DELETE CASCADE
ON UPDATE CASCADE
FOREIGN KEY(Cno)REFERENCES Course(Cno)
ON DELETE NO ACTION
ON UPDATE CASCADE);
三、在定義SC表時(shí),說明Sno,Cno,Grade屬性不允許取空值。
CREATE TABLE SC
(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT NOT NULL,PRIMARY KEY(Sno,Cno),四、建立部門表 DEPT,要求部門名稱 Dname列取值唯一,部門編號Deptno列為主碼。(列值唯一)
CREATE TABLE DEPT
(Deptno NUMERIC(2),Dname CHAR(9)UNIQUE,Location CHAR(10),PRIMARY KEY(Deptno)
五、Student表中Ssex只允許“男”或“女”。(用 CHECK 短語指定列值應(yīng)該滿足的條件)CREATE TABLE Student
(Sno CHAR(9)PRIMARY KEY,Sname CHAR(8)NOT NULL,Ssex CHAR(2)CHECK(Ssex IN(?男?,?女?)),Sage SMALLINT,Sdept CHAR(20)
六、當(dāng)學(xué)生的性別是男時(shí),其名字不能以 MS.打頭。(元組上的約束條件的定義)CREATE TABLE Student
(Sno CHAR(9),Sname CHAR(8)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno),CHECK(Ssex=?女? OR Sname NOT LIKE ? MS.% ?));
七、完整性約束命名子句
CONSTRAINT <完整性約束條件名> [PRIMARY KEY 短語ㄧCHECK 短語]
例1:建立學(xué)生登記表Student,要求學(xué)號在90000-99999之間,姓名不能取空值,年齡小于30,性別只能是“男”或“女”。
CREATE TABLE Student
(Sno NUMERIC(6)
CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND 99999),Sname CHAR(20)
CONSRAINT C2 NOT NULL,Sage NUMERIC(3)
CONSTRAINT C3 CHECK(Sage < 30),Ssex CHAR(2)
CONSTRAINT C4 CHECK(Ssex IN(?男?,?女?)),CONSTRAINT StudentKEY PRIMARY KEY(Sno));
例2:建立教師表 TEATHER,要求每個(gè)教師的應(yīng)發(fā)工資不低于3000元。應(yīng)發(fā)工資實(shí)際上就是實(shí)發(fā)工資例Sal與扣除項(xiàng)Deduct之和。
CREATE TABLE TEATHER
(Eno NUMERIC(4)PRIMARY KEY,Ename CHAR(10),Job CHAR(8),Sal NUMERIC(7,2),Deduct NUMERIC(7,2),Deptno NUMERIC(2),CONSTRAINT EMPFKey FOREIGN KEY(Deptno)REFERENCES DEPT(Deptno),CONSTRAINT C1 CHECK(Sal+Deduct >=3000));
八、限制修改表Student中的約束條件,要求學(xué)號改在900000-999999之間,年齡由小于30改為小于40。(修改表中的完整性)
可以先刪除原來的約束條件,再增加新的約束條件。
ALTER TABLE Student
DROP CONSTRAINT C1;
ALTER TABLE Student
ADD CONSTRAINT C1 CHECK(Sno BETWEEN 900000 AND 999999),ALTER TABLE Student
DROP CONSTRAINT C3;
ALTER TABLE Student
ADD CONSTRAINT C3 CHECK(Sage <40);
九、SQL 使用 CREATE TRIGGER 命令建立觸發(fā)器,其一般格式為
CREATE TRIFFER <觸發(fā)器名>
{ BEFORE AFTER } <觸發(fā)事件> ON <表名>
FOR EACH {ROW STATEMENT}
[WHEN <觸發(fā)條件>]
<觸發(fā)動(dòng)作體>
例:定義一個(gè)BEFORE 行級觸發(fā)器,為教師表Teacher定義完整性規(guī)則“教授的工資不得低于4000元,如果低于40000元,自動(dòng)改為4000元”。
CREATE TRIGGER Insert_Or_Sal
BEFORE INSERT OR UPDATE ON Teacher
FOR EACH ROW
AS BEGIN
IF(new.Job=?教授?)AND(new.Sal<4000)THEN
new.Sal :=4000;
END IF;
END;
十、執(zhí)行修改某個(gè)教師工資SQL語句,激活上述定義的觸發(fā)器。
UPDATE Teacher SET Sal=800 WHERE Ename=?陳平?;
執(zhí)行順序是:
? 執(zhí)行觸發(fā)器 Insert_Or_Update_Sal;
? 執(zhí)行SQL語句“UPDATE Teacher SET Sal=800 WHERE Ename="陳平";" ? 執(zhí)行觸發(fā)器Insert_Sal;
? 執(zhí)行觸發(fā)器Update_Sal.十一、刪除觸發(fā)器的SQL語法如下:
DROP TRIGGER <觸發(fā)器名> ON <表名>;
觸發(fā)器必須是一個(gè)已經(jīng)創(chuàng)建的觸發(fā)器,并且只能由具有相應(yīng)權(quán)限的用戶的刪除.例: 刪除教師表 Teacher 上的觸發(fā)器 Insert_Sal。
DROP TRIGGER Insert_Sal ON Teacher;
五、實(shí)驗(yàn)總結(jié)
在實(shí)驗(yàn)過程中我對于創(chuàng)建和修改觸發(fā)器和完整性約束的語法搞不明白
通過本實(shí)驗(yàn),我理解/了解/熟悉了.......熟悉了完整性約束的添加刪除 熟悉了觸發(fā)器的使用方式 熟悉了觸發(fā)器語法熟悉級聯(lián)式更新刪除的語法
第三篇:數(shù)據(jù)庫上機(jī)實(shí)驗(yàn)報(bào)告
蘭州理工大學(xué)
學(xué)生上機(jī)報(bào)告
學(xué)院計(jì)算機(jī)與通信學(xué)院課程名稱數(shù)據(jù)庫原理
學(xué)生姓名侯予南學(xué)號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è)字符不會補(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è)字符不會補(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)/*所在系*/);/*;要加*/
-----------