第一篇:數(shù)據(jù)庫課程上機實驗報告
一、實驗目的通過用SQL語句對數(shù)據(jù)進行完整性控制,了解掌握提供定義完整性約束條件的機制、提供完整性檢查的方法以及違約處理
二、實驗環(huán)境
WINDOWS XP 和 SQLServer200
5三、實驗內(nèi)容:
參照完整性定義
參照完整性檢查和違約處理
屬性上的約束條件的定義(1.不允許去控空值 2.劣質(zhì)唯一 3.用CHECK短語指定列值應該滿足的條件)
屬性上的約束條件檢查和違約處理
元祖上的約束條件的定義
完整性約束命名子句
修改表中的完整性限制
定義觸發(fā)器
激活觸發(fā)器
四、程序源碼與運行結(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表時,說明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 短語指定列值應該滿足的條件)CREATE TABLE Student
(Sno CHAR(9)PRIMARY KEY,Sname CHAR(8)NOT NULL,Ssex CHAR(2)CHECK(Ssex IN(?男?,?女?)),Sage SMALLINT,Sdept CHAR(20)
六、當學生的性別是男時,其名字不能以 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:建立學生登記表Student,要求學號在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,要求每個教師的應發(fā)工資不低于3000元。應發(fā)工資實際上就是實發(fā)工資例Sal與扣除項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中的約束條件,要求學號改在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ā)動作體>
例:定義一個BEFORE 行級觸發(fā)器,為教師表Teacher定義完整性規(guī)則“教授的工資不得低于4000元,如果低于40000元,自動改為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í)行修改某個教師工資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ā)器必須是一個已經(jīng)創(chuàng)建的觸發(fā)器,并且只能由具有相應權(quán)限的用戶的刪除.例: 刪除教師表 Teacher 上的觸發(fā)器 Insert_Sal。
DROP TRIGGER Insert_Sal ON Teacher;
五、實驗總結(jié)
在實驗過程中我對于創(chuàng)建和修改觸發(fā)器和完整性約束的語法搞不明白
通過本實驗,我理解/了解/熟悉了.......熟悉了完整性約束的添加刪除 熟悉了觸發(fā)器的使用方式 熟悉了觸發(fā)器語法熟悉級聯(lián)式更新刪除的語法
第二篇:數(shù)據(jù)庫課程上機實驗報告模版
《數(shù)據(jù)庫原理與設計》實驗報告(實驗名稱 :)
專業(yè)班級學號學生姓名任課教師朱焱老師輔導教師楊方蓉、梁懿
年月日
一、實驗目的本次實驗所涉及并要求掌握的知識點。根據(jù)老師實驗前的講授自行撰寫。(小四號字,宋體)
二、實驗環(huán)境
本次實驗所使用的系統(tǒng)平臺和相關(guān)軟件。(小四號字,宋體)
三、實驗內(nèi)容:
本次實驗的內(nèi)容描述及相關(guān)題目
四、程序源碼與運行結(jié)果
按照實驗內(nèi)容編寫的代碼與結(jié)果顯示(五號字,宋體),重復的SQL語句只寫一次。
五、實驗總結(jié)
(小四號字,宋體).實驗中遇到的問題、原因分析及解決方法.實驗體會和收獲。
第三篇:數(shù)據(jù)庫上機實驗報告
蘭州理工大學
學生上機報告
學院計算機與通信學院課程名稱數(shù)據(jù)庫原理
學生姓名侯予南學號05550204
專業(yè)班級基地班05級1班
上機日期2008年4月17日
指導教師李明
上機實驗報告
(一)實驗內(nèi)容:
1、熟悉SQL Server 2000應用環(huán)境;
熟悉查詢分析器的使用方法;
2、運行課堂示例:建立表Teacher , Course ;
進行數(shù)據(jù)插入、查詢、更新、建立視圖、創(chuàng)建觸發(fā)器等操作;
3、完成作業(yè)(P108 第5題,P145第5題);
4、完成實驗報告。
實驗環(huán)境:
數(shù)據(jù)庫系統(tǒng):SQL Server 2000
實驗過程:
在實驗中發(fā)現(xiàn)的問題:
小結(jié):
教師評語:
成績:
第四篇:地質(zhì)數(shù)據(jù)庫上機實驗報告
《地質(zhì)數(shù)據(jù)庫設計與應用》上機實習報告
班級:姓名:學號:成績:
五、實習中存在的主要問題
一、實習名稱
二、實習目的三、實習內(nèi)容
四、實習主要操作步驟(或所用主要命令、函數(shù)操作方法)
第五篇:數(shù)據(jù)庫原理上機實驗報告
廣西科技大學理學院《數(shù)據(jù)庫原理》上機實驗報告
實驗序號與實驗名稱:實驗九:用戶管理和權(quán)限管理
姓名:薛亞妮學號:201000901045
專業(yè)班級:信計101實驗日期:2012年 12月15日
一、實驗目的:理解和體會數(shù)據(jù)庫安全性的內(nèi)容,加強對DBMS功能的認識。
二、實驗內(nèi)容:數(shù)據(jù)庫的用戶管理和操作權(quán)限管理。
三、程序源代碼:
1、對象操作授權(quán)
sp_grantdbaccess 201000901035
grant select on 產(chǎn)品1045 to 201000901035
grant create view,create table to 201000901035
grant execute on sp_getgoods to 2010009010352、在授權(quán)過程中體會GRANT命令中WITH GRANT OPTION 短語的作用。
--用戶201000901045--
grant select on產(chǎn)品1045 to [201000901035] WITH GRANT OPTION
--用戶201000901035--
grant select on 產(chǎn)品1045 to [201000901035]
As [201000901035]
3、分情況收回授權(quán),并體會REVOKE命令中GRANT OPTION FOR和CASCADE
--短語的作用
revoke select on 產(chǎn)品1045 from 201000901035
revoke create view,create table to 201000901035
revoke grant option for select on 產(chǎn)品1045 from 201000901035 CASCADE
四、實驗結(jié)果分析與總結(jié)
安全性控制是數(shù)據(jù)庫管理員(或系統(tǒng)管理員)的一個重要任務,他要充分利用數(shù)據(jù)庫管理系統(tǒng)的安全功能,保證數(shù)據(jù)庫和數(shù)據(jù)庫中數(shù)據(jù)的安全。
授權(quán)登錄用戶為當前數(shù)據(jù)庫用戶 :
sp_grantdbaccess [@loginame =] login
[,[@name_in_db =] name_in_db]
使一個登錄用戶成為數(shù)據(jù)庫用戶只是授權(quán)的第一步,數(shù)據(jù)庫管理員可以進一步為能夠連接到自己所管理數(shù)據(jù)庫的用戶在該數(shù)據(jù)庫上授予所需要的權(quán)限.收回權(quán)限:收回語句授權(quán) :REVOKE { ALL | statement_list } FROM name_list
收回對象授權(quán) :
REVOKE [GRANT OPTION FOR]
{ ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
FROM name_list
[ CASCADE ]
[ AS { group | role } ]
禁止語句權(quán)限: DENY { ALL | statement_list } TO name_list
禁止對象權(quán)限: DENY { ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
TO name_list
[CASCADE]