数据库原理及应用实验报告 7
数据库原理及应用实验报告

数据库原理及应用实验报告数据库原理及应用实验报告一、引言数据库是计算机科学中的重要概念,它是用于存储、管理和检索大量有组织数据的系统。
数据库的应用广泛,从个人电脑上的简单数据文件到大型企业级数据仓库,都离不开数据库的支持。
本实验报告将介绍数据库的原理和应用,并通过实际实验来验证其有效性。
二、数据库原理1. 数据库的定义和特点数据库是一个有组织的数据集合,它具有持久性、共享性、独立性和可变性等特点。
持久性指数据可以长期保存;共享性指多个用户可以同时访问和使用数据库;独立性指数据库的逻辑结构和物理结构相互独立;可变性指数据库可以随时更新和修改。
2. 数据库管理系统(DBMS)数据库管理系统是用于管理数据库的软件,它提供了数据定义、数据操纵、数据控制和数据查询等功能。
常见的DBMS有MySQL、Oracle和SQL Server等。
3. 数据库模型数据库模型是用于描述数据库的结构和组织方式的概念模型。
常见的数据库模型有层次模型、网络模型和关系模型等。
其中,关系模型是最为常用的模型,它使用表格来表示数据,表格中的每一行表示一个记录,每一列表示一个属性。
三、数据库应用实验为了验证数据库的应用效果,我们进行了以下实验。
1. 数据库设计首先,我们根据实际需求设计了一个简单的学生信息管理系统。
该系统包含了学生的基本信息、课程信息和成绩信息。
2. 数据库创建在MySQL数据库中,我们创建了一个名为"student"的数据库,并在其中创建了三张表格,分别是"student_info"、"course_info"和"score_info"。
3. 数据库插入通过SQL语句,我们向数据库中插入了一些样本数据,包括学生的姓名、学号、课程名称和成绩等信息。
4. 数据库查询为了验证数据库的查询功能,我们编写了一些SQL查询语句,如查询某个学生的所有成绩、查询某门课程的平均成绩等。
数据库技术与应用实验报告

数据库技术与应用实验报告一、实验目的本次实验的主要目的是深入了解数据库技术的基本原理和应用,通过实际操作掌握数据库的创建、管理、数据操作以及查询优化等方面的技能。
同时,培养解决实际问题的能力,提高对数据库系统的综合运用水平。
二、实验环境本次实验使用的软件环境为 MySQL 数据库管理系统,操作系统为Windows 10。
三、实验内容与步骤(一)数据库创建1、打开 MySQL 客户端,使用以下命令创建数据库:```sqlCREATE DATABASE database_name;```其中,`database_name` 为自定义的数据库名称。
2、使用以下命令选择创建的数据库:```sqlUSE database_name;```(二)表的创建1、根据实验要求,设计表结构,包括字段名、数据类型、约束条件等。
例如,创建一个名为`students` 的表,包含`id`(整数类型,主键)、`name`(字符串类型)、`age`(整数类型)字段,使用以下命令:```sqlCREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```(三)数据插入1、使用`INSERT INTO` 语句向表中插入数据。
例如,向`students` 表中插入一条记录:```sqlINSERT INTO students (id, name, age) VALUES (1, '张三', 20);```(四)数据查询1、使用`SELECT` 语句进行简单查询,获取表中的数据。
例如,查询`students` 表中所有记录:```sqlSELECT FROM students;```2、使用条件查询,获取符合特定条件的数据。
例如,查询年龄大于 18 岁的学生记录:```sqlSELECT FROM students WHERE age > 18;```(五)数据更新1、使用`UPDATE` 语句更新表中的数据。
《数据库原理及应用》实验报告

《数据库原理及应用》实验报告SQL语句部分总成绩:实验一熟悉SQL SERVER,数据定义实验实验一成绩:一、实验目的1、利用查询分析器创建数据库2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作二、实验步骤及内容在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。
1.创建学生课程数据库5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
7、删除表S的“年龄”属性列。
8、删除S姓名列的唯一值约束。
9、修改SC表成绩属性列为精确数字型。
10、在表S上,按“Sno”属性列的唯一值方式建立索引。
11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。
12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。
三、实验结果:1.创建学生课程数据库create database Studend;(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage smallint,Sdept char(20),);3.创建课程关系表C :课程号课程名先行课学分Cno Cname Cpno ccreditcreate table C(Cno char(4)primary key,Cname CHAR(40),Cpno char(4),Ccredit SMALLINT,);4.创建课程关系表SC :学号课程号成绩Sno Cno grade create table SC(Sno char(9),Cno char(4),Grade smallint,);5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
alter table S add Sbirthday datetime;7、删除表S的“年龄”属性列。
数据库原理及应用实验报告 7

