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