实验9 使用T-SQL编写程序
- 格式:doc
- 大小:41.50 KB
- 文档页数:3
XX大学XX学院图1图22、用户存储过程的编辑修改首先创建存储过程select_students, 在此基础上,将该过程更改为检索计算机专业的学生信息,用修改过程命令重新定义该存储过程。
2.1 输入以下代码:alter procedure select_students with encryptionasselect*from Student whereSdept='CS'order by Sno2.2 通过EXEC语句执行存储过程输入语句:EXEC select_students输出结果如下:3、用户存储过程的删除3.1 通过DROP语句删除存储过程输入语句:DROP procedure select_students输出结果如下:二、编写触发器1、在SQL中展开Student_and_Course数据库,在其中选择对应的表,将表展开,在展开的选项中右击“触发器”,在弹出的快捷菜单中选择“新建触发器”命令,在如图3所示的触发器编辑区中给出对应的触发器代码。
2、创建一个名为TR_AGEde1的触发器,要求在插入和更新时检查Student表中Sage是否在15至60之中,如果不在提示“年龄不合法”。
输入语句:CREATE TRIGGER TR_AGEON StudentFOR INSERT,UPDATEASDECLARE@age INTSELECT@age=SageFROM StudentIF@age NOT BETWEEN 15 AND 60BEGINROLLBACK TRANSACTIONRAISERROR ('年龄不合法',16,10)END图33、执行以下更新数据库的SQL代码,将在显示框内显示有关的信息,表示触发了数据表Student中的触发器TR_AGE.输入语句:UPDATE StudentSET Sage=26WHERE Sname='李勇'执行结果如图5:图54、同样,执行以下命令也会触发触发器TR_AGE.输入语句:INSERT INTO Student VALUES('200215128','张博','男',17,'CS') 完成3、4两步的输出结果如图6:图65、查看所创建触发器的详细信息,输入以下代码:USE student_and_courseEXEC sp_helptrigger StudentEXEC sp_helptext TR_AGE执行结果如图7:图7。
第9章⽤T-SQL编程第9章⽤T-SQL编程本章学习⽬标Transact-SQL相对于ANSI SQL最⼤的不同在于它提供了丰富的编程结构。
灵活使⽤这些编程的控制结构,⽤户就可以实现任意复杂的应⽤规则,从⽽可以编出任意复杂的查询控制语句。
在SQL-Server 2000中,⽤户还可以使⽤T-SQL语句编写服务器端的程序,这些程序由批处理、注释、程序中使⽤的变量、改变批中语句的执⾏顺序的流控制语⾔、错误和消息的处理等成分组成。
本章主要对使⽤T-SQL语句编程⽅⾯的内容进⾏详细的讲解,在讲解的过程中采⽤循序渐进的⽅式,⾸先对多条语句的执⾏过程进⾏讲解,以激发读者的学习兴趣,接下来才对编程中具体涉及到的变量、语句、函数以及事务进⾏详细讲解。
通过对本章的学习,读者应熟悉在SQL Server中执⾏多条语句的⽅式,熟悉变量以及事务等的定义、应⽤或调⽤,并能掌握使⽤各种流控制语句进⾏编程的⽅法。
学习重点与难点执⾏多条T-SQL语句变量和流控制语句系统函数和⽤户⾃定义函数事务及SQL-Server的锁机制9.1 执⾏多条T-SQL语句当要完成的任务不能由单独的T-SQL语句来完成时,SQL Server提供了批、脚本、存储过程以及触发器等⼏种⽅式来组织多条T-SQL语句。
本节着重介绍批和脚本的内容,⽽关于存储过程和触发器的内容将在后⾯两章讨论。
9.1.1 批所谓批,是从客户机传递到服务器上的⼀组完整的数据和SQL指令。
⼀个批是由⼀条或多条T-SQL语句组成的语句集,这些语句⼀起提交给服务器并在服务器端作为⼀个整体来执⾏。
SQL Server将批中的语句作为⼀个整体编译为⼀个执⾏计划。
因为批中的语句是作为⼀个整体提交给服务器的,所以可以节省系统开销。
在查询分析器中,使⽤“GO”命令标志⼀个批的结束。
GO不是通⽤的T_SQL语句,它的作⽤只是通知查询分析器有多少语句包含在当前批中,查询分析器将两个GO之间的语句组成⼀个字符串交给服务器去执⾏。
实验报告
阅读并验证教材P87例8-例10,若实验不通过请分析原因(注意是否存在表级约束条件)。
5、初步了解在查询分析器中数据的插入、修改和删除方法
完成下列操作,初步了解插入、修改和删除数据的SQL语句格式(教材P115~P118):(1)向S tudent表中插入两条记录
(2)修改Student表中的记录:将李勇从信息系(IS)转入计科系(CS)
(3)删除Student表中李勇的记录:李勇退学
(4)完善数据库
按教材P82图3.2所示内容向学生-课程数据库的3个表中添加数据。
6、验证参照的完整性约束中级联更新和级联删除
(1)级联删除
从学生表中删除学号为200215122的学生指令如下:
查看成绩表中的信息输入如下指令,看学号为200215122学生的成绩是否级联删除
(2)级联更新
把学号为200215121学生的学号修改为200215128,指令如下:
查看成绩表中的信息输入如下指令,看学号为200215121学生的学号是否级联更新
8、掌握用T-SQL语句删除数据库和表的方法
(1)删除表
格式:DROP TABLE <表名>
(2)删除数据库:
格式:DROP DA TABASE <数据库名>。
实验4 使用T-SQL语言创立和修改表一、实验目的1.掌握使用查询分析器利用T-SQL语句创立数据库表的方法。
2.掌握使用查询分析器利用T-SQL语句修改数据库表构造、删除数据库表的方法。
3.掌握如何使用查询分析器利用T-SQL语句创立和使用用户自定义数据类型。
二、实验内容新建人事管理系统数据库,包括三个表:员工根本信息表、部门信息表、员工工资信息表。
三个表的构造如表3-7、表3-8、表3-9。
完成以下各题。
表3-7 员工根本信息表表3-8部门信息表表3-9员工工资信息表1.使用T-SQL语句自定义一个数据类型TELEPHONE_COD,为字符型CHAR(15),允许空值。
SQL代码如下:USE 人事管理系统EXEC SP_ADDTYPE TELEPHONE_CODE,'CHAR(15)','NULL'2.使用查询分析器利用T-SQL语句创立员工根本信息表。
SQL代码如下:USE 人事管理系统CREATE TABLE 员工根本信息表(员工编号INT NOT NULL CONSTRAINT PK_YGID PRIMARY KEY,员工姓名NV ARCHAR(50) NOT NULL,员工登录名NV ARCHAR(20) NOT NULL,员工登录密码BINARY(20) NULL,员工电子邮件NV ARCHAR(50) NOT NULL,员工所属部门编号INT NULL,员工根本工资INT NULL,员工职位名称NV ARCHAR(50) NULL,员工TELEPHONE_CODE NULL,员工报到日期DATETIME NOT NULL,员工自我介绍NV ARCHAR(200) NULL,员工剩余假期INT NULL,员工的级别INT NULL,员工照片IMAGE NULL)3.使用查询分析器利用T-SQL语句创立部门信息表。
SQL代码如下:USE 人事管理系统CREATE TABLE 部门信息表( 部门编号INT NOT NULL CONSTRAINT PK_BMID PRIMARY KEY,部门名称CHAR(10) NULL,部门描绘CHAR(50) NULL,部门经理编号INT NULL)4.使用查询分析器利用T-SQL语句创立员工工资信息表。
T-SQL编程
一.实验目的:
1.熟练掌握变量、常量的使用方法
2.熟练掌握常用函数
3.熟练掌握用户自定义函数
要求:
1.将“学生成绩管理系统”数据库附加到当前数据库中。
二.实验内容
1.定义局部变量@date,将当前系统日期放入该变量中。
然后输出该变量。
2.定义局部变量@avg,“成绩信息”表中的平均成绩放入该局部变量中。
然后输出该变量。
3.执行以下函数:
、 4.创建一个标量值函数fun_name ,要求根据输入的学号返回对应的学生的姓名.
5. 创建一个标量值函数fun_class_name ,要求根据输入的班级编号返回对应的班级名
6.创建表值函数func_student,要求根据输入的学生学号,返回所对应学生信息。
7.创建表值函数fun_savg,该表值函数无参数,返回每门课程的平均成绩。
8.创建表值函数fun_avg ,要求根据输入的课程编号,返回所对应课程的平均成绩。
参考答案:4.
5.
6.
7.
8.。
实验9 使用T-SQL编写程序
【实验目的】
1)掌握常用函数的使用方法。
2)掌握流程控制语句的使用方法。
【实验环境】
Sql server 2005
【实验重点及难点】
1)启动SQL Server 2005查询编辑器。
2)应用转换函数。
3)应用聚合函数。
4)应用字符串函数。
5)应用IF〃〃〃ELSE语句。
6)应用WHILE语句。
【实验内容】
(1)应用转换函数
1)打开“SQL Server Manageement Studio”窗口。
2)单击“标准”工具栏上的“新建查询”按钮,打开“查询编辑器”窗口。
3)在窗口内直接输入以下语句,求Course表中课程号为“7”的课程名称的长度,并输入结果。
declare @课程名称长度int
select @课程名称长度=len(Cname)
from course
where Cno ='7'
print'课程名称长度为'+str(@课程名称长度);
4)单击“SQL编辑器”工具栏上的“分析”按钮,检查输入的T-SQL语句是否有语法错误。
如果有语法错误,则进行修改,直到没有语法错误为止。
5)确保无语法错误后,单击“SQL编辑器”工具栏上的“执行”按钮。
将执行结果记录下来。
(2)应用聚合函数
1)在“查询编辑器”窗口内输入以下语句,统计Student表中的学生人数,并输出结果。
declare @学生人数int
select @学生人数=count(*)
from Student
print'学生人数为'+str(@学生人数);
2 )单击“SQL编辑器”工具栏上的“执行”按钮。
将执行结果记录下来。
(3)应用字符串函数
1)在“查询编辑器”窗口内输入以下语句,将字符串“Welcome to SQL Server”转换为大写字母输出。
declare @temp char(20)
select @temp =upper('Welcome to SQL Server')
print @temp;
2)单击“SQL编辑器”工具栏上的“执行”按钮。
将执行结果记录下来。
(4)应用IF〃〃〃ELSE语句
1在“查询编辑器”窗口内输入以下语句,查询学号为“200215121”的学生的平均分是否超过了85分,若超过则输出“XX考出了高分”,否则输出“XX考的一般”。
declare @Sname varchar(10),@Sno char(8)
set @Sno ='200215121'
select @Sname = Sname
from Student
where Sno = @Sno
if(select avg(Grade)
from sc
where Sno = @Sno )> 85
print @Sname +'考出了高分'
else print @Sname +'考得一般';
2)单击“SQL编辑器”工具栏上的“执行”按钮。
将执行结果记录下来。
思考题:
1. 按照“性别、学号、姓名、年龄、院系”的顺序列出学生信息,其中性别按以下规定显示:性别为男显示为男生,性别为女显示为女生,其他显示为“条件不明”。
select Ssex =
case
when Ssex='男'then'男生'
when Ssex='女'then'女生'
else'条件不明'
end, Sno, Sname, Sage, Sdept
from student;
2.按照院系降序显示所有学生的“院系,学号、姓名、性别、年龄”等信息,其中院系按照以下规定显示:院系为CS显示为计算机系,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明。
select Sdept =
case
when Sdept ='CS'then'计算机系'
when Sdept ='IS'then'信息系'
when Sdept ='MA'then'数学系'
when Sdept ='EN'then'外语系'
when Sdept ='CM'then'中医系'
when Sdept ='WM'then'西医系'
else'院系不明'
end, Sno, Sname, Ssex, Sage
from student;
order by Sdept DESC
3.显示所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段“院系规模”,其中若该院系人数>=5则该字段值为“规模很大”,若该院系人数大于等于4小于5则该字段值为“规模一般”,若该院系人数大于等于2小于4则该字段值为“规模稍小”,否则显示“规模很小”。
select Sdept,'院系规模'=
case
when count(Sno)>=5 then'规模很大'
when count(Sno)>=4 then'规模一般'
when count(Sno)>=2 then'规模稍小'
else'规模很小'
end
from student
where Sdept is not NULL
group by Sdept;。