实验成绩《数据库系统原理及应用》实验报告七专业班级: 计算机科学与技术学号: 201116910233姓名: 范晓曈指导教师: 苏小玲2013年11 月28 日实验七名称:SQL Server触发器和游标一、实验内容及要求(使用教材建立的student、course和sc表实现)1、创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
任务2:限制每个学期所开设的课程总学分在20~30范围内。
任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)任务4:限制不能删除有人选的课程2.创建满足下述要求的游标任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。
任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。
任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。
要求按教材11-21所示样式显示结果数据。
二、实验目的掌握触发器的概念;掌握触发器创建方法;掌握游标的概念;掌握游标的使用方法。
三、实验步骤创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
create trigger tri_limitedepton student after insert,updateasIF EXISTS(SELECT*FROM INSERTEDWHERE sdept!='计算机'and sdept!='信息管理系'and sdept!='数学系'and sdept!='通信')ROLLBACKinsert into studentvalues(001,'一','女','通信工程系','1991-01-01','JA V A','5.0')任务2:限制每个学期所开设的课程总学分在20~30范围内。
数据库原理与应用实验报告

《数据库原理及应用》
实验报告
一、实验目的
掌握多表连接查询的方法
二、实验要求
三、实验结果
1、采用自然连接的方法,列出每个学生及其班级的详细情况。
2、采用自连接的方法,查找不同课程成绩相同的学生的学号、课程和成绩。
3、采用复合条件连接方法,查找选修了“汇编语言”课程且成绩在70分以上的学生的学号/姓名/课程名/成绩。
4、查找每个学生的基本情况以及班级情况。
5、查找选修了课程编号为“2”的课程且成绩在60分以上的学生的姓名和成绩。
6、查找选修了“汇编语言”课程且成绩在70分以上的学生的学号/姓名/课程名/成绩。
7、查找不同课程成绩相同的学生的学号/课程号/成绩。
8、采用左外连接,查找200001班所有学生的学号/姓名以及他们选修的课程号,同时也列出该班没选课的学生的学号/姓名。
9、采用右外连接,查找所有学生的学号/姓名以及他们选修的课程号,同时也列出没选课的学生的学号/姓名。
10、使用子查询来查询学生“张小强”所在的班级。
11、查找选修了课程号为13的课程的学生情况。
12、查找200001班没选修课程号为13的课程的学生情况。
13、创建表stu,包括学号/姓名/性别/家庭住址,然后将student_info表中相应字段信息全部插入到stu中,最后显示插入的记录。
14、将200001边的全体学生的成绩加10分。
15、删除没选修任何一门课的学生的信息。
数据库应用基础实验报告7

数据库应用基础实验报告
实验七存储过程创建与应用
班级 2009123 学号 2009 姓名
一、实验目的
使学生理解存储过程的概念, 掌握创建存储过程的使用、执行存储过程和查看、修改、删除存储过程的方法。
二、实验内容
(1)利用SQL Server ManagementStudio创建存储过程book_db, 要求实现如下功能: 在“图书信息系统”数据库中查询书名中包含“数据库”3个字的图书的图书编号和名称;调用存储过程book_db;
(2)利用SQL命令窗口创建名为proc_exp的带参存储过程, 要求实现: 从图书表中返回指定图书编号的图书的所有信息。
调用存储过程proc_exp, 输入图书编号, 显示图书的所有信息。
(3)修改存储过程proc_exp, 为按照图书的书名精确匹配查找图书信息。
(4)删除刚刚创建的book_db和proc_exp两个存储过程。
三、问题讨论
1. 相比在本地存储SQL程序, 使用存储过程有什么优点?
答:1, 允许标准组件式编程;2, 能够实现较快的执行速度;3, 减少网络流量;4, 可以作为一种安全机制来充分利用。
2. 触发器的作用是什么?
答: 触发器的作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。
数据库原理及应用实验报告

