首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • 数据库理论与技术课程全套实验报告

    时间:2020-11-27 12:51:42 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:全套 理论 课程

     1

     数据库理论与技术课程实验报告

     学院:

     电子与信息工程学院 专业:计算机科学与技术 班级:

     计科 15-

     实验时间:

     2017 年 4 月 26 日

      学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

      备注:排名第一的学生为组长,负责此实验任务的组织和分配,负责实验报告的 整合和提交。

     指导教师签字:

      实验一 :SQL Server 2008

     及样本数据库的安装 一、 实验目的和要求 1、了解 SQL Server 2008 R2 的安装环境(包括硬件需求和软件需求),掌握 SQL Server 2008 R2 的安装过程。

     2、了解 SQL Server 2008 的管理工具(包括服务器的配置、注册、连接、启动、 关闭和 SQL Server 2008 常用工具等),掌握 SQL Server 2008 的对象资源管理 器和查询分析器的使用方法。

     3、了解 SQL Server Management Studio 登录时的身份验证,掌握 SQL Server 2008 联机丛书的使用方法,掌握 SQL Server 2008 数据库的附加和分离。

     4、要求学生在每次实验前,根据实验目的和内容设计出本次实验的具体步骤; 在实验过程中,要求独立进行程序调试和排错,学会使用在线帮助和运用理论知 识来分析和解决实验中遇到的问题,并记录实验的过程和结果;上机实验结束后, 根据实验模板的要求写出实验报告,并对实验过程进行分析和总结。

     二、

     实验内容与过程记录

     2

     1 1 、

     在网上下载

     SQL

     Server

     2008

     R2

     开发版( 32

     位或

     64

     位),在自己的计算机

      上安装

     SQL Server 2008

     R2 ,并写出安装的主要过程。

      在百度上键入“Microsoft SQL Server 2008 R 官方中文版”,选择 32 位 SQL Server 2008 R2 FULL_x86_CHS 或选择 64 位 SQL Server 2008 R2 FULL_x64_CHS 进行下载。究竟安装 32 位还是 64 位 SQL Server 2008 R2,取决于安装计算机 的操作系统是 32 位还是 64 位的,下面简述 SQL Server 2008 R2 安装的主要过 程。

     启动 SQL Server 2008 R2 开发版安装程序,一般是解压后直接运行 setup.exe,过一会将 出现“SQL Server 安装中心”对话框,如下图 1 所示。

      在“SQL Server 安装中心”对话框中,在左侧选择“安装”选项,并在右侧选择“全新 安装或向现有安装添加功能”选项,具体如下图 2 所示。

      接下来弹出“安装程序支持规则”对话框,主要监测安装能否顺利进行。若通过可以

     3

     点击确定,否则可以点击重新运行来检查,具体如下图 3 所示。

      在弹出“产品密钥”对话框中选择“输入产品密钥”的选项,输入产品密钥并点击下 一步,具体如下图 4 所示。

      在弹出“许可条款”对话框中勾选“我接受许可条款”,并点击下一步。在弹出“安装 程序支持文件”对话框中点击安装。在弹出“安装程序支持规则”对话框后,安装程序支持 规则可确定在安装时可能出现的问题,必须更正所有失败,否则安装程序将不能继续;若确 认没有失败项目,则可点击下一步。在弹出“设置角色”对话框中选中“SQL Server 功能 安装”,并点击下一步。在“功能选择”对话框中选择要安装的实例功能和所有共享功能, 选择好安装路径并点击下一步,具体如下图 5 所示。

     4

     在“安装规则”对话框中,安装程序正在运行规则以确定是否要阻止安装过程;若没有 问题,则点击下一步。在“实例配置”对话框中,一般选择默认实例,选择好安装路径并点 击下一步。在“磁盘空间要求”对话框中查看安装的 SQL Server 功能所需的磁盘摘要,并 点击下一步。在“服务器配置”对话框中,点击“对所有 SQL Server 服务使用相同的账户” 按钮,在弹出的“对所有 SQL Server 2008 R2 服务使用相同账户”对话框中,选择“NT AUTHORITY\NETWORK SERVICE”并按确定,返回到“服务器配置”对话框后点击下一步。在 “数据库引擎配置”对话框中,身份验证模式选择“混合模式”,为 SQL Server 系统管理员 (sa)指定密码,在指定 SQL Server 管理员框中点击“添加当前用户”,最后点击下一步, 具体如下图 6 所示。

      在“Analysis Service 配置”对话框中,在账户设置中点击“添加当前用户”,再点击 下一步。在“Reporting Service 配置”对话框中,选择“安装本机模式默认配置”,再点 击下一步。在“错误报告”对话框中,直接点击下一步。在“安装配置规则”对话框中,系 统自动检查有没有阻止安装过程,若没有阻止,则点击下一步。在“准备安装”对话框中, 直接点击下一步。

     在“安装进度”对话框中,需要耐心等待安装过程,具体如下图 7 所示。安装完成后将 会出现“完成”对话框,如下图 8 所示,最后点击完成,至此 SQL Server 2008 安装完毕。

     5

      2 2 、

     使用

     Windows

     身份验证 /SQL

     Server

     身份验证登录

     SQL

     Server

     Management

      Studio,

     熟悉

     SQL

     Server

     2008

     对象资源管理器和查询分析器的界面和使用

      方法。

     (1 1 )

     登录

     SQL

     Server

     Management

     Studio: 选择“开始”“所有程序”“Microsoft SQL Server 2008 R2” “SQL Server Management Studio”,打开如图 9 所示的“连接 到服务器”对话框。

      可以根据安装和设置情况,使用 SQL Server 身份验证或 Windows 身份验证 进行登录,在成功连接到数据库服务器后,其窗口基本结构如图 10 所示。

     6

     从上图可以看出,“SQL Server Management Studio”窗口中集成了多个管 理和开发工具,主要有“对象资源管理器”、“查询分析器”等管理窗口,要显示 或隐藏某管理工具的窗口,可以通过选择“查看”菜单中相应的命令来实现。

     (2)对象资源管理器:“对象资源管理器”窗口位于图 10 所示窗口的左侧,它主 要以树状结构来组织和管理数据库实例中的所有对象。依次展开根目录,用户可 选择某个数据库对象,并可以查看数据库对象的详细信息。

     在“对象资源管理器”窗口中,鼠标右键点击数据库服务器名称,在弹出的 菜单中选择“属性”,打开如图 11 所示的“服务器属性”窗口。在此窗口中,以 目录方式来显示和设置 SOL Server 2008 服务器属性。选择左窗格中的目录项, 可以在右窗格中查看和设置相应的信息。例如,选择“常规”选项可以查看 SQL Server 2005 的系统配置,也可以选择其他目录项查看或修改服务器设置,以提 高数据库服务器的性能。

      (3 3 )查询分析器:SQL Server 2008 的 SQL 查询分析器是一种功能强大的可以交互执行 SQL 语句和脚本的 GUI 管理与图形编程工具,它最基本的功能是编辑 T-SQL 命令,然后发送到服 务器并显示从服务器返回的结果。

     单击“Microsoft SQL Server Management Studio”窗口“标准”工具栏中的“新建 查询”按钮,在窗口中部将出现“查询分析器编辑”窗口。在其空白编辑区中输入 T-SQL 命令,单击“面板”工具栏中的“执行”按钮,T-SQL 命令的运行结果就显示在“查询分析 器”窗格的下面的“结果”窗格中,如下图 12 所示。

     7

     3 3 、

     通过百度来查询 “ SQL

     Server

     2008

     身份验证 ” 的设置,通过

     SQL

     Server

     2008

      帮助来查询 “ SELECT

     语句 ” 的语法。

     (1)在百度上键入“SQL Server 2008 身份验证”,将会出现如下图 13 所示 的界面,点击相关内容即可查看到 SQL Server 2008 身份验证的设置方法。

      (2)在 “Microsoft SQL Server Management Studio”窗口的菜单栏中,选择“帮助” “索引”后,出现如下图 14 所示的索引查找界面,在该图的左上部查找处输入 select, 在左下部选择 select 语句[SQL Server]即可查询到此语句的语法。

     4 4 、

     导入

     teaching

     案例数据库, , 掌握用户数据库的附加和分离方法。

     从另一台计算机的数据库服务器中把数据库文件拷贝到当前计算机的数据库服务器中, 这需要在这台计算机的数据库服务器中将要拷贝的数据库文件先做“分离”操作,然后再在 当前计算机的数据库服务器中做“附加”操作。反过来的话,操作过程也一样。但必须注意:

     已经附加在数据库服务器上的数据库文件,在没有经过分离操作的情况下是不能进行拷贝操 作的。

     (1)在 SQL Server Management Studio 登录成功情况下,在“对象资源管理器”窗口 中展开根目录,鼠标右键单击“数据库”文件夹中的某个数据库(如:“teaching”),在弹 出的菜单中选择“任务”,再在弹出的菜单中选择“分离”来打开如下图 15 所示的“分离数

     8

     据库”窗口,并点击“确定”按钮即可。

      (2)在 SQL Server Management Studio 登录成功情况下,在“对象资源管理器”窗口 中展开根目录,鼠标右键单击“数据库”,在弹出的菜单中选择“附加”来打开如下图 16 所示的“ 附加数据库” 窗口, 在此图中间点击“ 添加 ”, 在数据库文件目录中选择 “Teaching_Data.MDF”文件后点击“确定”按钮。在回到图 16 后,点击“确定”按钮即可。

     三、 实验分析和总结 自述

     四、 实验任务分配和贡献情况 (注意:每个组员必须分开书写,组长分配每个组员的贡献百分比)

     自述

     1

     宁波工程学院 数据库理论与技术课程实验报告

     学院:

     电子与信息工程学院 专业:计算机科学与技术 班级:

     计科 15-

     实验时间:

     2017 年 4 月 26/27 日

      学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

      备注:排名第一的学生为组长,负责此实验任务的组织和分配,负责实验报告的 整合和提交。

     指导教师签字:

      实验二:

     SQL Server

     的数据定义和更新 一、实验目的和要求 1、通过对 SQL Server 2008 的使用,加深对数据库、表、用户定义数据类型、 索引等数据库对象和常用系统存储过程的理解。

     2、理解数据定义语言 Create Database、Create Table 语句的格式和功能,掌 握这些语句的使用方法。

     3、理解数据操纵语言 Insert、Update、Delete 语句的格式和功能,掌握这些语 句的使用方法。

     4、要求学生在每次实验前,根据实验目的和内容设计出本次实验的具体步骤; 在实验过程中,要求独立进行程序调试和排错,学会使用在线帮助和运用理论知 识来分析和解决实验中遇到的问题,并记录实验的过程和结果;上机实验结束后, 根据实验模板的要求写出实验报告,并对实验过程进行分析和总结。

     二、实验内容与过程记录 1、在 SQL Server Management Studio 的查询分析器中使用 T-SQL 的 Create

     2

     Database 语句创建数据库 Library。

     (1)创建数据库代码:

     create database Library on primary (name=Library_data,filename= " e:\Library_data.mdf " , size=10mb,maxsize=50mb,filegrowth=20%) log on (name=Library_log,filename= " e:\Library_log.ldf " , size=5mb,maxsize=25mb,filegrowth=5mb) collate chinese_prc_ci_as go (2)代码运行结果:

     2、在 Library 数据库中,使用 T-SQL 的 Create Table 语句创建三张表 Books、 Readers 和 L_R,其中:

     Books(bookid,classid,bookname,author,price,pubcompany,csl)

     字段说明:bookid-图书编号,classid-分类号,bookname-图书名称,author -作者,price-单价,pubcompany-出版社,csl-藏书量 Readers(rno,rname,rsex,spet,dept,bday)

     字段说明:rno-读者编号,rname-读者姓名,rsex-性别,spet-专业,dept -系别,bday-出生日期 L_R (rno,bookid,lenddate,limitdate,returndate,fine)

     字段说明:rno-读者编号,bookid-图书编号,lenddate-借书时间,limitdate

     3

     -限定还书日期,returndate-还书时间,fine-罚金 要求:在三张表创建完成后,再为每张表设置主键码(以下代码仅说明其使用方 法)。

     (1)创建表 Books 和设置主键码 use library go create table books (bookid char(8) not null, classid char(5) not null, bookname varchar(80) not null, author varchar(30) null, price money null, pubcompany varchar(50) null, csl int null) go alter table books add constraint pk_books primary key(bookid) 代码运行结果:

     (2)创建表 Readers 和设置主键码 use library go create table readers (rno char(7) not null,

     4

     rname varchar(16) not null, rsex char(2) null, spet varchar(30) null, dept varchar(30) null, bday smalldatetime null) go alter table readers add constraint pk_readers primary key(rno) 代码运行结果:

     (3)创建表 L_R 和设置主键码 use library go create table L_R (rno char(7) not null, bookid char(8) not null, lenddate smalldatetime null, limitdate smalldatetime null, returndate smalldatetime null, fine money null) go alter table L_R add constraint pk_L_R primary key(rno,bookid)

     代码运行结果:

     5

      3、在建好的三张表 Books、Readers 和 L_R 中,利用对象资源管理器分别输入 6 条、6 条和 10 条记录。

     在对象资源管理器中展开“数据库”,选中 library 数据库,展开此数据库 及下属的表,选择 dbo.books 或 dbo.Readers 或 dbo.L_R,右击此表并在弹出的 菜单中选择“编辑前 200 行”,出现下图的界面后就可输入或修改此表的内容, 最后点击关闭按钮即可保存。

     (1)表 books 记录如下:

     6

     (2)表 readers 记录如下:

     (3)表 L_R 记录如下:

     4、在 Library 数据库中,用 insert 语句向 Books、Readers 和 L_R 表分别添加 一个新的记录;将某位读者(rno)借的某本图书(bookid)的限定还书日期 (limitdate)延长一个月,并且罚金(fine)清零;在 Books、Readers 和 L_R 表中分别删除一个记录。

     (1)操作代码如下:

     use Library

     7

     go insert into Books

     values("sn9014","jsj"," 数据库技术与设计 "," 范剑波",32.0," 西电出版社 ",10) insert into readers

     values("04211","张三","男","计算机","计算机系","1996-12-12") insert into L_R values("04211","sn9014","2016-04-01","2016-05-30",null,null) go Update L_R Set limitdate=limitdate+30,fine=0

     Where rno="04211" and bookid="sn9014" go delete from books where bookid="sn9014"

     delete from readers where rno="04211" delete from L_R Where rno="04211" and bookid="sn9014"

     go (2)运行结果如下:

     三、 实验分析和总结 自述 四、实验任务分配和贡献情况 (注意:每个组员必须分开书写,组长分配每个组员的贡献百分比)

     自述

     1

     宁波工程学院 数据库理论与技术课程实验报告

     学院:

     电子与信息工程学院 专业:计算机科学与技术 班级:

     计科 15-

     实验时间:

     2017 年 5 月 3/4 日

      学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

      备注:排名第一的学生为组长,负责此实验任务的组织和分配,负责实验报告的 整合和提交。

     指导教师签字:

      实验三:

     SQL Server

     的数据查询 一、实验目的和要求 1、理解数据操纵语言 Select 语句的语法和含义,掌握 Where 后查询选择的条件 和 Having 后分组查询条件的区别。

     2、深入理解数据基本查询、数据分组查询、多表连接查询和数据子查询(嵌套 子查询、相关子查询)的执行过程和注意事项,掌握它们的使用方法。

     3、要求学生在每次实验前,根据实验目的和内容设计出本次实验的具体步骤; 在实验过程中,要求独立进行程序调试和排错,学会使用在线帮助和运用理论知 识来分析和解决实验中遇到的问题,并记录实验的过程和结果;上机实验结束后, 根据实验模板的要求写出实验报告,并对实验过程进行分析和总结。

     二、实验内容与过程记录 1、在 SQL SERVER 2008 上附加 teaching 数据库,其中三张表的含义解释如下:

     学生表 dbo.student 有属性 sno、sname、spec、birthday、email、sex、scholarship, 分别代表学号、姓名、专业、生日、电子邮箱、性别、奖学金; 课程表 dbo.course 有属性 cno、cname、credit、teacher,分别代表课号、课 程名、学分、任课教师;

     2

     选课表 dbo.student_course 有属性 sno、cno、grade,分别代表学号、课号、 成绩。

     具体操作过程见实验一(略)。

     2、在 teaching 数据库中完成下列查询: (1)求选修’10101’号课程且成绩大于 80 分的所有男生的姓名; use teaching

     go select sname from student,student_course where student.sno=student_course.sno and sex="男" and cno="10101" and

     grade>80

     (2)求至少选修’10102’和’10104’两门课程的学生信息; use teaching

     go Select student.*

     from student

     Where sno in (select sno from student_course Where cno="10102" and sno in (select sno from student_course

      或者:

     use teaching

     go Select student.*

     from student

     Where sno in (select sc1.sno Where cno="10104")) from student_course sc1,student_course sc2

     Where sc1.cno="10102" and sc2.cno="10104" and sc1.sno=sc2.sno)

     3

     (3)求每个学生所选课程的平均成绩,并用查询结果来创建一个新的数据表 XSPJCJ(sno,sname,avggrade); use teaching

     go Select s.sno,sname,avg(grade) as avggrade

     Into XSPJCJ From student s,student_course sc

     Where s.sno=sc.sno Group by s.sno,sname

     4

     (4)求选修全部课程的所有学生的学号和姓名; use teaching

     go Select s.sno,sname From student s,student_course sc

     Where s.sno=sc.sno Group by s.sno,sname having count(*)=(select count(cno)

     From course)

      (5)求课程不及格学生的课号、课程名、学号、姓名及成绩; use teaching

     go Select

     c.cno,cname,s.sno,sname,grade

      From student s,student_course sc,course c Where s.sno=sc.sno and sc.cno=c.cno and grade<60

      (6)查询选修’Java 程序设计’课程的学生学号和姓名; use teaching

     go Select s.sno,sname

     5

     From student s,student_course sc,course c Where s.sno=sc.sno and sc.cno=c.cno and cname="Java 程序设计"

     (7)查询所有低于学生选课平均成绩的学生情况; use teaching

     go Select distinct s.* From student s,student_course sc

     Where s.sno=sc.sno and grade< (select avg(grade) from student_course)

      (8)检索’信管’专业的学生信息,包括学号、姓名、性别; use teaching

     go select sno,sname,sex

     from student where spec="信管"

     6

     (9)检索’网络’专业且有课程成绩不及格(<60)的学生信息,包括学号、姓 名、课程名和分数; use teaching

     go select s.sno,sname,cname,grade from student s,student_course sc,course c where s.sno=sc.sno and sc.cno=c.cno and spec="网络" and grade<60

      (10)检索有学生成绩为满分(100 分)的课程的课程号、课程名和学分。

     use teaching

     go select distinct c.cno,cname,credit

     from student_course sc,course c where sc.cno=c.cno and grade=100

     7

     三、 实验分析和总结 自述 四、 实验任务分配和贡献情况

     (注意:每个组员必须分开书写,组长分配每个组员的贡献百分比)

     自述

     1

     宁波工程学院 数据库理论与技术课程实验报告

     学院:

     电子与信息工程学院 专业:计算机科学与技术 班级:

     计科 15-

     实验时间:

     2017 年 5 月 5 日

      学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

      备注:排名第一的学生为组长,负责此实验任务的组织和分配,负责实验报告的 整合和提交。

     指导教师签字:

      实验四:

     SQL Server

     的视图和函数 一、实验目的和要求 1、理解创建视图 Create view 语句的语句格式和功能,掌握视图创建三个选项 的含义。

     2、理解创建视图时的注意点,掌握视图的使用方法。

     3、理解常用内置函数的使用方法,掌握用户定义函数的使用方法。

     4、要求学生在每次实验前,根据实验目的和内容设计出本次实验的具体步骤; 在实验过程中,要求独立进行程序调试和排错,学会使用在线帮助和运用理论知 识来分析和解决实验中遇到的问题,并记录实验的过程和结果;上机实验结束后, 根据实验模板的要求写出实验报告,并对实验过程进行分析和总结。

     二、实验内容与过程记录 1、在 SQL SERVER 2008 上附加 teaching 数据库,其中三张表的含义解释如下:

     学生表 dbo.student 有属性 sno、sname、spec、birthday、email、sex、scholarship, 分别代表学号、姓名、专业、生日、电子邮箱、性别、奖学金; 课程表 dbo.course 有属性 cno、cname、credit、teacher,分别代表课号、课 程名、学分、任课教师;

     2

     选课表 dbo.student_course 有属性 sno、cno、grade,分别代表学号、课号、 成绩。

     具体操作过程见实验一(略)。

     2、在 teaching 数据库中创建下列视图: (1)将学生的学号、姓名及他的平均成绩定义为一个视图 V1; use teaching

     go Create view V1 As Select s.sno,sname,avg(grade) as avg_grade

     From student s,student_course sc Where s.sno=sc.sno

     Group by s.sno,sname go

      (2)由(1)建立的视图是否可更新?请说明理由; 由(1)建立的视图不可更新。因为在一般情况下,只有行列子集视图才能 更新,而由(1)建立的视图不仅用到分组,而且还有 avg 函数,所以不能更新。

     (3)将没有一门课程成绩在 80 分以下的所有学生的信息(包括学号、姓名和专 业)定义为一个视图 V3; use teaching

     go Create view V3 As select s.sno,sname,spec from student s,student_course sc

     where s.sno=sc.sno group by s.sno,sname,spec having MIN(grade)>=80

     go

     3

     (4)将获得奖学金(奖学金不为 0)的同学的奖学金数量变为原来的 2 倍,并 将这些学生的信息定义为一个视图 V4; use teaching

     go Create view V4 As select sno,sname,spec,birthday,email,sex,scholarship*2 as

     scholarship from student where scholarship>0

     go

      (5)将学生成绩得过满分(100 分)的课程(包括课号、课程名和学分)定义为 一个视图 V5; use teaching

     go create view V5 as select distinct c.cno,cname,credit

     from student_course sc,course c

     where sc.cno=c.cno and grade=100 go

     (6)将三张表 student、student_course、dbo.course 连接操作定义为一个视 图 V6,并根据此视图来查询选修了’数据库技术与设计’课程的所有学生的学 号、姓名和成绩,并按成绩的降序排列。

     use teaching

     go create view V6 as select s.sno,sname,spec,birthday,email,sex,scholarship,c.cno,cname,

     credit,teacher,grade from student s,student_course sc,course c

     4

     where s.sno=sc.sno and sc.cno=c.cno

     go select sno,sname,grade

     from V6 where cname="数据库技术与设计" order by grade desc

      3、在 teaching 数据库中创建用户定义函数:

     (1)求圆面积用户定义函数的创建 use teaching

     go create function AREA(@R float)

     returns float as begin set @R=3.1415926*@R*@R

     return @R end

      (2)求圆面积用户定义函数的调用 Select dbo.AREA(3.5) //调用函数并显示结果

     或:exec dbo.AREA 3.5 // 调用函数但不显示结果

     5

      (3)求圆面积用户定义函数的删除 Drop function AREA

      三、 实验分析和总结 自述 四、 实验任务分配和贡献情况 (注意:每个组员必须分开书写,组长分配每个组员的贡献百分比)

     自述

     1

     宁波工程学院 数据库理论与技术课程实验报告

     学院:

     电子与信息工程学院 专业:计算机科学与技术 班级:

     计科 15-

     实验时间:

     2017 年 5 月 10 日

      学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

      备注:排名第一的学生为组长,负责此实验任务的组织和分配,负责实验报告的 整合和提交。

     指导教师签字:

      实验五:

     SQL Server

     的综合练习

      一、实验目的和要求 1、巩固并掌握数据定义语言的使用,正确认识创建数据库和数据表语句的作用, 进一步理解数据类型和各类约束对实现数据完整性的重要性; 2、巩固并掌握数据操纵语言的使用,正确认识数据查询和数据更新语句的作用, 熟练掌握数据查询语句的使用; 3、巩固并掌握创建视图语句的格式和功能,理解视图创建三个选项的含义,熟 练掌握视图的一般应用。

     4、要求学生在每次实验前,根据实验目的和内容设计出本次实验的具体步骤; 在实验过程中,要求独立进行程序调试和排错,学会使用在线帮助和运用理论知 识来分析和解决实验中遇到的问题,并记录实验的过程和结果;上机实验结束后, 根据实验模板的要求写出实验报告,并对实验过程进行分析和总结。

     二、实验内容与过程记录 某仓储超市采用 POS(Point of Sale)收银机负责前台的销售收款,为及 时掌握销售信息,并依此指导进货,拟建立商品进、销、存数据库信息管理系统。

     2

     经过系统需求分析、概念结构设计和逻辑结构设计,可以简化得到如下一组关系 模式(其中 表示主键, 表示外键):

     积分卡(用户编号,用户名,累积消费金额,积分点)

     销售详单(销售流水号,商品编码,数量,金额,用户编号,收银员,时间)

     销售日汇总(日期,商品编码,数量)

     存货表(商品编码,数量)

     进货表(送货号码,商品编码,数量,日期)

     商品(商品编码,商品名称,单价)

     请在 SQL Server 的查询分析器中按要求完成如下各题:

     1、创建名为 Supermarket 的数据库,数据文件名取为:Supermarket_data.mdf, 日志文件名取为:Supermarket_log.ldf。

     create database Supermarket

     on primary (name=Supermarket_data,filename="e:\Supermarket_data.mdf", size=10mb,maxsize=50mb,filegrowth=20%) log on

     (name=Supermarket_log,filename="e:\Supermarket_log.ldf", size=5mb,maxsize=25mb,filegrowth=5mb) collate chinese_prc_ci_as

     go

      2、按表 1-6 要求创建 6 张数据表,并为每张表设置主键码和外键码(若有的话)。

     表 1 Integralcard 积分卡信息表

     列名 数据类型 可否为空 说明 User_id char(10)

     Not null 用户编号 User_name varchar(20)

     Not null 用户名 Cumulative_consumption numeric(8,2)

     Not null 累计消费金额 Integral_point numeric(5,0)

     Not null 积分点 表 2 Salesdetails 销售详单信息表

     列名 数据类型 可否为空 说明

     3

      sales_id char(10)

     Not null 销售流水号 commodity_code char(10)

     Not null 商品编码 number numeric(4,0)

     null 数量 amount numeric(9,2)

     null 金额 User_id char(10)

     Not null 用户编号 cashier varchar(20)

     null 收银员 sd_time datetime null 时间

     表 3 Salesdatesummary 销售日汇总信息表

     列名 数据类型 可否为空 说明 sds_date datetime Not null 日期 commodity_code char(10)

     Not null 商品编码 number numeric(4,0)

     null 数量 表 4 Inventorylist 存货信息表

     列名 数据类型 可否为空 说明 commodity_code char(10)

     Not null 商品编码 number numeric(4,0)

     null 数量 表 5 Purchasetable 进货信息表

     列名 数据类型 可否为空 说明 delivery_number char(10)

     Not null 送货号码 commodity_code char(10)

     Not null 商品编码 number numeric(4,0)

     null 数量 pt_date datetime Not null 日期 表 6 Commodity 商品信息表

     列名 数据类型 可否为空 说明 commodity_code char(10)

     Not null 商品编码 commodity_name varchar(10)

     Not null 商品名称 commodity_price numeric(7,2)

     Not null 商品单价 (1)创建 Integralcard 积分卡信息表 use Supermarket

     go create table Integralcard

     (User_id char(10) not null,

     User_name varchar(20) not null, Cumulative_consumption numeric(8,2) not null,

     Integral_point numeric(5,0) not null )

     go alter table Integralcard

     4

     add constraint pk_Integralcard primary key(User_id) (2)创建 Salesdetails 销售详单信息表 use Supermarket

     go create table Salesdetails

     (sales_id char(10) not null,

     commodity_code char(10) not null,

     number numeric(4,0) null, amount numeric(9,2) null,

     User_id char(10) not null,

     cashier varchar(20) null,

     sd_time datetime null )

     go alter table Salesdetails add constraint pk_Salesdetails primary key(sales_id,commodity_code)

     alter table Salesdetails add constraint fk_Salesdetails foreign key(User_id) references

     Integralcard(User_id) (3)创建 Salesdatesummary 销售日汇总信息表 use Supermarket

     go create table Salesdatesummary

     (sds_date datetime not null,

     commodity_code char(10) not null,

     number numeric(4,0) null )

     go alter table Salesdatesummary

     add constraint pk_Salesdatesummary primary key(sds_date,commodity_code) (4)创建 Inventorylist 存货信息表 use Supermarket

     go create table Inventorylist

     (commodity_code char(10) not null,

     number numeric(4,0) null )

     go alter table Inventorylist

     add constraint pk_Inventorylist primary key(commodity_code) (5)创建 Purchasetable 进货信息表 use Supermarket

     5

     go create table Purchasetable

     (delivery_number char(10) not null,

     commodity_code char(10) not null,

     number numeric(4,0) null, pt_date datetime not null )

     go alter table Purchasetable

     add constraint pk_Purchasetable primary

     key(delivery_number,commodity_code) (6)创建 Commodity 商品信息表 use Supermarket

     go create table Commodity

      (commodity_code char(10) not null,

     commodity_name varchar(10) not null,

     commodity_price numeric(7,2) not null )

     go alter table Commodity

     add constraint pk_Commodity primary key(commodity_code)

      3、在建好的 6 张表中,利用对象资源管理器分别输入和更新若干条记录,要求主 键码不能为空和重复,外键码只能取另一张表的主键码之一。

     在对象资源管理器中展开“数据库”,选中 Supermarket 数据库,展开此数 据库及下属的表,选择一个数据表(如 dbo.Integralcard),右击此表并在弹出 的菜单中选择“编辑前 200 行”,即可输入或修改此表的内容,最后点击关闭按 钮即可保存。

     4、针对该数据库的 6 张表,完成如下 6 个查询请求:

     (1)查询用户编号为’yh23001011’的用户的用户名、累积消费金额和积分点;

     6

     use Supermarket

     go select user_name,cumulative_consumption,integral_point

     from Integralcard where USER_ID="yh23001011"

      (2)查询’张三’用户所购的全部商品的商品编码、商品名称、单价、数量和金 额; use Supermarket

     go select

     Salesdetails.commodity_code,commodity_name,commodity_price,number,amo

      unt from Integralcard,Salesdetails,Commodity where Integralcard.User_id=Salesdetails.User_id and

     Salesdetails.commodity_code=Commodity.commodity_code

     (3)查询 2016 年 4 月各类商品销售数量的排行榜,要求显示商品编号、商品名 称和数量(按降序排列); use Supermarket

     go select Salesdatesummary.commodity_code,commodity_name,sum(number) as

     sum_number from Salesdatesummary,Commodity where Salesdatesummary.commodity_code=Commodity.commodity_code and

     sds_date between "2016-04-01" and "2016-04-30" group by Salesdatesummary.commodity_code,commodity_name

     7

     order by sum_number desc

      (4)根据销售详单中的销售流水号’xs80020001’和商品编码’sp03004561’, 对存货表中的数量进行更新; use Supermarket

     go update Inventorylist set number=number-(select number from Salesdetails where Salesdetails.sales_id="xs80020001" and

     commodity_code="sp03004561") where commodity_code="sp03004561"

      (5)根据进货表中的送货号码’sh00012288’和商品编码’sp03006677’, 对 存货表中的数量进行更新; use Supermarket

     go update Inventorylist set number=number+(select number from Purchasetable where Purchasetable.delivery_number="sh00012288"

     and commodity_code="sp03006677") where commodity_code="sp03006677"

     8

     (6)统计 2016 年 4 月中每一天的销售金额,要求显示日期、销售金额(按降序 排列)。

     use Supermarket

     go select sds_date,sum(number*commodity_price) as day_comsumption

     from Salesdatesummary,Commodity where Salesdatesummary.commodity_code=Commodity.commodity_code and

     sds_date between "2016-04-01" and "2016-04-30" group by sds_date

     order by day_comsumption desc

      5、针对该数据库的 6 张表,定义如下 2 个视图:

     (1)定义一个商品存货的视图 Commodity_Inventorylist,属性包括商品编码、 商品名称、单价和数量; use Supermarket

     go create view Commodity_Inventorylist as select Commodity.commodity_code,commodity_name,

     commodity_price,number from Commodity,Inventorylist where Commodity.commodity_code=Inventorylist.commodity_code

      (2)定义一个用户购买商品的详细清单 User_Purchase_Details, 属性包括用 户编号、用户名、商品编码、商品名称、单价和数量。

     9

     use Supermarket

     go create view User_Purchase_Details as select Integralcard.User_id,User_name,Commodity.commodity_code,

     commodity_name,commodity_price,number from Integralcard,Salesdetails,Commodity where Integralcard.User_id=Salesdetails.User_id and

     Salesdetails.commodity_code=Commodity.commodity_code

     三、 实验分析和总结 自述

     四、 实验任务分配和贡献情况 (注意:每个组员必须分开书写,组长分配每个组员的贡献百分比)

     自述

     1

     宁波工程学院 数据库理论与技术课程实验报告

     学院:

     电子与信息工程学院 专业:计算机科学与技术 班级:

     计科 15-

     实验时间:

     2017 年 5 月 24 日

      学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

      备注:排名第一的学生为组长,负责此实验任务的组织和分配,负责实验报告的 整合和提交。

     指导教师签字:

      实验六:

     SQL Server

     的存储过程和触发器

      一、实验目的和要求 1、理解流程控制语言和游标,能读懂或编写基于流程控制语言的程序; 2、理解存储过程的概念和语句格式,掌握存储过程的用法; 3、理解触发器的概念和语句格式,掌握触发器的用法; 4、要求学生在每次实验前,根据实验目的和内容设计出本次实验的具体步骤; 在实验过程中,要求独立进行程序调试和排错,学会使用在线帮助和运用理论知 识来分析和解决实验中遇到的问题,并记录实验的过程和结果;上机实验结束后, 根据实验模板的要求写出实验报告,并对实验过程进行分析和总结。

     二、实验内容与过程记录 1、在 SQL SERVER 2008 上附加 teaching 数据库,其中三张表的含义解释如下:

     学生表 dbo.student 有属性 sno、sname、spec、birthday、email、sex、scholarship, 分别代表学号、姓名、专业、生日、电子邮箱、性别、奖学金; 课程表 dbo.course 有属性 cno、cname、credit、teacher,分别代表课号、课 程名、学分、任课教师;

     2

     选课表 dbo.student_course 有属性 sno、cno、grade,分别代表学号、课号、 成绩。

     具体操作过程见实验一(略)。

     2、已知 teaching 数据库的上述三张基本表,要求声明一个对选修‘数据库技术 与设计’课程的成绩可以进行更新的滚动游标,游标要处理的结果集应包含 5 个字段(s.sno、sname、sc.cno、cname、grade)。在打开游标前,先显示游标 要处理的结果集内容;打开游标后,依次提取结果集中的每条记录(注意:取数 后要检查操作的执行状态,若@@FETCH_STATUS 的值为 0,则表示取数成功,否则 失败),并将成绩加 5 分,此过程可以不断进行下去,直至取数完毕,最后关闭 游标和释放游标;为了验证结果的正确性,要求再次显示游标要处理的结果集内 容。

     (1)运行代码 Use teaching

     GO SELECT s.sno,sname,sc.cno,cname,grade FROM student s,student_course sc,course c WHERE s.sno=sc.sno and sc.cno=c.cno and cname="数据库技术与设计"

     DECLARE s_sc_c SCROLL CURSOR FOR SELECT s.sno,sname,sc.cno,cname,grade

     FROM student s,student_course sc,course c WHERE s.sno=sc.sno and sc.cno=c.cno and cname="数据库技术与设计" FOR UPDATE OF grade

     DECLARE @fetch_status INT

     OPEN s_sc_c FETCH FIRST FROM s_sc_c

     WHILE @@FETCH_STATUS=0 BEGIN UPDATE student_course SET grade=grade+5 WHERE CURRENT OF s_sc_c

     FETCH NEXT FROM s_sc_c END CLOSE s_sc_c

     DEALLOCATE s_sc_c

     GO SELECT s.sno,sname,sc.cno,cname,grade

     FROM student s,student_course sc,course c WHERE s.sno=sc.sno and sc.cno=c.cno and cname="数据库技术与设计" GO

     3

     (2)运行结果

      3、已知 teaching 数据库的上述三张基本表,要求创建以下存储过程:

     1)创建存储过程 SP1,要求查询’计算机’专业学生选课成绩的平均分、最高 分和最低分; (1)运行代码 Use teaching

     go create procedure SP1 as SELECT sc.cno as 课程号,cname as 课程名,avg(grade) as 平均成绩,MAX(grade)

     as 最高分,min(grade) as 最低分 FROM student s,student_course sc,course c WHERE s.sno=sc.sno and sc.cno=c.cno and spec="计算机"

     group by sc.cno,cname go (2)运行结果

     exec SP1

     4

     2)创建存储过程 SP2,要求统计各个专业的学生人数,并按统计结果的降序排 列; (1)运行代码 Use teaching

     GO create procedure SP2

     as SELECT spec as 专业名称,COUNT(*) as 专业人数 FROM student

     group by spec order by 专业人数 desc go (2)运行结果 exec SP2

      3)创建存储过程 SP3,要求查询至少选修二门课程的学生的学号、姓名、专业 和性别; (1)运行代码 Use teaching

     GO create procedure SP3 as SELECT s.sno,sname,spec,sex FROM student s,student_course sc

     WHERE s.sno=sc.sno group by s.sno,sname,spec,sex having COUNT(*)>=2

     go (2)运行结果

     exec SP3

     5

     4)创建存储过程 SP4,要求查询平均分在 80 分及以上(这里指定分数作为参数)

     课程的课程号和课程名。

     (1)运行代码 Use teaching

     GO create procedure SP4 @grade int as SELECT sc.cno,cname FROM student_course sc,course c

     WHERE sc.cno=c.cno group by sc.cno,cname having avg(grade)>=@grade

     go (2)运行结果

     exec SP4 @grade=80

      4、已知 teaching 数据库的 student_course 表,要求创建一个更新触发器 grade_update,当更新 grade 时能保证 0≤grade≤100。具体操作要求:

     1)检验 student_course 表中的 grade 值是否可以超范围修改?回答:可以修改 或不可以修改。

     6

     可以修改。

      2)编写 grade_update 触发器代码,并运行; (1)运行代码 use teaching

     go Create trigger grade_update On student_course

     For update As If update(grade) If (select count(*) from deleted,inserted where deleted.sno=inserted.sno and deleted.cno=inserted.cno

     and (inserted.grade<0 or inserted.grade>100))>0 begin print "***成绩更新超范围***"

     rollback transaction end go

     (2)运行结果

      3)再检验 student_course 表中的 grade 值是否可以超范围修改?回答:可以修 改或不可以修改。

     不可以修改。

     7

     4)用 drop trigger grade_update 删除此触发器,再检验 student_course 表中 的 grade 值是否可以超范围修改?回答:可以修改或不可以修改。

     可以修改。

      三、 实验分析和总结 自述

      四、 实验任务分配和贡献情况 (注意:每个组员必须分开书写,组长分配每个组员的贡献百分比)

     自述

     1

     宁波工程学院 数据库理论与技术课程实验报告

     学院:

     电子与信息工程学院 专业:计算机科学与技术 班级:

     计科 15-

     实验时间:

     2017 年 5 月 26 日

      学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

     学号 姓名 成绩

      备注:排名第一的学生为组长,负责此实验任务的组织和分配,负责实验报告的 整合和提交。

     指导教师签字:

      实验七:

     SQL Server

     的安全性和完整性 一、实验目的和要求 1、理解数据库安全性的内容,掌握使用 SQL Server 系统的视图技术和许可子系 统来实现数据库的安全性。

     2、理解数据库完整性的内容,掌握使用 SQL Server 系统的标识列、限制、规则、 声明性引用完整性和触发器来实现数据库的完整性; 3、要求学生在每次实验前,根据实验目的和内容设计出本次实验的具体步骤; 在实验过程中,要求独立进行程序调试和排错,学会使用在线帮助和运用理论知 识来分析和解决实验中遇到的问题,并记录实验的过程和结果;上机实验结束后, 根据实验模板的要求写出实验报告,并对实验过程进行分析和总结。

     二、实验内容与过程记录 1、在 SQL SERVER 2008 上附加 teaching 数据库,其中三张表的含义解释如下:

     学生表 dbo.student 有属性 sno、sname、spec、birthday、email、sex、scholarship, 分别代表学号、姓名、专业、生日、电子邮箱、性别、奖学金; 课程表 dbo.course 有属性 cno、cname、credit、teacher,分别代表课号、课

     2

     程名、学分、任课教师; 选课表 dbo.student_course 有属性 sno、cno、grade,分别代表学号、课号、 成绩。

     具体操作过程见实验一(略)。

     2、SQL Server 系统的安全性练习 1)视图技术可以使无权使用数据的用户不能接触他感兴趣的数据,请设计一个 只能查看每个学生平均成绩的视图 student_avg_grade(sno,sname,avg_grade); (1)视图代码创建 use teaching

     go create view student_avg_grade(sno,sname,avg_grade)

     as select s.sno,sname,avg(grade) from student s,student_course sc

     where s.sno=sc.sno group by s.sno,sname

     go (2)代码执行结果

     2)登录到 SQL Server Management Studio 后,先展开数据库服务器安全性登 录名,通过右键单击登录名,在新建登录名的对话框中创建登录名 S1;然后展 开数据库 teaching安全性用户,通过右键单击用户,在新建用户的对话框中 创建用户名 U1,并使数据库用户名 U1 与数据库服务器登录名 S1 相关联。

     (1)采用 SQL Server 身份验证,并用 sa 账户和密码登录到 SQL Server Management Studio 后,先展开数据库服务器安全性登录名,通过右键单击 登录名,在新建登录名的对话框中创建登录名 s1,创建登录名 s1 的对话框详见 下图:

     3

     (2)展开数据库 teaching安全性用户,通过右键单击用户,在新建用户的 对话框中创建用户名 u1,并使数据库用户名 u1 与数据库服务器登录名 s1 相关 联,创建用户名 u1 的对话...

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识