第一篇:数据库实验总结
实验总结
在上一个星期,我们用数据库做了一个学生管理系统,分别实现了学生管理系统的添加学生信息、删除学生信息、修改学生信息退出等几大功能。
在这次项目中,我们都很用心去做,但是,在项目中也出现了很多的问题,最大的问题就是对编程软件的不了解,在实现与数据库的连接时经常会出现各种不同的错误,在实现一些功能时系统常常会报错。
在这一个星期的课程设计中,我们回顾了很多以前的东西,也发现了很多的问题,以前都没遇见过的,收获很大,在对不同的功能代码是不一定可以完整的执行的,不过大概都是一样的,只有一些小的细节。设计过程中我也遇到了一些问题,再向其他同学请教的过程中我收获了很多(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