数据库原理及应用实验报告一、实验目的通过本次实验,深入理解数据库的原理与应用,掌握数据库的基本操作和常见应用场景。
二、实验内容1.数据库的基本概念与原理:关系型数据库与非关系型数据库的区别,数据库的组成要素,关键概念解释等。
2. 数据库的设计与建模:根据需求设计数据库的ER图,熟悉数据库建模工具的使用,如Eclipse、PowerDesigner等。
3.数据库语言与操作:学习SQL语言,包括数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)等,通过SQL语句对数据库进行增删改查操作。
4.索引的使用与优化:了解数据库索引的原理和作用,学习索引的创建、使用和优化技巧,提高数据库查询性能。
5.数据库的备份与恢复:掌握数据库的备份与恢复的方法,学会使用数据库备份工具进行数据的完整备份和恢复操作。
三、实验步骤1.确定数据库需求,设计ER图。
2.使用数据库建模工具创建数据库表,定义字段和关系。
3.使用SQL语句创建数据库和表结构。
4.插入数据并进行增删改查操作,验证数据库的正常使用。
5.创建索引并对查询语句进行优化,提高查询性能。
6.使用数据库备份工具进行数据备份,测试数据的完整恢复。
四、实验结果与分析本次实验中,我选择了一个简单的学生管理系统作为实验的对象。
首先,根据需求设计了ER图,确定了数据库表的结构和关系。
然后使用数据库建模工具创建了对应的数据库表。
接下来,使用SQL语句对数据库进行了初始化和插入数据,并通过增删改查操作验证了数据库的正常使用。
在插入大量数据后,使用索引对查询语句进行了优化,提高了查询性能。
最后,使用数据库备份工具对数据进行了完整备份,并进行了测试恢复操作,确保数据的可靠性和完整性。
通过本次实验,我深入了解了数据库的基本概念与原理,掌握了数据库的设计与建模技巧。
同时,我也学会了使用SQL语言进行数据库的增删改查操作,并掌握了索引的使用和优化方法。
数据库的备份与恢复操作也让我加深了对数据库安全性的认识。
数据库原理及应用实践报告

