浙江大学城市学院 数据库原理与应用实验报告(一学期的报告哦亲)_第1页
浙江大学城市学院 数据库原理与应用实验报告(一学期的报告哦亲)_第2页
浙江大学城市学院 数据库原理与应用实验报告(一学期的报告哦亲)_第3页
浙江大学城市学院 数据库原理与应用实验报告(一学期的报告哦亲)_第4页
浙江大学城市学院 数据库原理与应用实验报告(一学期的报告哦亲)_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理与应用实验报告实验1、数据定义1.1 实验目的 目的是使学生熟悉SQL Server的企业管理器的用法,初步了解SQL Server查询分析器的使用方法,熟悉SQL SERVER的常用数据类型,加深对SQL和SQL语言的查询语句的理解。熟练掌握简单表的创建与修改。1.2 实验内容1 基本表的建立:a) 建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,其中学号属性不能为空,并且其值是唯一的。 b) 建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,其中学号属性不能为空,并创建检查约

2、束(nl0)。 c) 建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,要求学号为主键,xb有默认的值为 男d) 建立“课程kc”包括课程号kch,课程名称kcmc,先修课程xxkc,学分xf,要求建立主键e) 建立“成绩登记表cjdj”包括学号xh,程号kch,成绩,要求建立主键及与student及kc表联接的外键2 基本表的修改:a) 在cjdj表中增加一列“任课教师rkjs”b) 删除cj表中rkjs一列c) 将student表的xm一列允许空值的属性更改成不允许为空,将列xm的长度由char(8)改为char(10)d) 增加cjdj

3、表的列cj增加一个约束要求cj0 and cj0 and cj0),wxl_xm char(20) ,wxl_xb char(2) default(男) ,wxl_nl int,wxl_xi char(10) )课程表Wangxl_kc(wxl_kch, wxl_kcmc, wxl_xxkc, wxl_xfCREATE TABLE Wangxl_kc(wxl_kch char(10) PRIMARY KEY,wxl_kcmc char(20),wxl_xxkc char(20),wxl_xf float)成绩表Wangxl_cjdj(wxl_xh, wxl_kch, wxl_cj)CREATE

4、 TABLE Wangxl_cjdj(wxl_xh char(10),wxl_kch char(10),wxl_cj float ,PRIMARY KEY(wxl_xh,wxl_kch),CONSTRAINT Student_cjdj FOREIGN KEY (wxl_xh) REFERENCES Wangxl_Student,CONSTRAINT cjdj_kc FOREIGN KEY (wxl_kch) REFERENCES Wangxl_kc)3) 更改表更改表Wangxl_cjdj:在cjdj表中增加一列“任课教师rkjs;ALTER TABLE Wangxl_cjdjADD wxl_

5、rkjs char(20)更改表Wangxl_cjdj:在cjdj表中删除“任课教师rkjs;ALTER TABLE Wangxl_cjdjDROP COLUMN wxl_rkjsWangxl_Student表的xm一列允许空值的属性更改成不允许为空,将列xm的长度由char(8)改为char(10)ALTER TABLE Wangxl_StudentALTER COLUMN wxl_xm CHAR(10) not null增加cjdj表的列cj增加一个约束要求cj0 and cj0 and wxl_cj=80 and wxl_cj9010) 查询每一门课程的间接先行课(即先行课的先行课) s

6、elect kc1.wxl_kcmc as kc ,kc2.wxl_xxkc as jjxxkc from Wangxl_kc kc1,Wangxl_kc kc2where kc1.wxl_xxkc=kc2.wxl_kcmc5 实验体会通过本实验我学会了简单查询与连接查询。更好的理解与掌握了数据库查询语言。实验3 数据库的嵌套查询实验1 实验目的本实验的目的是使学生进一步掌握SQL Server查询分析器的使用方法,加深SQL语言的嵌套查询语句的理解2 实验内容本实验的主要内容是:在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。具体完成以

