第一篇:數據庫實驗總結
實驗總結
在上一個星期,我們用數據庫做了一個學生管理系統,分別實現了學生管理系統的添加學生信息、刪除學生信息、修改學生信息退出等幾大功能。
在這次項目中,我們都很用心去做,但是,在項目中也出現了很多的問題,最大的問題就是對編程軟件的不了解,在實現與數據庫的連接時經常會出現各種不同的錯誤,在實現一些功能時系統常常會報錯。
在這一個星期的課程設計中,我們回顧了很多以前的東西,也發現了很多的問題,以前都沒遇見過的,收獲很大,在對不同的功能代碼是不一定可以完整的執行的,不過大概都是一樣的,只有一些小的細節。設計過程中我也遇到了一些問題,再向其他同學請教的過程中我收獲了很多(1)操作視圖查詢,編寫代碼時發現,一個表中的主鍵必須是另一個表的外鍵時才可以對另一個表進行引用
(2)在設計表時應注意使用正確的字段類型。(3)在建表語句中,如果這個表的主鍵是多個屬性的組合主鍵,則必須作為表級完整性進行定義。看著自己做的系統,自己就會又欣慰又難過,欣慰的是自己終于把它做出來了,而且,做的還好,難過的是自己知道還有很多的不足,但是,由于認識的有限,無法去完善,才知道“書到用時方恨少”!
此次學生管理系統的設計讓我們對數據庫的了解更深入,可以把它同實際相結合,同時,又讓我們學會了一個新的應用軟件。在整個設計過程中,通過怎樣對把各個管理信息連接起來的分析,鍛煉了我們對事情的分析能力,通過怎樣解決過程中出現的問題,提高了我們查找文獻的能力、對網絡資源的利用能力和和其他同學的交流溝通能力。而且,經歷這次的課程設計,我們也學會了自學和分工協作。
我們覺得每一次的課程設計,都是讓我們對原有的知識從了解表面到深入本質,從個體學習到整體把握的跳躍,對新知識的汲取,更是讓我們把課本的知識應用到實際中,讓我們了解了我們的學習有什么用,能夠解決什么樣的問題,增加我們的自信和學習的動力。
總之,通過這次的課程設計,我們收獲匪淺。
第二篇:數據庫實驗
實驗1.1 使用SQL Server工具(Microsoft SQL Server Management Studio Express)管理數據庫 實驗內容:
(1)使用SSMS(SQL Server Management Studio)加入實驗數據庫。(2)使用SSMS可視化建立、修改和刪除數據庫、表。(3)使用SSMS對數據庫進行備份和恢復。
(4)使用SSMS對表進行查詢、插入、修改、刪除。實驗步驟:
(1)加入School數據庫。(2)建立Test數據庫。
(3)在數據庫中建立人員表PERSON(P#,Pname,Page)。更改表設置P#為主鍵,增加屬性Ptype(類型是CHAR,長度是10)。
(4)用SSMS的查詢功能(新建查詢)對PERSON表進行查詢、插入、修改、刪除等操作:首先插入兩條記錄;修改第二條記錄;刪除第二條記錄。(5)備份Test數據庫。(6)刪除表PERSON。(7)恢復Test數據庫。(8)刪除Test數據庫。
第三篇:數據庫實驗
3.實驗步驟
在學生選課數據庫中實現其查詢操作,寫出T-SQL語句(注:學生選課數據庫為前三次實驗課所建立的數
據庫)
一、簡單查詢實驗
(1)查詢選修了課程的學生學號。
(2)查詢選修課程號為0101的學生學號和成績,并要求對查詢結果按成績降序排列,如果成績相同則按
學號升序排列。
(3)查詢選修課程號為0101的成績在80~90分之間的學生學號和成績,并將成績乘以系數0.8輸出。
二、連接查詢實驗
(1)查詢每個學生的情況以及他(她)所選修的課程。
(2)查詢選修離散散學課程且成績為90分以上的學生學號、姓名及成績。
(3)查詢每一門課的間接先行課(即先行課的先行課)
三、嵌套查詢操作
(1)查詢0101課程的成績高于張林的學生學號和成績。
(2)查詢其他系中年齡小于計算機系年齡最大者的學生。
(3)查詢同王洪敏“數據庫原理”課程分數相同的學生的學號。
(4)查詢選修了全部課程的學生的姓名。
(5)查詢與學號為09001103的學生所選修的全部課程相同的學生學號和姓名。
(6)查詢至少選修了學號為09001103的學生所選修的全部課程的學生學號和姓名。
四、組合查詢和分組查詢
(1)查找選修“計算機基礎”課程的學生成績比此課程的平均成績大的學生學號、成績。
(2)查詢年齡大于女同學平均年齡的男同學姓名和年齡。
(3)列出各系學生的總人數,并按人數進行降序排列。
(5)查詢選修計算機基礎和離散數學的學生學號和平均成績。
4、要求
請按題號依次作答,完成在word文檔中,寫明班級學號姓名,于周日之于周日之前發至xcf7@163.com,獨立完成,嚴禁抄
第四篇:數據庫上機實驗總結(含代碼)
實驗一
(1)無條件單表查詢
select sname NAME,'year of birth:' BIRTH,2004-sage BIRTHDAY,LOWER(sdept)DEPARTMENT FROM student;(2)有條件單表查詢
SELECT sname,sdept,sage FROM student WHERE sage NOT BETWEEN 20 AND 23;(3)單表嵌套(一層)查詢
SELECT sno,sname,sdept FROM student WHERE sdept IN(SELECT sdept FROM student WHERE sname='劉晨');(4)復合條件多表查詢
SELECT student.sno,sname,cname,grade FROM student ,sc,course WHERE student.sno=sc.sno AND sc.cno=course.cno;(5)使用COUNT()的單表查詢 SELECT COUNT(*)FROM student;(6)使用AVG()的單表查詢
SELECT AVG(grade)'平均成績' from SC where CNO='1';(7)查詢結果分組
SELECT cno,COUNT(sno)'人數' FROM sc GROUP BY cno;(8)查詢結果排序
SELECT * FROM student ORDER BY sdept,sage DESC;(9)使用通配符的查詢
SELECT sname,sno,ssex FROM student WHERE sname NOT LIKE'劉%';(10)使用換碼字符的單表查詢
SELECT cno,ccredit FROM course WHERE cname LIKE 'DB_Design'ESCAPE'';(11)插入單個元組 插入一個新學生元組
Insert into student(sno,sname,ssex,sdept,sage)values('200215128','陳冬','男','IS',18)(12)插入子查詢結果
對每一個系,求學生平均年齡,并把結果存入數據庫 Create table dept_age(sdept char(15),avg_age int)Insert into dept_age(sdept,avg_age)select sdept,avg(sage)from student group by sdept(13)修改某個元組的值
將學生200215121的年齡改為22歲
Update student set sage=’22’ where sno=’200215121’(14)修改多個元組的值 將所有學生的年齡增加一歲 Update student set sage=sage+1(15)刪除一個元組的值 刪除學號為200215128的學生記錄
delete from student where sno='200215128'(16)建立視圖 建立信息系學生的視圖
create view is_student as select sno,sname,sage from student where sdept='IS' ×(17)查詢視圖
查詢選修了1號課程的信息系學生信息
Select is_student.sno,sname from is_student,sc where is_student.sno=sc.sno and sc.cno=’1’ ×(18)更新視圖
將信息系學生視圖is_student中學號為95001的學生姓名改為李楠 update is_student set sname='李楠' where sno='95002' 將下列問題用SQL命令表示:
1.查詢‘IS’系學生的學號、姓名、性別。
SELECT sno,sname,ssex FROM student WHERE sdept='IS';2.查詢‘IS’系年齡在20歲以下的學生。
SELECT * FROM student WHERE sdept='IS'AND sage<20;3.查詢所有不姓‘劉’的學生的學號、姓名、性別。
SELECT sname,sno,ssex FROM student WHERE sname NOT LIKE'劉%';4.查詢student表中學生的總人數。
SELECT COUNT(*)'總人數' FROM student;5.查詢和‘李勇’同性別的所有同學的姓名。
SELECT sname from student where ssex in(select ssex from student where sname='李勇');6.查詢和‘李勇’同性別并同系的所有同學的姓名。
Select sname from student where ssex in(select ssex from student where sname='李勇')and sdept in(select sdept from student where sname='李勇')7.查詢選修2號課程的學生的學號。Select sno from sc where cno='2' 8.求3號課程的平均成績。
Select avg(grade)from sc where cno=’3’ 9.查詢選修2號課程的學生的最高分。Select max(grade)from sc where cno=’2’
10.按成績降序排列,輸出‘IS’系學生選修了2號課程的學生的姓名和成績。
Select sname,grade from student,sc where sdept='IS' and cno='2' and student.sno=sc.sno order by grade desc SQL查詢分析器下建數據庫的命令代碼: create database 霍雙雙200826352 on(name='霍雙雙200826352_data',filename='E:
霍霍
雙雙
雙雙
***5
霍霍
雙雙
雙雙200826352_data.mdf',size=10mb,maxsize=50mb,filegrowth=10%)log on(name='霍雙雙200826352_log',filename='E:200826352_log.ldf',size=10mb,maxsize=50mb,filegrowth=10%)在查詢分析器重建立各表的命令代碼: 建立student表:
create table student(sno char(5)primary key,sname char(20),ssex char(2),sage int,sdept char(15))建立course表:
create table course(cno char(2)primary key,cname char(15),cpno char(2),ccredit int)建立cs表:
use 霍雙雙200826352 create table sc(sno char(5),cno char(2),grade smallint,primary key(sno,cno),foreign key(sno)references student(sno),foreign key(cno)references course(cno))實驗二
T-SQL查詢、存儲過程、觸發器、完整性上機作業題 第一部分 :T-SQL程序設計
(1).如果3號課程的平均成績在80分以上,則輸出“3號課程成績良好”,否則輸出“3號成績一般” declare @avg float set @avg=(select avg(grade)from sc where cno='3')if @avg>80print'3號課程成績良好'else print'3號成績一般'(2)計算并輸出95003號學生的平均成績,若無該生信息,則顯示“該生未選課”,提示信息.declare @avg float if(select count(*)from sc where sno='95003')=0 print '該生未選課' else begin select @avg=avg(grade)from sc where sno='95003' print'95003號學生平均成績' print @avg end(3).如果有成績在90分以上的學生,則顯示他的學號,課程和成績,否則顯示“沒有學生的課程成績在90分以上”提示信息
declare @text char(10)if exists(select grade from SC where grade>90)select Sno,Cno,Grade from SC where Grade>90 else begin set @text='沒有學生的課程成績在90分以上' print @text end ×(4).利用游標逐行顯示student表中的記錄。
declare stu cursor for select *from student open stu fetch next from stu while @@fetch_status=0 fetch next from stu close stu deallocate stu(5).用自定義函數計算全體男生的平均年齡
create function avg_age(@sex char(2))returns int as begin declare @aver int select @aver=(select avg(Sage)from Student where Ssex=@sex)return @aver end go declare @aver1 int,@sex char(2)set @sex='男' select @aver1=dbo.avg_age(@sex)select @aver1 as '全體男生的平均年齡' go(6).顯示course表中課程名的前2個字符。select substring(Cname,1,2)from Course(7).在一列中顯示student中各元組的學號中的年級,列名顯示為“年級”;另一列中顯示學號中的學生序列號,列名顯示為“序號”。
select substring(Sno,1,2)年級,substring(Sno,3,len(Sno)-1)序號 from Student order by Sno(8).在選課表中顯示學號、課程號,并根據成績:0-59顯示“不合格”;60-79顯示“合格”;80-89顯示“良好”;90-100顯示“優秀。”
select Sno as '學號',Cno as '課程號', grade =case when Grade<=59 then '不合格' when Grade>=60 and Grade<=79 then '合格' when Grade>=80 and Grade<=89 then '良好' else '優秀' end from SC 第二部分 :存儲過程
(1)創建一個為worker表添加職工記錄的存儲過程Addworker go
if exists(select name from sysobjects where name='Addworker' and type='P')drop procedure Addworker go create proc Addworker @職工號 char(4),@姓名 char(8),@性別 char(2),@出生日期 datetime,@黨員否 char(2),@參加工作 datetime,@部門號 char(4)as insert into worker(職工號,姓名,性別,出生日期,黨員否,參加工作,部門號)values(@職工號,@姓名,@性別,@出生日期,@黨員否,@參加工作,@部門號)go exec Addworker '16','王璐','女','1988-11-20','否','2010-08-21','11'(2)創建一個存儲過程Delworker刪除worker表中指定職工號的記錄 go
if exists(select name from sysobjects where name='Delworker' and type='P')drop procedure Delworker go create procedure Delworker @職工號 char(4)as delete from worker where 職工號=@職工號
go exec Delworker '16'(3)顯示存儲過程Delworker的定義信息。Sp_helptext Delworker(4)刪除存儲過程Addworker和Delworker。drop procedure Addworker, Delworker(5)創建并執行以下存儲過程:
a.從數據庫表中查詢,返回學生學號、姓名、課程名、成績 use 霍雙雙200826351 go if exists(select name from sysobjects where name='select_stu' and type='P')drop procedure select_stu go create procedure select_stu as select SC.Sno,Sname,Cname,Grade from Student,SC,Course where SC.Sno=Student.Sno and SC.Cno=Course.Cno go exec select_stu b.從數據庫表中查詢指定學號的學生學號,姓名,該存儲過程接受與傳遞參數,精確匹配的值 use 霍雙雙200826351 go if exists(select name from sysobjects where name='select_sno' and type='P')drop procedure select_sno go create procedure select_sno @Sno char(5)as select Sno,Sname from Student where Sno=@Sno go exec select_sno '95002' ×第三部分:觸發器
(1)在表depart上創建一個觸發器 depart_update , 當更改部門號時同步更改 worker表中對應的部門號。Go If exists(select name from sysobjects where name='depart_update'and type='tr')drop trigger depart_update go Create trigger depart_update on depart for update as set worker.部門號=(select 部門號 from inserted)where worker.部門號=(select 部門號from deleted)(2)在表worker上創建一個觸發器worker_delete,當刪除職工記錄時同步刪除salary表中對應的職工記錄。Go If exists(select name from sysobjects where name='worker_delete'and type='tr')drop trigger worker_delete go create trigger worker_delete on worker for delete as delete salary where salary.職工號=(select 職工號 from deleted)(3)刪除觸發器depart_update(4)刪除觸發器worker_delete(5)在數據庫中創建一個觸發器,向選課表添加一條紀錄時,檢查該紀錄的學號在學生表中是否存在,檢查該紀錄的課程號在課程表中是否存在,若其中有一項為否,則拒絕添加操作,并顯示“違反數據一致性”提示信息。Go If exists(select name from sysobjects where name='add_student'and type='tr')drop trigger add_student go
create trigger add_student on sc for insert as go 第四部分:數據庫完整性
1、實施worker表的“性別”字段默認值為“男”的約束 create default default_sex as '男' go sp_bindefault'default_sex','worker.性別'
2、實施salary表的“工資”字段值在0~9999的約束、create rule salary_rule as @salary='[0~9999]' go sp_bindrule 'salary_rule','salary.工資'
3、實施depart表的“部門號”字段值唯一的非聚集索引的約束
4、為worker表建立外鍵“部門號”,參考表depart的“部門號”列。
5、建立一個規則 sex:@性別=’男’OR @性別=’女’,將其綁定到worker表的“性別”列上。Create rule sex as @性別='男'OR @性別='女' Go Sp_bindrule 'sex','worker.性別'
6、刪除1小題所建立的約束。
7、刪除2小題所建立的約束。
8、刪除3小題所建立的約束
9、刪除4小題所建立的約束
10.解除5小題所建立的綁定并刪除規則sex
第五篇:數據庫原理實驗學期總結
2010-2011學年第1學期《數據庫原理實驗》學期論文
數據庫原理實驗學期總結
我的題目:
班級:_______________學號:_______________姓名:_______________ 摘要
不少于100字
關鍵字:(至少4個)
一、數據庫實驗的主要意義的目的二、概述本學期的實驗內容和目的三、實驗中涉及的主要實驗原理
四、總結
1.我的實驗完成的實際情況
2.我在實驗中遇到的主要問題及解決方案/
22010-2011學年第1學期《數據庫原理實驗》學期論文
3.我對實驗的難度的看法和建議
4.我希望增加或減少什么實驗
5.我對數據庫原理實驗課程的建議
五、附錄/ 2