数据库原理及应用实践报告1 数据库功能描述基本实现学生信息的管理,包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。
2 数据库设计2.1 系统需求分析通过设计一个简单学生成绩管理系统来方便成绩的管理,主要内容是能够在学生表、教师表、班级表、课程表、成绩表等添加记录;能够查询到学生基本情况、全局情况(浏览表)、按学生查询、课程浏览、多项组合查询等功能;能够统计按个人统计成绩、按单科成绩统计成绩等;能够修改课程信息、学生信息、成绩信息等。
最后通过主表单或顶层表单的菜单等方法将各模块表单合理地连接,形成完整的系统。
整个系统中包含四个功能模块:添加模块、查询模块、统计模块、修改模块。
2.2 数据库逻辑结构设计3 数据库实施3.1 数据库架构图3.2 数据表生成脚本初始数据录入脚本学生数据表如表1所示。
表1学生数据表(student.dbf)字段名类型宽度索引索引名索引类型索引表达式学号字符型10 升序学号主索引学号姓名字符型8性别字符型 2出生日期日期型8班级字符型 4 升序班级普通索引班级表2班级数据表(classes.dbf)字段名类型宽度小数位索引索引名索引类型索引表达式班级字符型 4 升序班级主索引班级年级x 字符型 2专业字符型10系代码字符型 1学制字符型 1类型字符型 4表3教师数据表(teacher.dbf)表4课程数据表(course.dbf)表5 学习成绩数据表(score.dbf)3.3初始录入脚本4 应用程序设计表一:登录用户名和密码存放在数据表中,使用时不能连续输入错误3次的登录表单。
步骤为:1、首先在项目管理器的界面中选择创建一个表单,命名为:登陆.Scx2、在空白表单界面上用常用工具绘制相应控件,属性如下图所示:表单中对象的属性设置其中需要在表单的数据环境中添加密码表。
密码表设有两个字段,YHM和MM。
3、为对象添加代码。
在form1的load事件中添加public nn=0Command1的click事件locate for alltrim(mm.yhm)==alltrim(bo1.value)if found()if alltrim(thisform.text1.value)==alltrim(mm.mm)thisform.releasedo form 主控表单.scxelsemessagebox('你输入的密码不正确,请重新输入',48,'登录信息')thisform.text1.value=''n=n+1if n=3messagebox('登录失败!',16,'提示信息')quitendifendifelsemessagebox('对不起,你不是合法用户')endifCommand2的click事件bo1.value=''thisform.text1.value=''Command3的click事件answer=messagebox('确认退出吗?',1+32+0,'确认退出')if answer=1thisform.releasequitendif表二:以表单向导开发信息录入新表单。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验成绩
《数据库系统原理及应用》
实
验
报
告
七
专业班级: 计算机科学与技术
学号: 201116910233
姓名: 范晓曈
指导教师: 苏小玲
2013年11 月28 日
实验七名称:SQL Server触发器和游标
一、实验内容及要求
(使用教材建立的student、course和sc表实现)
1、创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
任务2:限制每个学期所开设的课程总学分在20~30范围内。
任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)
任务4:限制不能删除有人选的课程
2.创建满足下述要求的游标
任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。
任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。
任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。
要求按教材11-21所示样式显示结果数据。
二、实验目的
掌握触发器的概念;掌握触发器创建方法;掌握游标的概念;掌握游标的使用方法。
三、实验步骤
创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
create trigger tri_limitedept
on student after insert,update
as
IF EXISTS(SELECT*FROM INSERTED
WHERE sdept!='计算机'and sdept!='信息管理系'
and sdept!='数学系'and sdept!='通信')
ROLLBACK
insert into student
values(001,'一','女','通信工程系','1991-01-01','JA V A','5.0')
任务2:限制每个学期所开设的课程总学分在20~30范围内。
create trigger tri_limit
on course after insert,update
as
if exists(select sum(credit)from course
where semester in(select semester from inserted)having sum(credit)not between 20 and 30 )
print'你所插入的课程所在学期的总学分不在~30这个范围内'
Rollback
insert into Course
values('C007','0007','007','JA V A',3,2)
任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)
create trigger tri_count
ON SC after INSERT
as
if(select count(*)from sc where sno=(select sno from inserted))>4
begin
print'选课超过限额'
rollback
End
insert into sc
values(201116910231,'C005','2013.09.01',85,75)
任务4:限制不能删除有人选的课程
create trigger tri_Deletekc
ON course AFTER DELETE
AS
IF EXISTS(SELECT*FROM sc join DELETED d on o=o)
BEGIN
PRINT'不能删除有学生选的课程'
ROLLBACK
END
delete from course where cno='C001'
2.创建满足下述要求的游标
任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。
declare@name varchar(200),@dept varchar(200),@sscore varchar(10)--声明存放结果
集的变量
declare java_cursor cursor for--声明游标
select s.sname,s.sdept,sc.sscore
from student s join sc on s.sno=sc.sno
join course c on o=o
where cname='java'
open java_cursor--打开游标
fetch next from java_cursor into@name,@dept,@sscore--首先提取第一行
print'选了JA V A课程的学生的成绩:'
print'姓名所在系成绩'
while@@FETCH_STA TUS=0
begin
print@name+' '+@dept+' '+@sscore
fetch next from java_cursor into@name,@dept,@sscore
end
close java_cursor
deallocate java_cursor
任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。
declare@dept char(20),@sex char(20),@number int
declare cur_number cursor for
select sdept,ssex,count(*)
from student s group by ssex,sdept
open cur_number
fetch next from cur_number into@dept,@sex,@number
print'系名性别人数'
print'==================================='
while@@FETCH_STA TUS=0
begin
print@dept+@sex+cast(@number as varchar)
fetch next from cur_number into@dept,@sex,@number
end
close cur_number
deallocate cur_number
任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。
要求按教材11-21所示样式显示结果数据。
declare@dept varchar(20),@name varchar(20),@sex varchar(20)
declare c1cursor for
select distinct sdept from student
open c1
fetch next from c1into@dept
while@@FETCH_STA TUS=0
begin
print@dept+'系的学生:'
declare c2cursor for
select sname,ssex from student where sdept=@dept
open c2
fetch next from c2into@name,@sex
while@@FETCH_STA TUS=0
begin
print@name+@sex
fetch next from c2into@name,@sex
end
close c2
deallocate c2
print'=============='
print''
fetch next from c1into@dept
end
close c1
deallocate c1
四、实验心得
在实验开始之初,由于对之前所学的知识有所忘记,所以我选择首先复习之前的select语句的相关知识。
在进行触发器的相关实验时,遇到一些令我迷惑的问题例如:限制每个学生每学期选课门数不能超过6门。
由于有多重限制条件,后来在同学的讲解下利用declare解决了。
感觉触发器太神奇了,操作者做了不符合条件的操作就可以自动警告。
在做游标的相关实验时,相对简单。
油表可以对查询的数据逐行逐列的操作,方便简洁。
知识输出的结果至今无法整齐对照,令人费解。