7、下例题。将它们用SQL语句表示,在学生选课中实现其数据嵌套查询操作。例1 求选修了高等数学的学号和姓名例2 求C1课程的成绩高于刘晨的学生学号和成绩例3 求其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)例4 求其他系中比计算机系学生年龄都小的学生例5 求选修了C2课程的学生姓名例6 求没有选修C2课程的学生姓名例7 查询选修了全部课程的学生姓名例8 求至少选修了学号为“95002”的学生所选修全部课程的学生学号和姓名3 实验方法 将查询需求用SQL语言表示:在SQL Server查询分析器的输入区中输入SQL查询语句:设置查询分析器的结果区为Standard Ex

8、ecute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。 4 实验结果1) 求选修了高等数学的学号和姓名select Wangxl_Student.wxl_xh , Wangxl_Student.wxl_xm from Wangxl_kc ,Wangxl_cjdj,Wangxl_Studentwhere wxl_kcmc=高等数学 and Wangxl_cjdj.wxl_kch=Wangxl_kc.wxl_kch and Wangxl_Student.wxl_xh=Wangxl_cjdj.wxl_

9、xh2) 求C1课程的成绩高于刘晨的学生学号和成绩select Wangxl_Student.wxl_xh , wxl_cj from Wangxl_cjdj,Wangxl_Studentwhere wxl_kch=C1 and Wangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xh and wxl_cj (select wxl_cj from Wangxl_cjdj,Wangxl_Studentwhere wxl_xm=刘晨 and Wangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xh and wxl_kch=C1)3) 求其他系中比计算

10、机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)select * from Wangxl_Studentwhere wxl_xi !=CS and wxl_nl (select max(wxl_nl) from Wangxl_Studentwhere wxl_xi=CS)4) 求其他系中比计算机系学生年龄都小的学生select * from Wangxl_Studentwhere wxl_xi !=CS and wxl_nl all (select wxl_nl from Wangxl_Studentwhere wxl_xi=CS)5) 求选修了C2课程的学生姓名select w

11、xl_xm from Wangxl_Studentwhere wxl_xh in (select Wangxl_Student.wxl_xh from Wangxl_Student,Wangxl_cjdjwhere Wangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xh and wxl_kch=C2)6) 求没有选修C2课程的学生姓名select wxl_xm from Wangxl_Studentwhere wxl_xh not in (select Wangxl_Student.wxl_xh from Wangxl_Student,Wangxl_cjdjwhere

12、 Wangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xh and wxl_kch=C2)7) 查询选修了全部课程的学生姓名select wxl_xm from Wangxl_Studentwhere not exists (select * from Wangxl_kcwhere not exists (select * from Wangxl_cjdjwhere Wangxl_Student.wxl_xh=Wangxl_cjdj.wxl_xh and wxl_kch=Wangxl_kc.wxl_kch)8) 求至少选修了学号为“95002”的学生所选修全部课程的学生

