浙江大学城市学院数据库原理与应用实验报告一学期的报告哦亲.docx
- 文档编号:18280761
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:22
- 大小:61.29KB
浙江大学城市学院数据库原理与应用实验报告一学期的报告哦亲.docx
《浙江大学城市学院数据库原理与应用实验报告一学期的报告哦亲.docx》由会员分享,可在线阅读,更多相关《浙江大学城市学院数据库原理与应用实验报告一学期的报告哦亲.docx(22页珍藏版)》请在冰点文库上搜索。
浙江大学城市学院数据库原理与应用实验报告一学期的报告哦亲
浙江大学城市学院-数据库原理与应用实验报告(一学期的报告哦亲)
数据库原理与应用实验报告
实验1、数据定义
1.1实验目的
目的是使学生熟悉SQLServer的企业管理器的用法,初步了解SQLServer查询分析器的使用方法,熟悉SQLSERVER的常用数据类型,加深对SQL和SQL语言的查询语句的理解。
熟练掌握简单表的创建与修改。
1.2实验内容
1.基本表的建立:
a)建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,其中学号属性不能为空,并且其值是唯一的。
b)建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,其中学号属性不能为空,并创建检查约束(nl>0)。
c)建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,要求学号为主键,xb有默认的值为‘男’
d)建立“课程kc”包括课程号kch,课程名称kcmc,先修课程xxkc,学分xf,
e)
f)课程表
Wangxl_kc(wxl_kch,wxl_kcmc,wxl_xxkc,wxl_xf
成绩表
Wangxl_cjdj(wxl_xh,wxl_kch,wxl_cj)
其中:
wxl_xh、wxl_kch分别是表Wangxl_Student、表Wangxl_kc的主键,具有唯一性约束.Wangxl_cjdj中的wxl_xh,wxl_kch是外键,它们共同组成Wangxl_cjdj的主键。
1)更改表Wangxl_cjdj:
在cjdj表中增加一列“任课教师rkjs;
2)更改表Wangxl_cjdj:
在cjdj表中删除“任课教师rkjs;
3)Wangxl_Student表的xm一列允许空值的属性更改成不允许为空,将列xm的长度由char(8)改为char(10)
4)增加Wangxl_cjdj表的列cj增加一个约束要求cj>0andcj<=100
5)建立一个临时表,再将其删除。
6)索引的建立与删除
1.3实验结果
1)用企业管理器创建数据库Wangxl_University_Mis
启动SQLServer企业管理器和数据库服务器,进入企业管理器的控制台窗口,选择右键单击数据库,弹出的菜单中选择新建数据库命令,创建名为Wangxl_University_Mis的数据库。
实验结果如图
2)查询分析器创建表
学生表
Wangxl_Student(wxl_xh,wxl_xm,wxl_xb,wxl_nl,wxl_xi)
CREATETABLEWangxl_Student
(wxl_xhchar(10)PRIMARYKEYcheck(wxl_xh>0),
wxl_xmchar(20),
wxl_xbchar
(2)default('男'),
wxl_nlint,
wxl_xichar(10)
)
课程表
Wangxl_kc(wxl_kch,wxl_kcmc,wxl_xxkc,wxl_xf
CREATETABLEWangxl_kc
(
wxl_kchchar(10)PRIMARYKEY,
wxl_kcmcchar(20),
wxl_xxkcchar(20),
wxl_xffloat
)
成绩表
Wangxl_cjdj(wxl_xh,wxl_kch,wxl_cj)
CREATETABLEWangxl_cjdj
(
wxl_xhchar(10),
wxl_kchchar(10),
wxl_cjfloat,
PRIMARYKEY(wxl_xh,wxl_kch),
CONSTRAINTStudent_cjdjFOREIGNKEY(wxl_xh)REFERENCESWangxl_Student,
CONSTRAINTcjdj_kcFOREIGNKEY(wxl_kch)REFERENCESWangxl_kc
)
3)更改表
更改表Wangxl_cjdj:
在cjdj表中增加一列“任课教师rkjs;
ALTERTABLEWangxl_cjdj
ADDwxl_rkjschar(20)
更改表Wangxl_cjdj:
在cjdj表中删除“任课教师rkjs;
ALTERTABLEWangxl_cjdj
DROPCOLUMNwxl_rkjs
Wangxl_Student表的xm一列允许空值的属性更改成不允许为空,将列xm的长度由char(8)改为char(10)
ALTERTABLEWangxl_Student
ALTERCOLUMNwxl_xmCHAR(10)notnull
增加cjdj表的列cj增加一个约束要求cj>0andcj<=100
ALTERTABLEWangxl_cjdj
addcheck(wxl_cj>0andwxl_cj<=100)
建立一个临时表,再将其删除
createtable#Wangxl_ls
(wxl_snochar(8)
)
droptable#Wangxl_ls
索引的建立与删除
createuniqueindexwxl_xhonWangxl_Student(wxl_xh)
createindexxh_kchonWangxl_cjdj(wxl_xhasc,wxl_kchdesc)
dropindexWangxl_
1.4实验体会
通过本实验我学会我数据库的创建,以及使用数据查询分析器创建表格,视图,以及对表格进行修改于删除。
帮助我更好的掌握了书本所学的知识。
觉得收获很大。
实验2数据库的简单查询和连接查询实验
1.实验目的
本实验的目的是使学生掌握SQLServer查询分析器的使用方法,加深对SQL和SQL语言的查询语句的理解。
熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
2.实验内容
1.简单查询操作。
该实验包括投影、选择条件表达,数据排序,使用临时表等。
具体完成以下题目,将它们转换为SQL语句表示,在学生选课数据库中实现其数据查询操作。
1)求数学系学生的学号和姓名
2)求选修了课程的学生学号
3)求选修课程号为‘C1’的学生号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。
4)求选修课程号为‘C1’且成绩在80~90之间的学生学号和成绩,并成绩乘以0.8输出。
5)求数学系或计算机系姓张的学生的信息。
6)求缺少了成绩的学生的学号和课程号
2.连接查询操作。
该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
1)查询每个学生的情况以及他所选修的课程
2)求学生的学号、姓名、选修的课程及成绩
3)求选修课程号为‘C1’且成绩在90以上的学生学号、姓名和成绩
4)查询每一门课程的间接先行课(即先行课的先行课)
3.实验方法
将查询需求用SQL语言表示;在SQLServer查询分析器的输入区中输入SQL查询语句;设置查询分析器的结果区为StandardExecute(标准执行)或ExecutetoGrid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。
4.实验结果
1)求数学系学生的学号和姓名
selectwxl_xh,wxl_xmfromWangxl_Student
wherewxl_xi='数学'
2)求选修了课程的学生学号
selectDISTINCTwxl_xhfromWangxl_cjdj
3)求选修课程号为‘C1’的学生号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。
selectwxl_xh,wxl_cjfromWangxl_cjdj
wherewxl_kch='C1'
orderbywxl_cjDESC,wxl_xh
4)求选修课程号为‘C1’且成绩在80~90之间的学生学号和成绩,并成绩乘以0.8输出。
selectwxl_xh,wxl_cj,wxl_cj*0.8fromWangxl_cjdj
wherewxl_kch='C1'andwxl_cj>=80andwxl_cj<=90
5)求数学系或计算机系姓张的学生的信息。
select*fromWangxl_Student
wherewxl_xiin('数学','CS')andwxl_xmlike'张%'
6)求缺少了成绩的学生的学号和课程号
selectwxl_xh,wxl_kchfromWangxl_cjdj
wherewxl_cj=null
7)查询每个学生的情况以及他所选修的课程
selectWangxl_Student.wxl_xh,wxl_xm,wxl_xb,wxl_xi,wxl_nl,wxl_kcmcfromWangxl_cjdj,Wangxl_Student,Wangxl_kc
where
8)求学生的学号、姓名、选修的课程及成绩
selectWangxl_Student.wxl_xh,wxl_xm,wxl_kcmc,wxl_cjfromWangxl_cjdj,Wangxl_Student,Wangxl_kc
9)求选修课程号为‘C1’且成绩在90以上的学生学号、姓名和成绩
selectWangxl_Student.wxl_xh,wxl_xm,wxl_cjfromWangxl_cjdj,Wangxl_Student,Wangxl_kc
whereWangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xhandWangxl_cjdj.wxl_kch=Wangxl_kc.wxl_kchandWangxl_kc.wxl_kch='C1'andwxl_cj>90
10)查询每一门课程的间接先行课(即先行课的先行课)
selectkc1.wxl_kcmcaskc,kc2.wxl_xxkcasjjxxkcfromWangxl_kckc1,Wangxl_kckc2
5.实验体会
通过本实验我学会了简单查询与连接查询。
更好的理解与掌握了数据库查询语言。
实验3数据库的嵌套查询实验
1.实验目的
本实验的目的是使学生进一步掌握SQLServer查询分析器的使用方法,加深SQL语言的嵌套查询语句的理解
2.实验内容
本实验的主要内容是:
在SQLServer查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。
具体完成以下例题。
将它们用SQL语句表示,在学生选课中实现其数据嵌套查询操作。
例1求选修了高等数学的学号和姓名
例2求C1课程的成绩高于刘晨的学生学号和成绩
例3求其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)
例4求其他系中比计算机系学生年龄都小的学生
例5求选修了C2课程的学生姓名
例6求没有选修C2课程的学生姓名
例7查询选修了全部课程的学生姓名
例8求至少选修了学号为“95002”的学生所选修全部课程的学生学号和姓名
3.实验方法
将查询需求用SQL语言表示:
在SQLServer查询分析器的输入区中输入SQL查询语句:
设置查询分析器的结果区为StandardExecute(标准执行)或ExecutetoGrid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。
4.实验结果
1)求选修了高等数学的学号和姓名
selectWangxl_Student.wxl_xh,Wangxl_Student.wxl_xmfromWangxl_kc,Wangxl_cjdj,Wangxl_Student
2)求C1课程的成绩高于刘晨的学生学号和成绩
selectWangxl_Student.wxl_xh,wxl_cjfromWangxl_cjdj,Wangxl_Student
andwxl_cj>(selectwxl_cjfromWangxl_cjdj,Wangxl_Student
wherewxl_xm='刘晨'andWangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xhandwxl_kch='C1')
3)求其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)
select*fromWangxl_Student
wherewxl_xi!
='CS'
andwxl_nl<(selectmax(wxl_nl)fromWangxl_Student
wherewxl_xi='CS')
4)求其他系中比计算机系学生年龄都小的学生
select*fromWangxl_Student
wherewxl_xi!
='CS'
andwxl_nl wherewxl_xi='CS') 5)求选修了C2课程的学生姓名 selectwxl_xmfromWangxl_Student wherewxl_xhin (selectWangxl_Student.wxl_xhfromWangxl_Student,Wangxl_cjdj whereWangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xhandwxl_kch='C2') 6)求没有选修C2课程的学生姓名 selectwxl_xmfromWangxl_Student wherewxl_xhnotin (selectWangxl_Student.wxl_xhfromWangxl_Student,Wangxl_cjdj whereWangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xhandwxl_kch='C2') 7)查询选修了全部课程的学生姓名 selectwxl_xmfromWangxl_Student wherenotexists (select*fromWangxl_kc wherenotexists(select*fromWangxl_cjdj whereWangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xhandwxl_kch=Wangxl_kc.wxl_kch)) 8)求至少选修了学号为“95002”的学生所选修全部课程的学生学号和姓名 selectwxl_xm,wxl_xhfromWangxl_Student wherenotexists(select*fromWangxl_cjdjC2 wherewxl_xh='95002'andnotexists (select*fromWangxl_cjdjC3 whereC3.wxl_xh=Wangxl_Student.wxl_xhandC3.wxl_kch=C2.wxl_kch)) andWangxl_Student.wxl_xh! ='95002' 5.实验体会 本实验我学习使用了嵌套查询语句。 发现使用exists,notexists语句进行查询比较难以理解。 对于一些语句用转换成exists语句有些不理解。 实验4数据库的集合查询和统计查询实验 1.实验目的 本实验的目的是使学生熟练掌握SQLServer查询分析器的使用方法,加深SQL语言查询语句的理解。 熟练掌握数据查询中的分组、统计、计算和集合的操作方法。 2.相关知识 (1)分组和SQL函数查询 SQL函数是综合信息的统计函数,包括计数、求最大值、最小值、平均值、和值等,较详细的SQL函数及功能见第三章3.3节(SQL查询用的函数)。 SQL函数可作为列标识符出现在SELECT子句的目标列或HAVING子句的条件中。 在SQL查询语句中,如果有GROUPBY分组子句,则语句中的函数为分组统计函数;如果没有GROUPBY分组子句,则语句中的函数为全部结果集的统计函数。 表1基本的SQL函数 函数 功能 AVG(<数值表达式>) 求与字段相关的数值表达式的平均值 SUM(<数值表达式>) 求与字段相关的数值表达式的和值 MIN(<字段表达式>) 求字段表达式的最小值 MAX(<字段表达式>) 求字段表达式的最大值 COUNT(*|<字段>) 求记录行数(*),或求不是NULL的字段的行数 (2)集合查询 每一个SELECT语句都能获得一个或一组元组。 若要把多个SELECT语句的结果合并为一个结果,可用集合来完成。 集合操作主要包括并操作UNION、交操作INTERSECT和差操作MINUS。 标准SQL语言中提供了并操作UNION,没有直接提供交操作INTERSECT和差操作MINUS,但可以用其他方法来实现,具体实现方法依查询不同而不同。 3.实验内容 本实验的主要内容是: a)分组查询实验。 该实验包括分组条件表达、选择组条件表达的方法。 b)使用函数查询的实验。 该实验包括统计函数和分组统计函数的使用方法。 c)集合查询实验。 该实验并操作UNION、交操作INTERSECT和差操作MINUS的实现方法。 具体完成以下例题,将它们用SQL语句表示,在学生选课中实现其数据查询操作。 例1求学生的总人数 例2求选修了课程的学生人数 例3求课程和选修了该课程的学生人数 例4求选修超过3门课的学生学号 例5查询计算机科学系的学生及年龄不大于19岁的学生 例6查询计算机科学系的学生与年龄不大于19岁的学生的交集 例7查询计算机科学系的学生与年龄不大于19岁的学生的差集 例8查询选修课程‘C1’的学生集合与选修课程‘C2’的学生集合的交集 例9查询选修课程‘C1’的学生集合与选修课程‘C2’的学生集合的差集 4.实验步骤 将查询需求用SQL语言表示: 在SQLServer查询分析器的输入区中输入SQL查询语句: 设置查询分析器的结果区为StandardExecute(标准执行)或ExecutetoGrid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。 5.实验结果 a)求学生的总人数 selectcount(wxl_xh)penplefromWangxl_Student b)求选修了课程的学生人数 selectcount(distinctwxl_xh)penplefromWangxl_cjdj c)求课程和选修了该课程的学生人数 selectwxl_kch,count(wxl_xh)penplefromWangxl_cjdj groupbywxl_kch d)求选修超过3门课的学生学号 selectwxl_xhfromWangxl_cjdj groupbywxl_xh havingcount(wxl_kch)>3 e)查询计算机科学系的学生及年龄不大于19岁的学生 select*fromWangxl_Student wherewxl_xi='CS'orwxl_nl<=19 f)查询计算机科学系的学生与年龄不大于19岁的学生的交集 select*fromWangxl_Student wherewxl_xi='CS'andwxl_nl<=19 g)查询计算机科学系的学生与年龄不大于19岁的学生的差集 select*fromWangxl_Student wherewxl_xi='CS'andwxl_nl>19 h)查询选修课程‘C1’的学生集合与选修课程‘C2’的学生集合的交集 selectWangxl_Student.*fromWangxl_Student,Wangxl_cjdjC1,Wangxl_cjdjC2 i)查询选修课程‘C1’的学生集合与选修课程‘C2’的学生集合的差集 selectWangxl_Student.*fromWangxl_Student,Wangxl_cjdjC1 whereC1.wxl_kch='C1'andWangxl_Student.wxl_xh=C1.wxl_xhandC1.wxl_xhnotin( selectwxl_xhfromWangxl_cjdjC3 wherewxl_kch='C2') 6.实验体会 本实验我学习了集合查询与统计查询。 学会使用聚集函数,集合作等。 集合算,差运算SQL中没有直接提供,需要我们用其他方法来实现。 总的说来,我觉得实验不难,很好操作。 实验5数据库的更新实验 1.实验目的 本实验的目的是要求学生熟练掌握使用SQL和通过SQLServer企业管理器向数据库输入数据、修改数据和删除数据的操作。 2.相关知识 SQLServer提供了很多方法更新表中数据。 以插入记录为例,可以使用INSERT语句、VALUES子句将特定值集合插入一行;可以使用数据库接口API(ADO、OLEDB、ODBC和DB-Library)中的函数进行数据插入等。 本实验主要掌握INSERT、UPDATE和DELETE语句的基本用法。 ●插入操作,其语句的一般格式为 INSERT INTOtable_or_view[(colum_list)] VALUES(date_values); 此语句是使date_values作为一行数据记录插入已命名的表或视图table_or_view中。 Column_list是由逗号分隔的table_or_view的列名列表,用来指定为其提供数据的列。 如果没有指定column_list,表或视图中的所有列都将接收数据。 如果column_list没有为表或视图中的所有列命名,将在列表中没有命名的任何列中插入一个NULL值(或者在默认情况下为这些列定义的默认值)。 在列的列表中没有指定的所有列都必须允许NULL值或者指定的默认值。 否则SQLServer将返回一个错误。 ●修改操作语句的一般格式为 UPDATE表名 SET<列名>=<表达式>[,<列名>=<表达式>]…… [where<条件>]; 其功能是修改指定表中满足WHERE子句条件的元组。 其中SET子句用于指定修改方法,即用<表达式>的值取代相应的属性列值。 如果省略WHERE子句,则表示要修改表中的所有元组。 ●删除语句的一般格式为 DELETE FROM<表名> [WHERE<条件>]; 其功能是从指定表中删除满足WHERE子句条件的所有元组。 如果省略WHERE子句,则表示要删除表中的所有元组,但表的定义仍在字典中。 3.实验内容 通过企业管理器,在学生选课数据库的学生、课程和选课3个表中各输入10条记录。 要求记录不仅满足数据约束要求,还要有表间关联的记录。 具体完成以下例题。 将它们转换为SQL语句表示,在学生选课库中实现其数据更新操作。 例1将一新学生记录(学号: 95050;姓名: 陈冬;性别: 男;年龄: 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江大学 城市 学院 数据库 原理 应用 实验 报告 一学期
![提示](https://static.bingdoc.com/images/bang_tan.gif)