数据库技术与应用实践教程SQL Server2005.doc_第1页
数据库技术与应用实践教程SQL Server2005.doc_第2页
数据库技术与应用实践教程SQL Server2005.doc_第3页
数据库技术与应用实践教程SQL Server2005.doc_第4页
数据库技术与应用实践教程SQL Server2005.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

21第1部分 上机实验指导上机实验指导这一部分为SQL Server 2005的上机实验内容,包括12个实验,每个实验和课堂教学紧密配合,且由浅入深地安排实验内容,旨在使读者通过上机实践领会课堂学习内容,达到巩固与提高的目的。上机实验指导部分使用的数据库,如果没有特别指明,则为studentsdb数据库,该数据库从实验2开始创建。实验1 SQL Server 2005的安装及管理工具的使用1实验目的(1)了解SQL Server 2005安装对软、硬件的要求,掌握安装方法。(2)了解SQL Server的注册和配置方法。(3)了解SQL Server 2005包含的主要组件及其功能。(4)熟悉SQL Server 2005管理平台的界面及基本使用方法。(5)了解数据库及其对象。(6)了解在SQL Server管理平台中执行SQL语句的方法。2实验内容及步骤(1)根据软、硬件环境的要求,安装SQL Server 2005(在安装过程中,请选择安装示例数据库AdventureWorks)。(2)通过选择“开始”“程序”Microsoft SQL Server 2005“配置工具”SQL Server Configuration Manager菜单项,打开“SQL Server配置管理器”窗口,在界面左边的树目录中选择“SQL Server 2005 服务”,在右边的项列表区中选择SQL Server。并且通过该窗口“启动服务”和“停止服务”图标来启动和停止SQL Server服务。(3)通过“开始”“程序”Microsoft SQL Server 2005SQL Server Management Studio菜单项打开SQL Server管理平台。(4)在SQL Server管理平台中,注册服务器。查看本地已注册的SQL Server。查找网络上另一台计算机,并且注册该机上的SQL Server,注册时使用“Windows身份认证”或“SQL Server身份认证”的连接方式。(5)从SQL Server管理平台中删除网络SQL Server服务器。(6)在SQL Server管理平台的对象资源管理器中打开本地服务器的属性对话框,查看以下信息:产品名称、主机操作系统、产品的版本、操作平台、主机内存等。(7)利用SQL Server管理平台访问系统自带的AdventureWorks数据库。 以系统管理员身份登录到SQL Server管理平台。 在SQL Server管理平台的对象资源管理器窗口中找到AdventureWorks数据库并展开,查看该数据库的所有对象,如表、视图、存储过程、默认和规则等。 选择AdventureWorks数据库的“表”选项,在右窗格中将列出AdventureWorks数据库的所有表,选择雇员表HumanResources.Employee,右击鼠标,弹出快捷菜单,从中选择“打开表”菜单项,打开Employee表,查看其内容。(8)利用SQL Server管理平台的查询设计器窗口访问AdventureWorks数据库的表。 在SQL Server管理平台的对象资源管理器窗口中,选择AdventureWorks数据库结点,单击鼠标右键,在弹出的快捷菜单中选择“新建查询”命令,或者选择数据库后,单击工具栏的“新建查询”命令,打开查询设计器窗口。 在查询设计器窗口中,输入以下代码:SELECT * FROM HumanResources.Employee aWHERE a.Gender=MORDER BY a.Title 选择SQL Server管理平台的“查询”“分析”菜单项,或者单击常用工具栏上“验证SQL语法”按钮,查询设计器将对输入的代码进行语法分析,并由消息窗格给出分析结果报告。 选择SQL Server管理平台的“查询”“执行”菜单项,或者单击常用工具栏上“执行SQL”按钮,SQL Server将编译窗口中的代码,并在结果窗格中显示查询结果,如图1-1所示。图1-1 查询设计器窗口3实验思考(1)SQL Server管理平台的作用是什么?如何进入SQL Server管理平台?(2)SQL Server配置管理器的作用是什么?如何进入SQL Server配置管理器?(3)用几种不同的方法实现注册数据库服务器与对象资源管理器的连接。(4)查询设计器窗口的作用是什么?如何打开查询设计器窗口?(5)改变查询设计器的当前数据库使用什么方法?实验2 SQL Server数据库的管理1实验目的(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。(2)掌握使用SQL Server管理平台对数据库进行管理的方法。(3)掌握使用Transact-SQL语句对数据库进行管理的方法。2实验内容及步骤(1)在SQL Server管理平台中创建数据库。 运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。 右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为5MB。修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。(5)在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。(6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。(7)使用SQL Server管理平台将studb数据库的名称更改为student_db。(8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。(9)在SQL Server管理平台中删除studentsdb数据库。3实验思考(1)数据库中的日志文件是否属于某个文件组?(2)数据库中的主数据文件一定属于主文件组吗?(3)数据文件和日志文件可以在同一个文件组吗?为什么?(4)删除了数据库,其数据文件和日志文件是否已经删除?是否任何人都可以删除数据库?删除了的数据库还有可能恢复吗?(5)能够删除系统数据库吗?实验3 SQL Server数据表的管理1实验目的(1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE TABLE和ALTER TABLE创建和修改表的方法。(2)掌握在SQL Server管理平台中对表进行插入、修改和删除数据操作的方法。(3)掌握使用Transact-SQL语句对表进行插入、修改和删除数据操作的方法。(4)了解SQL Server的常用数据类型。2实验内容及步骤(1)启动SQL Server管理平台,在对象资源管理器中展开studentsdb数据库文件夹。(2)在studentsdb数据库中包含有数据表student_info、curriculum、grade,这些表的数据结构如图1-2至图1-4所示。图1-2 学生基本情况表student_info图1-3 课程信息表curriculum图1-4 学生成绩表grade(3)在SQL Server管理平台中创建student_info、curriculum表。(4)在SQL Server管理平台中,将student_info表的学号列设置为主键,非空。(5)使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表。(6)student_info、curriculum、grade表中的数据如图1-5至图1-7所示。图1-5 student_info的数据图1-6 curriculum的数据图1-7 grade的数据(7)在SQL Server管理平台中为student_info、curriculum、grade表添加数据。(8)使用Transact-SQL语句INSERT INTO.VALUES向studentsdb数据库的grade表插入数据:学号为0004,课程编号为0001,分数为80。(9)使用Transact-SQL语句ALTER TABLE修改curriculum表的“课程编号”列,使之为非空。(10)使用Transact-SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为real。(11)使用Transact-SQL语句ALTER TABLE修改student_info表的“姓名”列,使其列名为“学生姓名”,数据类型为varchar(10),非空。(12)分别使用SQL Server管理平台和Transact-SQL语句DELETE删除studentsdb数据库的grade表中学号为0004的成绩记录。DELETE grade WHERE 学号=0004(13)使用Transact-SQL语句UPDATE修改studentsdb数据库的grade表中学号为 0003、课程编号为0005、分数为90的成绩记录。UPDATE grade SET 分数= 90WHERE 学号=0003 AND 课程编号=0005(14)使用Transact-SQL语句ALTER.ADD为studentsdb数据库的grade表添加一个名为“备注”的数据列,其数据类型为VARCHAR(20)。ALTER TABLE grade ADD 备注 VARCHAR(20) NULL3实验思考(1)使用Transact-SQL语句删除在studentsdb数据库的grade表添加的“备注”数 据列。(2)在SQL Server管理平台中,studentsdb数据库的student_info表的数据输入时,如果输入相同学号的记录将出现什么现象?怎样避免该情况的发生?(3)已经打开的表能删除吗?(4)在SQL Server 2005中能将数据表中的字段名和其数据类型同时改变吗?实验4 数据查询1实验目的(1)掌握使用Transact-SQL的SELECT语句进行基本查询的方法。(2)掌握使用SELECT语句进行条件查询的方法。(3)掌握SELECT语句的GROUP BY、ORDER BY以及UNION子句的作用和使用 方法。(4)掌握嵌套查询的方法。(5)掌握连接查询的操作方法。2实验内容及步骤(1)在studentsdb数据库中,使用下列SQL语句将输出什么? SELECT COUNT(*) FROM grade SELECT SUBSTRING(姓名,1,2) FROM student_info SELECT UPPER(kelly) SELECT Replicate(kelly,3) SELECT SQRT(分数) FROM grade WHERE 分数=85 SELECT 2,3,POWER(2,3) SELECT YEAR(GETDATE(),MONTH(GETDATE(),DAY(GETDATE()(2)在studentsdb数据库中使用SELECT语句进行基本查询。 在student_info表中,查询每个学生的学号、姓名、出生日期信息。 查询学号为0002 的学生的姓名和家庭住址。 找出所有男同学的学号和姓名。(3)使用SELECT语句进行条件查询。 在grade表中查找分数在8090范围内的学生的学号和分数。 在grade表中查询课程编号为0003的学生的平均分。 在grade表中查询学习各门课程的人数。 将学生按出生日期由大到小排序。 查询所有姓“张”的学生的学号和姓名。SELECT 学号, 姓名 FROM student_info WHERE 姓名 LIKE 张%(4)对student_info表,按性别顺序列出学生的学号、姓名、性别、出生日期及家庭住址,性别相同的按学号由小到大排序。(5)使用GROUP BY查询子句列出各个学生的平均成绩。(6)使用UNION运算符将student_info表中姓“张”的学生的学号、姓名与curriculum表的课程编号、课程名称返回在一个表中,且列名为u_编号、u_名称,如图1-8所示。图1-8 联合查询结果集(7)嵌套查询。 在student_info表中查找与“刘卫平”性别相同的所有学生的姓名、出生日期。SELECT 姓名,出生日期FROM student_infoWHERE 性别 =(SELECT 性别FROM student_infoWHERE 姓名=刘卫平) 使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。SELECT 学号,姓名,性别FROM student_infoWHERE student_info.学号 IN(SELECT 学号FROM gradeWHERE 课程编号 IN (0002,0005) 列出学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。SELECT 课程编号,分数 FROM gradeWHERE 学号=0001 AND 分数ANY (SELECT 分数 FROM gradeWHERE 学号=0002) 列出学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。(8)连接查询。 查询分数在8090范围内的学生的学号、姓名、分数。SELECT student_info.学号,姓名,分数FROM student_info,gradeWHERE student_info.学号=grade.学号 AND 分数 BETWEEN 80 AND 90 查询学习“C语言程序设计”课程的学生的学号、姓名、分数。SELECT student_info.学号,姓名,分数FROM student_infoINNER JOIN grade ON student_info.学号=grade.学号INNER JOIN curriculum ON 课程名称=C语言程序设计 查询所有男同学的选课情况,要求列出学号、姓名、课程名称、分数。 查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程编号、分数。 查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。使用左外连接。 为grade表添加数据行: 学号为0004、课程编号为0006、分数为76。查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。使用右外连接。3实验思考(1)查询所有没有选修课程的学生信息,返回结果包括学号、姓名、性别。(2)在student_info表和grade表之间实现交叉连接。(3)查询每个学生的所选课程的成绩,并列出学号生成分组汇总行(总成绩)和明细行(各课成绩)。使用SELECT语句的COMPUTE选项。(4)在查询语句中SELECT、FROM和WHERE选项分别实现什么运算?(5)在查询的FROM子句中实现表与表之间的连接有哪几种方式?对应的关键字分 别是什么?实验5 索引和视图1实验目的(1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引的方法。(2)掌握使用SQL Server管理平台查看索引的方法。(3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引的 方法。(4)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。(5)了解索引和视图更名的系统存储过程sp_rename的用法。(6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。(7)了解删除视图的Transact-SQL语句DROP VIEW的用法。2实验内容及步骤(1)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。(2)使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。(3)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。CREATE INDEX grade_index ON grade(分数)(4)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。CREATE UNIQUE INDEX grade_id_c_ind ON grade(学号,课程编号)(5)分别使用SQL Server管理平台和系统存储过程sp_helpindex查看grade表和student_info表上的索引信息。sp_helpindex grade(6)使用SQL Server管理平台对grade表创建一个聚集索引和唯一索引。(7)使用系统存储过程sp_rename将索引grade_index更名为grade_ind。sp_rename grade.grade_index,grade_ind,INDEX(8)分别使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引grade_ind。再次使用系统存储过程sp_helpindex查看grade表上的索引信息。DROP INDEX grade.grade_ind(9)在studentsdb数据库中,以student_info表为基础,使用SQL Server管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。(10)在studentsdb数据库中,使用Transact-SQL语句CREATE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。(11)基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g查询学号为0001的学生的所有课程与成绩,如图1-9所示。图1-9 学号为0001的学生的视图信息(12)分别使用SQL Server管理平台和Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。(13)使用Transact-SQL语句ALTER VIEW修改视图v_stu_i,使其具有列名学号、姓名、性别。ALTER VIEW v_stu_i(学号,姓名,性别)AS SELECT 学号,姓名,性别 FROM student_info(14)使用系统存储过程sp_rename将视图v_stu_i更名为v_stu_info。sp_rename v_stu_i,v_stu_info(15)利用视图v_stu_i为student_info表添加一行数据:学号为0015、姓名为陈婷、性别为女。(16)利用视图v_stu_i删除学号为0015的学生记录。(17)利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。(18)使用Transact-SQL语句DROP VIEW删除视图v_stu_c和v_stu_g。3实验思考(1)是否可以通过视图v_stu_g修改grade表中学号列数据?(2)比较视图和基表操作表中数据的异同。(3)可更新视图必须满足哪些条件?(4)什么是索引?SQL Server 2005中有两种形式的索引:聚集索引和非聚集索引,简单叙述它们的区别?(5)能否在视图上创建索引?实验6 数据完整性1实验目的(1)掌握Transact-SQL语句(CREATE RULE、DROP RULE)创建和删除规则的方法。(2)掌握系统存储过程sp_bindrule、sp_unbindrule绑定和解除绑定规则的操作方法,以及sp_helptext查询规则信息、sp_rename更名规则的方法。(3)掌握Transact-SQL语句(CREATE DEFAULT、DROP DEFAULT)创建和删除默认对象的方法。(4)掌握系统存储过程sp_bindefault、sp_unbindefault绑定和解除绑定默认对象的操作 方法,以及sp_helptext查询默认对象信息。(5)掌握SQL Server管理平台和Transact-SQL语句(CREATE TABLE、ALTER TABLE)定义和删除约束的方法,并了解约束的类型。2实验内容及步骤(1)为studentsdb数据库创建一个规则,限制所输入的数据为7位09的数字。 复制student_info表命名为stu_phone,在stu_phone表中插入一列,列名为“电话号码”。完成以下代码实现该操作。SELECT * INTO stu_phone FROM student_infoALTER TABLE stu_phone ADD CHAR(7) NULLstu_phone表结构如图1-10所示。图1-10 stu_phone表结构 创建一个规则phone_rule,限制所输入的数据为7位09的数字。实现该规则的代码为CREATE phone_ruleASphone LIKE 0-90-90-90-90-90-90-9 使用系统存储过程sp_bindrule将phone_rule规则绑定到stu_phone表的“电话号码”列上。实现该操作的代码为sp_bindrule ,stu_phone.电话号码 输入以下代码,进行一次插入操作: INSERT INTO stu_phone(学号,姓名,电话号码) VALUES(0009,王国强,1234yyy)产生以下出错信息: 消息513,级别16,状态0,第1 行列的插入或更新与先前的CREATE RULE 语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库studentsdb,表dbo.stu_phone,列电话号码。语句已终止。试分析: 为什么会产生该出错信息?如果要实现插入操作,应修改INSERT INTO语句中的哪个值?phone_rule规则能否对其他操作(如DELETE)进行规则检查?(2)创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只能是“男”或“女”。(3)使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。(4)删除stu_s_rule规则。stu_s_rule(stusex_rule更名后规则名)是否仍然绑定在stu_phone表的“性别”列上?应如何操作才能删除它?(5)在studentdb数据库中,建立日期、货币和字符等数据类型的默认对象。 在查询设计器中,完成以下代码,创建默认对象df_date、df_char、df_money。-创建日期型默认对象df_dateCREATE df_dateAS 2009-4-12GO-创建字符型默认对象df_charCREATE DEFAULT df_char unknownGO-创建货币型默认对象df_moneyCREATE DEFAULT AS $100GO 输入以下代码,在studentsdb数据库中创建stu_fee数据表。CREATE TABLE stu_fee (学号 char(10) NOT NULL, 姓名 char(8) NOT NULL, 学费 money, 交费日期 datetime, 电话号码 char(7)表stu_fee的数据结构如图1-11所示。图1-11 stu_fee的数据结构 使用系统存储过程sp_bindefault将默认对象df_money、df_date、df_char分别绑定在stu_fee表的“学费”、“交费日期”、“电话号码”列上。 df_money,stu_fee.学费GOsp_bindefault ,stu_fee.交费日期GOsp_bindefault df_char,stu_fee.电话号码GO 输入以下代码,在stu_fee表进行插入操作: INSERT INTO stu_fee(学号,姓名) VALUES(0001,刘卫平)INSERT INTO stu_fee(学号,姓名,学费) VALUES(0001,张卫民,$120)INSERT INTO stu_fee(学号,姓名,学费,交费日期) VALUES(0001,马东,$110,2006-5-12)分析stu_fee表中插入记录的各列的值是什么? 完成以下代码,解除默认对象df_char的绑定,并删除之。 stu_fee.电话号码 DEFAULT df_char按同样的方式,删除默认对象df_date、df_money。(6)为student_info表添加一列,命名为“院系”,创建一个默认对象stu_d_df,将其绑定到student_info表的“院系”列上,使其默认值为“信息院”,对student_info表进行插入操作,操作完成后,删除该默认对象。(7)在studentsdb数据库中用CREATE TABLE语句创建表stu_con,并同时创建约束。 创建表的同时创建约束。表结构如图1-12所示。图1-12 要创建的表的结构约束要求如下: 将学号设置为主键(PRIMARY KEY),主键名为pk_sid。 为姓名添加唯一约束(UNIQUE),约束名为uk_name。 为性别添加默认约束(DEFAULT),默认名称为df_sex,其值为“男”。 为出生日期添加属性值约束(CHECK),约束名为ck_bday,其检查条件为:出生日期1988-1-1。 在stu_con表中插入如表1-1所示的数据记录。 表1-1 在stu_con表中插入的数据学号姓名性别出生日期家庭住址0009张小东1989-4-60010李梅女1983-8-50011王强1988-9-100012王强1989-6-3分析各约束在插入记录时所起的作用,查看插入记录后表中数据与所插入的数据是否一致? 使用ALTER TABLE语句的DROP CONSTRAINT参数项在查询设计器中删除为stu_con表所建的约束。(8)用SQL Server管理平台完成实验内容7的所有设置。(9)在查询设计器中,为studentsdb数据库的grade表添加外键约束(FOREIGN KEY),要求将“学号”设置为外键,参照表为student_info,外键名称为fk_sid。 使用系统存储过程sp_help查看grade表的外键信息。 在grade表中插入一条记录,学号为0100,课程编号为0001,分数为78。观察SQL Server会做何处理,为什么?如何解决所产生的问题? 使用查询设计器删除grade表的外键fk_sid。3实验思考(1)在SQL Server 2005中,可采用哪些方法实现数据完整性?(2)比较默认对象和默认约束的异同。(3)可以使用SQL Server管理平台创建规则和默认值对象吗?(4)在数据库中建立的规则不绑定到数据表的列上会起作用吗?为什么?(5)请说明唯一约束和主键约束之间的联系和区别。实验7 Transact-SQL程序设计1实验目的(1)掌握Transact-SQL的数据类型、常量变量、表达式等的概念和使用方法。(2)掌握程序中注释的基本概念和使用方法。(3)掌握程序中的流程控制语句的使用方法。(4)掌握SQL Server 2005中常用函数的用法。(5)掌握游标的概念和声明方法,以及使用游标进行数据的查询、修改、删除操作等。2实验内容及步骤(1)选择studentsdb数据库,打开新建查询编辑器,输入以下代码。DECLARE stu_name varchar(10)SELECT stu_name=姓名FROM student_infoWHERE 姓名 LIKE 张%SELECT stu_name观察显示的结果,与student_info表中数据进行比较,stu_name赋值的是SELECT结果集中的哪个数据?(2)定义int型局部变量grademax、grademin、gradesum,在grade表中查找最高分、最低分和总分,分别赋给grademax、grademin和gradesum,并显示。DECLARE grademax int,grademin int,gradesum intSELECT grademax=max(分数),grademin= min(分数),gradesum=sum(分数)FROM gradeSELECT grademax,grademin,gradesum(3)使用SET命令将查询结果集记录数目赋值给int型局部变量row。给下面代码中的划线处填上适当的内容,以完成上述操作。DECLARE rows SET =(SELECT COUNT(*) FROM grade) rows -显示rows的值(4)以下代码在curriculum表中插入新记录: DECLARE intCId int,intErrorCode intINSERT INTO curriculum(课程编号,课程名称,学分)VALUES(0006,VB程序设计,2) SELECT intCId=identity,intErrorCode=errorSELECT intCId,intErrorCode将该代码段连续执行两次,观察两次显示的信息及curriculum表中数据的变化,为什么前后两次执行时显示的信息会不同?(5)在studentsdb数据库的student_info表中,以“性别”为分组条件,分别统计男生和女生人数。(6)在grade表中,使用适当函数找出“高等数学”课程的最高分、最低分和平均分。(7)定义一个datetime型局部变量studate,以存储当前日期。计算student_info表中的学生的年龄,并显示学生的姓名、年龄。在以下代码的划线部分填入适当内容,以实现上述功能。DECLARE datetimeSET studate= -给studate赋值为当前日期SELECT 姓名, (studate)-year(出生日期) AS 年龄FROM student_info(8)运行以下代码,写出运行结果。DECLARE a int,b intSET a=168SET b=73SELECT a & b,a|b,ab(9)在局部变量stu_id中存储了学号值。编写代码查询学号为0001的学生的各科平均成绩,如果平均分60,则显示“你的成绩及格了,恭贺你 !”,否则显示“你的成绩不及格”。IF (SELECT AVG(分数) FROM grade WHERE 学号=0001)60)PRINT 你的成绩不及格ELSEPRINT 你的成绩及格了,恭贺你!(10)运行以下代码段,写出运行的结果。DECLARE counter intSET counter=1WHILE counter=90 THEN AWHEN 分数=80 AND 分数=70 AND 分数=60 AND 分数70 THEN ELSE EENDFROM grade(12)计算grade表的分数列的平均值。如果小于80,则分数增加其值的5%;如果分数的最高值超过95,则终止该操作。在以下代码划线处填入适当的内容以完成上述功能。WHILE (SELECT (分数) FROM grade) BREAKELSE END(13)编写代码计算并显示n=1+2+3+20。(14)编写代码计算并显示1100之间的所有完全平方数。例如,81=92,则称81为完全平方数。(15)计算1100以内的所有素数。(16)在studentsdb数据库中,使用游标查询数据。 打开查询设计器,声明一个stu_cursor游标,要求返回student_info表中性别为“男”的学生记录,且该游标允许前后滚动和修改。 打开stu_cursor游标。 获取并显示所有数据。 关闭该游标。(17)使用游标修改数据。 打开stu_cursor游标。 将姓马的男同学的出生日期的年份加1。 关闭stu_cursor游标。(18)声明游标变量stu_c,使之关联stu_cursor游标,利用stu_c查询年龄在69月份出生的学生信息。(19)使用系统存储过程sp_cursor_list显示在当前作用域内的游标及其属性。3实验思考(1)Transact-SQL语言的运算符主要有哪些?(2)流程控制语句与其他编程语言提供的语句有何差别?(3)区分局部变量与全局变量的不同,思考全局变量的用处。(4)什么函数能将字符串前和尾的空格去掉?(5)使用什么语句可以打开游标?打开成功后,游标指针指向结果集的什么位置?实验8 存储过程和触发器1实验目的(1)掌握通过SQL Server管理平台和Transact-SQL语句CREATE PROCEDURE创建存储过程的方法和步骤。(2)掌握使用Transact-SQL语句EXECUTE执行存储过程的方法。(3)掌握通过SQL Server管理平台和Transact-SQL语句ALTER PROCEDURE修改存储过程的方法。(4)掌握通过SQL Server管理平台和Transact-SQL语句DROP PROCEDURE删除存储过程的方法。(5)掌握通过SQL Server管理平台和Transact-SQL语句CREATE TRIGGER创建触发器的方法和步骤。(6)掌握引发触发器的方法。(7)掌握使用SQL Server管理平台或Transact-SQL语句修改和删除触发器。(8)掌握事务、命名事务的创建方法,了解不同类型的事务的处理情况。2实验内容及步骤(1)在查询设计器中输入以下代码,创建一个利用流控制语句的存储过程letters_print,该存储过程能够显示26个小写字母。CREATE PROCEDURE letters_printASDECLARE count intSET count=0WHILE count26BEGIN PRINT CHAR(ASCII(a)+ count) SET count=count +1END单击查询分析器的“执行查询”按钮,查看studentsdb数据库的存储过程是否有letters_print。使用EXECUTE命令执行letters_print存储过程。(2)输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名对应的学生的各科成绩。CREATE PROCEDURE stu_info name varchar(40)ASSELECT a.学号,姓名,课程编号,分数FROM student_info a INNER JOIN grade taON a.学号= ta.学号WHERE 姓名= name使用EXECUTE命令执行存储过程stu_info,其参数值为“马东”。如果存储过程stu_info执行时没有提供参数,要求能按默认值查询(设姓名为“刘卫平”),如何修改该过程的定义?(3)使用studentsdb数据库中的student_info表、curriculum表、grade表。 创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。 执行存储过程stu_grade,查询0001学生的姓名、课程名称、分数。 使用系统存储过程sp_rename将存储过程stu_grade更名为stu_g。(4)

温馨提示

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

评论

0/150

提交评论