13、学号和姓名select wxl_xm ,wxl_xh from Wangxl_Student where not exists(select * from Wangxl_cjdj C2where wxl_xh=95002 and not exists (select * from Wangxl_cjdj C3where C3.wxl_xh=Wangxl_Student.wxl_xh and C3.wxl_kch=C2.wxl_kch)and Wangxl_Student.wxl_xh!=950025 实验体会本实验我学习使用了嵌套查询语句。发现使用exists,not exists语句进行查询

14、比较难以理解。对于一些语句用转换成exists语句有些不理解。实验4 数据库的集合查询和统计查询实验1 实验目的本实验的目的是使学生熟练掌握SQL Server查询分析器的使用方法,加深SQL语言查询语句的理解。熟练掌握数据查询中的分组、统计、计算和集合的操作方法。2 相关知识(1) 分组和SQL函数查询SQL函数是综合信息的统计函数,包括计数、求最大值、最小值、平均值、和值等,较详细的SQL函数及功能见第三章3.3节(SQL查询用的函数)。SQL函数可作为列标识符出现在SELECT子句的目标列或HAVING子句的条件中。在SQL查询语句中,如果有GROUP BY分组子句,则语句中的函数为分组

15、统计函数;如果没有GROUP BY分组子句,则语句中的函数为全部结果集的统计函数。表1 基本的SQL函数函数功能AVG()求与字段相关的数值表达式的平均值SUM()求与字段相关的数值表达式的和值MIN()求字段表达式的最小值MAX()求字段表达式的最大值COUNT(*|)求记录行数(*),或求不是NULL的字段的行数(2) 集合查询 每一个SELECT语句都能获得一个或一组元组。若要把多个SELECT语句的结果合并为一个结果,可用集合来完成。集合操作主要包括并操作UNION、交操作INTERSECT和差操作MINUS。 标准SQL语言中提供了并操作UNION,没有直接提供交操作INTERSEC

16、T和差操作MINUS,但可以用其他方法来实现,具体实现方法依查询不同而不同。3 实验内容本实验的主要内容是:a) 分组查询实验。该实验包括分组条件表达、选择组条件表达的方法。b) 使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。c) 集合查询实验。该实验并操作UNION、交操作INTERSECT和差操作MINUS的实现方法。具体完成以下例题,将它们用SQL语句表示,在学生选课中实现其数据查询操作。例1 求学生的总人数例2 求选修了课程的学生人数例3 求课程和选修了该课程的学生人数例4 求选修超过3门课的学生学号例5 查询计算机科学系的学生及年龄不大于19岁的学生例6 查询计算机

17、科学系的学生与年龄不大于19岁的学生的交集例7 查询计算机科学系的学生与年龄不大于19岁的学生的差集例8 查询选修课程C1的学生集合与选修课程C2的学生集合的交集例9 查询选修课程C1的学生集合与选修课程C2的学生集合的差集4 实验步骤 将查询需求用SQL语言表示:在SQL Server查询分析器的输入区中输入SQL查询语句:设置查询分析器的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。 5 实验结果a) 求学生的总人数select count(wxl_xh

18、) penple from Wangxl_Studentb) 求选修了课程的学生人数select count( distinct wxl_xh) penple from Wangxl_cjdjc) 求课程和选修了该课程的学生人数select wxl_kch ,count( wxl_xh) penple from Wangxl_cjdjgroup by wxl_kchd) 求选修超过3门课的学生学号select wxl_xh from Wangxl_cjdjgroup by wxl_xhhaving count(wxl_kch)3e) 查询计算机科学系的学生及年龄不大于19岁的学生select

19、* from Wangxl_Studentwhere wxl_xi=CS or wxl_nl=19f) 查询计算机科学系的学生与年龄不大于19岁的学生的交集select * from Wangxl_Studentwhere wxl_xi=CS and wxl_nl19h) 查询选修课程C1的学生集合与选修课程C2的学生集合的交集select Wangxl_Student.* from Wangxl_Student,Wangxl_cjdj C1,Wangxl_cjdj C2where C1.wxl_kch=C1and C2.wxl_kch=C2and C1.wxl_xh=C2.wxl_xh an

20、d Wangxl_Student.wxl_xh=C2.wxl_xhi) 查询选修课程C1的学生集合与选修课程C2的学生集合的差集select Wangxl_Student.* from Wangxl_Student,Wangxl_cjdj C1where C1.wxl_kch=C1and Wangxl_Student.wxl_xh=C1.wxl_xh and C1.wxl_xh not in(select wxl_xh from Wangxl_cjdj C3where wxl_kch=C2)6 实验体会本实验我学习了集合查询与统计查询。学会使用聚集函数,集合作等。集合算,差运算SQL中没有直接

