第一篇:数据库实验报告
数据库系统原理课程设计
总结报告
学院: 软件学院 专业: 软件工程 年级: 2009 学号: 20092647 姓名: 李野
1、开发环境
Windows7系统
2、DBMS系统架构
采用向量的存储结构存储数据字典信息;属性信息,表结构,索引结构,用户授权机制都用相应的类表示;将表实体(表中内容)存储在文件中,方便查阅;每当执行相应的SQL语句时只需查阅数据字典及修改数据文件。
3、DBMS主要功能模块
(1)DDL功能模拟(2)DML功能模拟
(3)关系数据库系统的查询优化(4)DCL功能模拟
3.1 SQL语言的词法和语法分析(1)功能介绍
判断输入的SQL语句是否符合词法以及语法规则
(2)相关理论
将输入的文本当成一个字符串来处理,通过匹配该字符串中的关键字来确定要做什么功能,若都不能匹配,则说明出现词法或语法错误。
(3)算法描述
将输入的文本保存在字符串s1中,将s1用换行符“n”分割,保存在array[]中,扫描字符串数组中的每个成员。
a.若以“create table”开头,查找information文件是否含有“create table”后的表的信息,如果有,则返回true,表示数据字典中已有该表,若返回false,表示数据字典中没有该表信息,则把相应的属性名及其类型写进数据字典,并标明是否有主外键。b.若以“drop table”开头,则调用“drop”函数
表示删除表。
c.若以“alter table”开头,判断其后是否有“add”或“drop”,“add”表示添加属性,“drop”表示删除属性。
d.若以“insert”开头,调用“insert()”函数,表示插入元组。e.若以“delete”开头,调用“delete()”函数,表示删除元组。f.若以“update”开头,判断其后是否有“where”条件,若有,则调用“update()”函数,否则调用“update0()”函数,表示修改相应的元组。g.若以“select”开头,判断其后是否有“*”,若有,则调用“selectall()”函数,否则调用“select()”函数,表示查询。
h.若以“create unique index”开头,则调用“index()”函数,表示创建索引。
i.若以“drop index”开头,则调用“dropindex()”函数,表示删除索引。
(4)程序流程图
开始将文本框中内容保存在字符串中Create table开头Drop table开头alter table开头insert开头delete开头Create unique index开头Drop index开头删除该表信息,并修改数据字典数据字典中是否有该表信息否是写回数据字典Drop添加属性判断其后为“add”或“drop”add插入元组删除元组创建索引删除索引标记该表已存在删除属性
表3.1-1
3.2创建数据库及数据操作功能(1)功能介绍
1、实现建立数据库表结构的功能。
a.支持整型、符点型、字符型数据。b.以文件形式保存基本表。c.建立相应的数据字典。
2、实现输入数据库记录的功能。
3、实现删除数据库记录的功能。
4、实现修改数据库记录的功能。
5、实现显示数据库结构和内容(以表格形式显示)。
6、实现在已有的关系中添加属性的功能;
7、实现从已有的关系中删除属性的功能;
8、实现删除表的功能。
(2)相关理论
通过编写一系列的SQL语句,实现创建表,删除表,插入属性,删除属性,插入元组,删除元组,修改元组,查找元组等一系列操作。
(3)算法描述
a.创建表
首先判断该表是否存在,若不存在则将create table 后的语句保存,即将属性名及类型存储到数据字典中,否则输出“该表已存在”。b.删除表
首先在数据字典中将该表信息找到,并将其删除,再找到该数据文件,也将其删除,若该表有索引文件,也将该索引文件删除。c.添加属性
在数据字典中找到该表位置,将要添加的属性名及类型追加到末尾。d.删除属性
在数据字典中找到该表并找到该属性,将该属性删除,找到该表的数据文件,删除此文件中该属性域。e.插入元组
读数据字典,找到该文件,并记录该表属性的名字及类型与要插入的数据进行匹配,此时注意类型为“Int”“float”型的输入是否正确,还要注意“char()”类型是否超界。若判断完毕,将这些数据写到数据文件末尾,若该表有索引文件,还要基于插入新元组后的表建立新索引。f.删除元组
查找数据文件,找到与“where”后的条件相符的元组,并删除。g.修改元组
首先查看是否有“where”条件,若没有,则将数据文件全部读出,并将数据文件改成“set”后的条件;否则查找数据文件并全部读出,找到与“where”后的条件相符的元组,根据“set”后的条件进行修改,并写回文件中。
(4)程序流程图
a.创建表程序流程图
开始文本中以create table开头查找数据字典是否有该表信息?否是将属性名及类型写进数据字典
表3.2-1
提示该表已寻在
b.删除表程序流程图
开始文本以“drop table”开始查找数据字典是否存在该表?是在数据字典中将该表信息删除否提示不存在该表找到相应数据文件并将其删除结束
表3.3-2
c.添加/删除属性程序流程图
开始文本以“alter table”开始其后为“add”或“drop”add drop在数据字典中加入该属性信息(名字及类型)在数据字典中删除该属性信息找到数据文件,删除该属性信息结束 表3.2-3
d.插入元组程序流程图
开始文本以“insert”开始查数据字典,记录属性名及类型扫描待插入的每个属性与数据字典中的属性比较char()int或float是否匹配或越界是否匹配不匹配或越界都匹配提示属性类型输入错误写入数据文件尾是否有索引文件有无重写索引文件结束 表3.2-4
e.删除元组程序流程图
开始文本以“delete”开始查找数据字典是否存在该表?是否读数据文件提示不存在该表找到与“where”后相匹配的数据文件并将其删除结束
表3.3-5
f.修改元组程序流程图
开始文本以“update”开始其后为是否有“where”条件无有将数据文件中相应的内容全部改为“set”后的条件找到数据文件中符合“where”后条件的元组将该元组相应条件改为“set”后信息是否有相应的索引文件有无重写索引文件结束 表3.2-6
(5)测试用例与实验结果
a.创建表 测试用例: create table s(s# char(9)sname char(8)age int sex char(2)primary key s#)
create table c(c# char(5)cname char(20)teacher char(8)primary key c#)
create table sc(s# char(9)c# char(5)grade float primary out key s# from s primary out key c# from c)实验结果: b.删除表 测试用例: drop table sc 实验结果:
C:插入元组 测试用例:
insert into s values('s1','lou',21,'F')insert into s values('s2','lu',20,'F')insert into s values('s3','ha',22,'M')insert into s values('s4','zhang',21,'F')insert into s values('s5','qian',20,'M')
insert into s values('s6','sun',18,'F')insert into s values('s7','lisan',21,'F')insert into s values('s8','qian',20,'M')insert into s values('s9','wugozi',18,'F')insert into c values('c1','math','zhao')insert into c values('c2','chinese','qian')insert into c values('c3','english','sun')insert into c values('c4','cs','li')insert into c values('c5','java','zhou')insert into c values('c6','c++','wu')insert into c values('c7','jsp','zheng')insert into c values('c8','j2ee','wang')insert into c values('c9','asp','sima')insert into sc values('s1','c1',67)insert into sc values('s2','c2',80)insert into sc values('s3','c3',100)insert into sc values('s4','c4',99)insert into sc values('s5','c5',87)insert into sc values('s6','c6',78)insert into sc values('s7','c7',90)insert into sc values('s8','c8',87)insert into sc values('s9','c9',78)实验结果:
d:删除元组 测试用例:
delete from sc where(sc.s#='s6')实验结果:
e:修改元组 测试用例:
update sc set score=120 where s#='s5' 实验结果:
f:添加属性 测试用例:
Alter table s add school char(20)实验结果:
g:删除属性 测试用例:
Alter table drop school
3.3索引的创建及删除(1)功能介绍
a.为某关系的主属性建立索引
b.利用索引属性完成选择操作,记录完成操作花费的时间,在建立索引前的关系上执行同样的选择操作并进行时间代价的比较。
c.利用索引属性完成连接操作,记录完成操作花费的时间,在建立索引前的关系上执行同样的选择操作并进行时间代价的比较。
d.删除索引
(2)相关理论
默认每个块有50个字节,数据文件中的每个元组有自己的首指针(指向元组首部的文件指针),索引文件中存储的是属性域值及其块号(块号通过其首指针/50得到)。
(3)算法描述
a.创建索引
针对表的主键建立索引文件,找到数据文件中要建立索引的属性域值,并记录该元组的首指针,将其保存在索引文件中。
b.利用索引属性完成选择操作
在索引文件中找到“select”语句中“where”后的条件涉及的属性(因为是基于主键建立的索引,所以只能通过主键的索引文件来查找相应的信息),记录索引域后的块号,将块号*50就能得到相应的文件指针,通过文件指针读数据文件,就能找到相应的元组。
c.利用索引属性完成连接操作 d.删除索引
找到相应的索引文件将其永久删除
(4)程序流程图
a.创建索引文件
开始数据字典有该属性?是找到数据文件中要建立索引的属性域记录该元组的文件否指针并/50得到块号一并写入索引文件结束 表3.3-1
b.利用索引属性完成选择操作
开始查找索引文件中与“where”后条件相符的属性域值找到?记录该属性域值得块号否块号*50得到文件指针查找数据文件找到该元组,输出结束 表3.3-2
是c.删除索引文件
开始找到该索引文件?是否将该索引文件彻底删除结束 表3.3-4
(5)测试用例与实验结果
a:创建索引文件 测试用例:
create index index on s 实验结果:
b:利用索引选择
3.4查询功能(1)功能介绍
a.实现全关系选择操作 b.实现单关系投影操作
c.实现单关系选择操作(允许多条件)d.实现单关系的选择投影操作(允许多条件)e.实现两个关系和多个关系的连接操作 f.实现两个关系和多个关系的选择和连接操作 g.实现两个关系和多个关系的选择、投影和连接操作
(2)相关理论(3)算法描述
a.全关系的选择操作
扫描数据字典,判断是否有该表,如果有,则扫描数据文件,将数据文件中内容全部输出。
b.实现单关系的投影操作
扫描数据字典,判断是否有该表,若有该表,记录要投影的属性是第几个,扫描数据文件,将每个元组中要查询的属性输出。
c.实现单关系的选择操作(允许多条件)
扫描数据字典,判断是否有该表,若有该表,扫描数据文件,利用循环将满足“where”后条件的元组选出。
d.实现单关系的选择投影操作(允许多条件)
扫描数据字典,判断是否有该表,若有该表,则记录需要投影的属性是第几个,查找数据文件,利用循环将满足“where”条件的元组找出并属性相应的属性值。
e.实现两个关系和多个关系的连接操作
扫描数据字典,判断是否有这两个表,若有,则查找相关属性,将两个表中的相关属性依据条件进行匹配,若匹配成功,则表示连接成功,输出连接结果。
f.实现两个关系和多个关系的选择和连接操作 在以上的连接结果中挑选符合条件的元组输出。g.实现两个关系和多个关系的选择、投影和连接操作 在以上的结果中选择要投影的属性,输出。
(4)程序流程图
a.全关系的选择操作
开始扫描数据字典是否有该表?扫描数据文件并全部输出结束 表3.4-1 b.实现单关系的投影操作
开始扫描数据字典是否有该表?是否有要投影的属性否记录要投影的属性是第几个扫描数据文件将该属性值域输出结束
表3.4-2 c.实现单关系的选择操作(允许多条件)
是是否
开始扫描数据字典是否有该表?是记录“where”条件并扫描是否扫描数据文件有与之匹配的元组?否输出提示没有符合条件的元组结束 表3,4-3 d.实现单关系的选择投影操作(允许多条件)
开始扫描数据字典是否有该表?是记录要投影的属性是第几个否记录“where”条件并扫描扫描数据文件有与之匹配的元组?否是选择要投影的属性值域提示没有符合条件的元组提示没有符合条件的元组输出结束 表3.4-4(5)测试用例与实验结果
测试用例:
select s#,sname,age,sex from s where s.sname='qian'ands.age>19 实验结果:
测试用例:
select sname,age,sex from s where s.s#='s6'ands.age=18ors.sname='li' 实验结果:
测试用例: link s,sc base sc 实验结果:
测试用例: link s,c,sc base sc 实验结果:
3.5查询优化
(1)功能介绍
在做两个表连接时,先将需要用到的元组找到,并不做笛卡尔积,这在一定程度上减少了全部选择的时间。
(2)相关理论
在做两个表连接时,需要名字及类型相同的属性用一定的条件进行匹配,如果在做笛卡尔积之前就用这些条件把要用到的元组选出来,既省空间又省时间。
(3)算法描述
首先查看表是否存在,若存在查找涉及到的属性,记录“where”后的条件,将两个表中符合条件的元组都取出,将这些元组做连接。
(4)程序流程图
开始是否存在该表?是是否有涉及到的属性?是否记录“where”后的条件否将符合条件的元组先选出连接结束
表3.5-1 3.6数据库保护功能(1)功能介绍
此DBMS系统有两种用户:管理员,普通用户。
(2)相关理论
a.插入元组、修改元组时,匹配每个属性的类型,如果类型及长度输入有误,则提示输入错误不写入数据源文件,若符合条件,则查看基于每个属性是否有索引文件,如果有,则重写索引文件。
b.修改元组时也要判断类型及长度是否匹配,也要重写相应的索引文件。c.每次做相应操作前先考虑数据字典中是否有该表,是否有要查询的属性。
(3)算法描述
例如在做插入元组时,首先查找数据字典有没有待插入的表,如果有,则记录每个属性类型及长度,将待插入数据与属性进行一一比对,一旦有一个记录不符合要求,也无法插入表中。
(4)程序流程图
开始文本以“insert”开始查数据字典,记录属性名及类型扫描待插入的每个属性与数据字典中的属性比较char()int或float是否匹配或越界是否匹配不匹配或越界都匹配提示属性类型输入错误写入数据文件尾是否有索引文件有无重写索引文件结束 表3.6-1
4、总结
通过对于DBMS系统的模拟,使我对于数据库系统有了更深刻的理解,了解了每个表信息的存储结构,以及数据字典的相关说明,也了解了主外键的意义与作用,也知道了插入元组的时候属性匹配问题,以及对表的属性域的修改等。通过编写程序,让我对表连接有了更加系统的认识,也知道了在连接时先选出要查询的元组更省时间,省空间。了解了怎样存储表信息才能既省空间又能保存表信息,没有冗余情况。通过做实验,我将理论与实践有了更好的结合,不但提高了对理论的理解,更让我对编程能力有了很好的锻炼。
5、参考文献
《数据库系统原理》 李建中 王珊编著 电子工业出版社 《Java技术及其应用》 王克宏 编著 高等教育出版社
第二篇:数据库实验报告
数据库实验报告
一、题目要求
某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求:
银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。银行的客户通过其身份证号来标识。银行存储每个客户的姓名及其居住的街道和城市。客户可以有帐户,并且可以贷款。客户可能和某个银行员工发生联系,该员工是此客户的贷款负责人或银行帐户负责人。银行员工也通过身份证号来标识。员工分为部门经理和普通员工,每个部门经理都负责领导其所在部门的员工,并且每个员工只允许在一个部门内工作。每个支行的管理机构存储每个员工的姓名、电话号码、家庭地址及其经理的身份证号。银行还需知道每个员工开始工作的日期,由此日期可以推知员工的雇佣期。银行提供两类帐户——储蓄帐户和支票帐户。帐户可以由2个或2个以上客户所共有,一个客户也可有两个或两个以上的帐户。每个帐户被赋以唯一的帐户号。银行记录每个帐户的余额、开户的支行以及每个帐户所有者访问该帐户的最近日期。另外,每个储蓄帐户有其利率,且每个支票帐户有其透支额。每笔贷款由某个分支机构发放,能被一个或多个客户所共有。每笔贷款用唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次支付的情况(银行将贷款分几次付给客户)。虽然贷款号不能唯一标识银行所有为贷款所付的款项,但可以唯一标识为某贷款所付的款项。对每次的付款需要记录日期和金额。
二、需求分析
这一部分主要是根据实验需求对银行系统需求中的实体、实体属性以及实体之间的关联进行确认,以便画出正确的概念模型。
2.1 实体确认
根据需求分析确认实体:银行员工、银行支行、客户、账户(其中:储蓄账户、支票账户是继承实体账户而来)、贷款、支付(弱实体)。
2.2 实体属性确认
银行员工:身份证号(pi)、姓名、电话号码、家庭地址、开始工作日期 银行支行:支行名、资产、城市
客户:身份证号、姓名、街道、所在城市 账户:账户号、余额、最近访问日期 支票账户:透支额 储蓄账户:利率 2.3 实体关系确认
账户和支行:N:1定义关系为Relationship_accout_bank 客户和贷款:M:N定义关系为Relationship_client_loan 客户和员工:M:1 定义关系为 Relation_client_staff 贷款和支行:1:N 定义关系为 Relationship_loan_bank 客户和账户:M:N 定义关系为 client__accout 贷款发放信息和贷款:N:1 定义关系为 Relationship_loan_pay 支行和员工:1:N 定义关系为Relationship_staff_bank
员工和员工:1:N 定义关系为 Relationship_lead
三、概念模型(CDM)
根据sybase power designer画出概念模型(CDM),如下图所示:
四、物理模型(PDM)
根据概念模型转化成物理模型(PDM),如下图所示:
第三篇:数据库实验报告
实验4SQL高级应用
【实验目的】
1、掌握在SQL SERVER 2005下进行数据还原的方法。
2、掌握SQL语句的查询统计功能和数据更改功能。
【实验内容】
1.还原factory数据库。
2.在factory数据库上,完成如下各题。
(1)删除factory数据库上各个表之间建立的关系。(2)*显示各职工的工资记录和相应的工资小计。
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。(6)显示最高工资的职工所在的部门名。
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。(8)*采用游标方式实现(6)小题的功能。(9)*采用游标方式实现(7)小题的功能。
(10)*先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。
【实验报告要求】
1.第(1)写出操作步骤。
2.其他各题写出实现要求的命令/程序,并列出执行结果。
【操作步骤】
1.还原factory数据库。
2.在factory基础上,有
(1)删除factory数据库上各个表之间建立的关系。
(2)*显示各职工的工资记录和相应的工资小计。
Select 职工号,姓名,工资from salary Order by 职工号
Compute sum(工资)by 职工号
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
select worker.职工号,worker.性别,depart.部门名,avg(工资)as'平均工资' from worker inner join depart on worker.部门号=depart.部门号 inner join salary on worker.职工号=salary.职工号
group by worker.职工号,worker.性别,depart.部门名
order by worker.职工号
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
insert into worker values('20','陈立','女','1955-03-08','1','1975-10-10',4)
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。
Insert into depart Values('5','设备处')对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
use factory Select b.部门号,c.姓名
from salary a,departb,worker c delete from worker where 职工号=20 delete from depart where 部门号=5(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。
Use factory Select b.部门名,c.职工号,c.姓名,b.部门名,a.日期,a.工资 from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and a.职工号=c.职工号and b.部门号=c.部门号(6)显示最高工资的职工所在的部门名。
Use factory Select b.部门名from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and c.部门号=b.部门号and a.职工号=c.职工号
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。
Use factory Select a.职工号,a.姓名,avg(b.工资)as平均工资from worker a,salary b where a.职工号=b.职工号 group by a.职工号,a.姓名
having avg(工资)<(select avg(工资)from salary)
第四篇:数据库实验报告
南华大学
计算机科学与技术学院
实验报告
(2013 ~2014 学
第二学期)
课程名称 实验名称
数据库原理与技术
姓名 张涛 学号 20124350230
专业 软件工程
班级 02班
地点
教师 刘征海 实验1 认识DBMS 一.实验题目
认识DBMS 二.实验要求
1.利用管理工具创建数据库、表和表间关系。
实验目的和注意事项 基本操作,进一步理解数 据库、表、表间关系的概念。
注意事项:创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。三.实验代码(内容)
(1)利用SQL Server Management Studio 创建数据库,名称为【学生选课
YYXXXX】。其中YY为专业代号,计算机为JS,软件工程为RJ,网络为WL,数媒为
SM;XXXX为各位同学的学号中的最后四位 实验目的:熟悉SQL Server Management Studio
(2)在【学生选课YYXXXX】中建立数据表,表的定义如下所示。
学生YYXXXX(学号,姓名,性别,出生日期,院系名称,备注);
课程YYXXXX(课程号,课程名,先行课,学分); 选修YYXXXX(学号,课程号,分数)。
要求定义每张表的主码,为属性选择合适的数据类型,决定是否允许为空,为【性别】和【学分】属性定义默认值。
(3)定义表之间的关系。
(4)分别为表录入几行数据记录,同时练习数据的修改和删除操作
2.利用SQL 语句创建数据库、表和表间关系 实验目的和注意事项
实验目的:熟悉创建数据库和数据表的SQL 语句。
注意事项:输入SQL 语句时应注意,语句中均使用西文操作符号。
实验内容
在SQL Server Management Studio 中新建查询,实现以下操作。(1)用SQL 语句创建数据库,名称为“StudentCourseYYXXXX”。其中YYXXXX 为各位同学的学号中的最后四位。
(2)用SQL 语句创建StudentCourseYYXXXX 中的3 张表,同时指定主码、外 码、默认值等。
(3)直接在表数据窗口中录入表数据记录。
实验 2 交互式 SQL(1)
一、数据库单表查询 实验目的和注意事项
实验目的:掌握单表查询SELECT、FROM、WHERE 的用法,特别要掌握比较运 算符、逻辑运算符的使用。注意事项:子句WHERE<条件>表示元组筛选条件;子句HAVING<条件>表示元
组选择条件;子句HAVING<条件>必须和GROUP BY 子句配合使用;注意输入SQL语句时均应使用西文操作符号。实验内容
(1)创建查询窗口,设置查询环境。(2)单表查询 实验步骤
(1)选择要查询的数据库,右击【新建查询】,或者选择系统菜单中的【文
件】|【新建】|【使用当前连接查询】命令,或者单击标准工具栏中的【新建查
询】按钮,即可新建一个查询窗口。如果查询数据库不是StudentCourseYYXXXX,则可在可用数据库下拉列表中进行选择,或用USE 语句调用。
(2)在查询窗口中输入SELECT 查询语句,对StudentCourseYYXXXX 数据库 进行查询操作。
① 查询计算机系全体学生的信息
② 查询姓“李”的学生的学号和姓名。
③ 查询课程表中先行课为空的课程名。
④ 查询考试成绩有不及格的学生的学号。
⑤ 求选修了C1 课程或C2 课程的学生的学号及成绩。
⑥ 查询全体计算机系学生的姓名及其年龄。
⑦ 查询计算机系在1986-1987 年之间出生的学生的姓名。
⑧ 查询姓“李”的前两个学生的学号和姓名。
⑨ 查询选修了两门以上课程的学生学号与课程数。
⑩ 查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。
二、数据库多表连接查询 实验目的和注意事项
实验目的:理解多表查询的概念;掌握多表查询的SELECT、FROM、WHERE、JOIN子句的用法,特别要求比较内连接、外连接的结果。
注意事项:内连接、左外连接和右外连接的含义及表达方法;注意输入SQL 语 句时均应使用西文操作符号。实验内容
(1)创建查询窗口,设置查询环境。(2)多表复杂查询。实验步骤
新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行多表连接查询操作。(1)查询选修了【数据库原理】的计算机系的学生学号和姓名。
(2)查询每一门课的间接先行课(即先行课的先行课)。
(3)查询学生的学号、姓名、选修课程的名称和成绩。
(4)查询选修了课程的学生姓名。
(5)查询所有学生的信息和所选修的课程。
(6)查询已被选修的课程的情况和所有课程的名字。
(7)列出学生所有可能的选修情况。
(8)查找计算机系的学生选修课程数大于2 的学生的姓名、平均成绩和选课 门数,并按平均成绩降序排列。
实验 3 交互式 SQL(2)数据库嵌套查询和组合查询 实验目的和注意事项
实验目的:掌握查询中嵌套查询和组合查询的操作方法,进一步加深对 SELECT 语句的理解。
注意事项:子句的使用;注意语句的层次嵌套关系和括号的配对使用问题;
注意输入SQL 语句时均应使用西文操作符号。实验内容(1)创建查询窗口,设置查询环境。(2)分组查询。(3)统计查询。(4)嵌套查询。实验步骤
新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行嵌套查询和组合查询操作。
(1)统计选修了【数据库原理】课程的学生人数。
(2)查询没有选修【数据库原理】课程的学生信息。
(3)查询其他系中比计算机系学生年龄都小的学生。
(4)查询被0602001 学生或0602002 学生所选修的课程的课程号(用UNION 组合查询与IN 条件查询两种方法实现)。
(5)查询0602001 学生和0602002 学生同时选修的课程的课程号(用
INTERSECT 组合查询与EXISTS 嵌套子查询两种方法实现)。
(6)查询被0602001 学生选修,但没有被0602002 学生所选修的课程的课程
号(用EXCEPT 组合查询与NOT EXISTS 嵌套子查询两种方法实现)。
实验 4 交互式 SQL(3)数据的更新 实验目的和注意事项
实验目的:熟悉插入、修改和删除SQL 语句的用法。注意事项:对于INSERT 语句,要求理解默认值约束、空值约束在插入时所 起的作用。实验内容
(1)使用INSERT 语句在数据库的表中插入几行记录。(2)使用UPDATA 语句修改某个数据。(3)使用DELETE 语句删除某行记录。实验步骤
(1)新建查询窗口,选择StudentCourseYYXXXX 为当前数据库。
(2)在已建立StudentCourseYYXXXX 数据库和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX 3 个表的基础上,向StudentCourseYYXXXX数据库中 的表更新数据。
① 向表StudentsYYXXXX 中插入(0601001,赵林, 男,1985-09-08,计算机)的记录。
② 向SCYYXXXX 表中添加一个学生的选课记录,学号为0601001,所选的课
程号为C2。SC表中有Sno、Cno、Grade 这3 个列。这里只知道学号和课程号,不知道成绩值。
③ 向表StudentsYYXXXX 中插入(0601002,张修雨,default)记录,该记录 的数据中default 表示默认值‘男’,其他数据表示空值。
④ 用CREATE 语句建立表StudentBAK1YYXXXX,包含(与Students 的Sno、Sname、Sdept 相同)3 个字段,然后用INSERT SELECT 语句实现向
StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的计算机系学生的学号、姓名、所在系的信息。
⑤ 用 SELECT...INTO 语句实现把StudentsYYXXXX 表中1986 年后(包含
1986 年)出生的学生的学号、姓名存储到一个新表StudentBAK2YYXXXX。
⑥ 将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。
⑦ 将选修了课程名为【数据库原理】的学生成绩加5 分。⑧ 将StudentCourseYYXXXX
数据库的StudentBAK1YYXXXX 表中所有姓赵的 同学删除。
⑨ 删除计算机系选修成绩不及格的学生选修记录。⑩ 将除。StudentCourseYYXXXX
数据库的StudentBAK2YYXXXX 表中的所有行删
四.实验总结
实验一要注意创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。输入SQL 语句时应注意,语句中均使用西文操作符号;实验二应注意注意group和having以及where的搭配使用的情况;实验三注意注意输入SQL 语句时均应使用西文操作符号,子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;实验四注意输入SQL 语句时均应使用西文操作符号,对于INSERT 语句,要求理解默认值约束、空值约束在插入时所起的作用。注意插入,修改,新建表,删除语句的写法,并且掌握把原表中的数据转存到新表中的语句写法。
第五篇:数据库实验报告
10包三 李雅 100910306
实验报告
一、实验题目:
数据库基本操作实验
二、实验目的:
掌握数据库的建立、表的设计基本方法,通过实际操作熟练掌握数据库的基本操作——数据的输入与导入,表的设计。
三、实验内容:
建立课程管理数据库,要求:
1.输入老师、开设课程、选课表、学生基本数据等,并输入一些学生不同课程的考试成绩。
2.建立查询表,分别是成绩查询、学分查询、不及格学生查询。
3.建立窗体,分别显示不及格学生的姓名、课程名称、成绩和班级ID。在成绩查询中显示学生姓名及各科成绩。在教师基本信息中显示编号、职称、工资、院系、等。同时建立开设课程表和学生基本信息的窗体查询。提供用户一个简单的应用程序界面,方便用户操作使用。
4.制作报表。包括教师的授课报表,课程名称及课程类别。学生的总成绩报表,包括课程名称、成绩和学分。
注:课程及考试成绩可以任意输入。选课按照班级确定。
四、实验过程:
1、数据库表设计
在表格内填入教师基本信息、开始课程、课程基本信息、选课表、学生基本信息。
教师基本信息:
开设课程:
/ 7
10包三 李雅 100910306
课程基本信息:
选课表:
/ 7
10包三 李雅 100910306
学生基本信息:
2、查询表: 成绩查询:
/ 7
10包三 李雅 100910306
学分查询:
不及格学生查询:
/ 7
10包三 李雅 100910306
3、窗体设计: 不及格学生信息查询:
成绩查询:
教师基本信息查询:
开设课程信息查询:
/ 7
10包三 李雅 100910306
学生基本信息查询:
4、报表: 教师的授课报表:
/ 7
10包三 李雅 100910306
学生的总成绩:
/ 7