21、提供,需要我们用其他方法来实现。总的说来,我觉得实验不难,很好操作。实验5 数据库的更新实验1 实验目的本实验的目的是要求学生熟练掌握使用SQL 和通过SQL Server企业管理器向数据库输入数据、修改数据和删除数据的操作。2 相关知识SQL Server提供了很多方法更新表中数据。以插入记录为例,可以使用INSERT语句、VALUES子句将特定值集合插入一行;可以使用数据库接口API(ADO、OLE DB、ODBC和DB-Library)中的函数进行数据插入等。本实验主要掌握INSERT、UPDATE和DELETE语句的基本用法。l 插入操作,其语句的一般格式为INSERTINTO tab

22、le_or_view (colum_list)VALUES (date_values);此语句是使date_values作为一行数据记录插入已命名的表或视图table_or_view中。Column_list是由逗号分隔的table_or_view的列名列表,用来指定为其提供数据的列。如果没有指定column_list,表或视图中的所有列都将接收数据。如果column_list没有为表或视图中的所有列命名,将在列表中没有命名的任何列中插入一个NULL值(或者在默认情况下为这些列定义的默认值)。在列的列表中没有指定的所有列都必须允许NULL值或者指定的默认值。否则SQL Server将返回一个错

23、误。l 修改操作语句的一般格式为UPDATE 表名SET =,=where ;其功能是修改指定表中满足WHERE子句条件的元组。其中SET子句用于指定修改方法,即用的值取代相应的属性列值。如果省略WHERE子句,则表示要修改表中的所有元组。l 删除语句的一般格式为DELETE FROM WHERE ;其功能是从指定表中删除满足WHERE子句条件的所有元组。如果省略WHERE子句,则表示要删除表中的所有元组,但表的定义仍在字典中。3 实验内容通过企业管理器,在学生选课数据库的学生、课程和选课3个表中各输入10条记录。要求记录不仅满足数据约束要求,还要有表间关联的记录。具体完成以下例题。将它们转换

24、为SQL语句表示,在学生选课库中实现其数据更新操作。例1 将一新学生记录(学号:95050;姓名:陈冬;性别:男;年龄:18;所在系:计算机科学系)插入学生表中。例2 插入一条选课记录(95020,C1)。例3 对每一个系,求学生的平均年龄,并把结果存入数据库。对于这道题,首先要在数据库中建立一个有两个属性列的新表,其中一列存放系名,另一列存放相应系的学生平均年龄。 CREATE TABLE Deptage(所在系 CHAR(20),平均年龄SMALLINT); 然后对数据库的学生表按所在系分组求平均年龄,再把所在系和平均年龄存入新表中。例4 将学生95001的年龄改为22岁。例5 将所有学生

25、的年龄增加一岁。 例6 将计算机科学系全体学生的成绩置零。例7 删除学号为95006的学生记录例8 删除所有的学生选课记录例9 删除计算机科学系所有学生的选课记录4 实验步骤 将查询需求用SQL语言表示;在SQL Server查询分析器的输入区中输入SQL查询语句;设置查询分析器的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。 5 实验结果a) 将一新学生记录(学号:95050;姓名:陈冬;性别:男;年龄:18;所在系:计算机科学系)插入学生表中。inser

26、tinto Wangxl_Student (wxl_xh,wxl_xm,wxl_xb,wxl_nl,wxl_xi)values (95050,陈冬,男,18,CS)b) 插入一条选课记录(95020,C1)。insertinto Wangxl_cjdj (wxl_xh,wxl_kch)values (95020,C1)c) 对每一个系,求学生的平均年龄,并把结果存入数据库。对于这道题,首先要在数据库中建立一个有两个属性列的新表,其中一列存放系名,另一列存放相应系的学生平均年龄。CREATE TABLE Deptage(所在系 CHAR(20),平均年龄SMALLINT);然后对数据库的学生表按

27、所在系分组求平均年龄,再把所在系和平均年龄存入新表中。CREATE TABLE Wangxl_Deptage(wxl_xi CHAR(20),wxl_avgnl SMALLINT)insertinto Wangxl_Deptage(wxl_xi,wxl_avgnl)select wxl_xi,avg(wxl_nl) wxl_avgnl from Wangxl_Studentgroup by wxl_xid) 将学生95001的年龄改为22岁。update Wangxl_Studentset wxl_nl=22where wxl_xh=95001e) 将所有学生的年龄增加一岁。 update W

28、angxl_Studentset wxl_nl=wxl_nl+1f) 将计算机科学系全体学生的成绩置零。因先前有对成绩表约束,wxl_cj0and wxl_cj=100,所以此处先删去约束条件,再修改成绩。ALTER TABLE Wangxl_cjdjdrop Constraint CK_Wangxl_cj_wxl_c_7F60ED59update Wangxl_cjdjset wxl_cj=0where Wxl_xh in (select wxl_xhfrom Wangxl_Studentwhere Wangxl_Student.wxl_xi=CS)g) 删除学号为95006的学生记录因为在

29、成绩表中叶有盖学生记录,所以删除时必须一起删除。否则会引起数据库不一致问题。deletefrom Wangxl_cjdjwhere wxl_xh=95006 deletefrom Wangxl_Studentwhere wxl_xh=95006h) 删除所有的学生选课记录deletefrom Wangxl_cjdji) 删除计算机科学系所有学生的选课记录deletefrom Wangxl_cjdjwhere wxl_xh in(select wxl_xh from Wangxl_Studentwhere wxl_xi=CS)6 实验体会本实验我学习了对数据库的更新操作。包括插入数据,更改数据,

30、删除数据等。其中比较重要的是,像更改数据,可能之前你对数据库有简历果约束条件,你更改数据库必须满足约束条件,若不满足,则无法更改成功。只能你删除该约束或者修改这一约束条件后才能更改。然后是删除数据。删除数据时必须考虑表与表之间的参照完整性,如果你删除了一个表中的数据,而与他关联的其他表中数据没有删除,则会引起数据库数据不一致的错误。所以进行删除操作时必须有关参照表相关的元组一起删去,而且删除时必须注意操作的先后顺序。实验6 数据库的视图定义及维护实验1. 实验目的本实验的目的是使学生掌握视图的定义与维护操作,加深对视图在关系数据库中的作用的理解。 2. 相关知识视图是根据子模式建立的虚拟表。一

31、个视图可以由一个表构造,也可以由多个表构造。利用企业管理器和视图创建向导进行创建,查看和修改视图就如同对表的操作一样,非常容易。3. 实验内容本实验的主要内容是:1) 创建和删除视图2) 查询和更新视图具体完成以下例题。例1 建立信息系学生的视图例2 建立信息系学生的视图,并要求进行修改和插入操作时仍须保证该视图只有信息系的学生。例3 建立信息系选修了C1号课程的学生视图例4 建立信息系选修了C1号课程且成绩在90分以上的学生视图例5 定义一个反映学生出生年份的视图4. 实验步骤1 创建视图下面利用了SQL Server中提供的视图创建向导,来实现例3(建立信息系选修了1号课程的学生视图)。1) 打开企业管理器窗口,确认服务器,打开数据库文件夹,选中新视图所在的数据库(此例为学生选课数据库)。2) 选择菜单:工具|向导3) 在如图1所示的向导选择对话框中,单击数据库左边的“+”号,使之展开。选择“创建数据库向导”项,单击“确定”按键。 图1 向导选择对话框4) 进入创建视图向导后,首先出现的是欢迎使用创建视图向导对话框,其中简单介绍了该向导的功能。单击“下一步”后,就会出现选择数据库对话框。5) 在选择数据库对话框中,选择视图所属的数据库。本例的数据库为“学生选课”。单击“下一步”按键,则进入选择表对话框。6)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论