SQL实用教程(第四版)实验五T-SQL编程

合集下载

T-SQL编程

T-SQL编程

第6章T-SQL编程教学目标本章介绍了T-SQL程序设计中GO语句的使用、变量的定义、输入输出的格式以及注释的使用,介绍了流程控制语句以及游标的使用。

教学要求第6章T-SQL编程导读上一章介绍的插入、查询、更新和删除等SQL语句均是单条的语句,不能定义变量,没有流程控制语句,因此,无法实现复杂的业务规则控制。

为解决此问题,本章介绍SQL程序设计,将学习变量的定义、赋值、流程控制和游标等内容。

其中流程控制语句包括顺序、选择、循环结构的控制语句,是数据库应用程序设计的基础。

通过本章学习,读者应掌握如何用流程控制语句进行SQL设计程序,理解游标的意义,掌握游标的创建与使用。

6.1 T-SQL基础6.1.1 GO的使用批处理是一组SQL语句的集合,以结束符GO终结。

批处理中的所有语句被一次提交SQL Server 2005,SQL Server 2005将这些语句编译为一个执行单元,称为SQL Server 2005执行计划。

批处理用GO语句作为批处理的结束标志,若没有GO语句,默认所有的语句属于一个批处理。

提示:在一个批处理中,如果出现编译错误(如某条语句存在语法错误),SQL Server 2005将取消整个批处理内所有语句的执行。

6.1.2 T-SQL变量变量是SQL Server 2005用来在语句之间传递数据的方式之一,是一种语言中必不可少的组成部分。

1.T-SQL变量T-SQL变量也称为局部变量,或用户自定义变量。

一般用于临时存储各种类型的数据,以便在SQL语句之间传递。

例如作为循环变量控制循环次数,暂时保存函数或存储过程返回的值,也可以使用table类型代替临时表临时存放一张表的全部数据。

局部变量的作用范围是在一个批处理、一个存储过程或一个触发器内,其生命周期从定义开始到它遇到的第一个GO语句或者到存储过程、触发器的结尾结束,即局部变量只在当前的批处理、存储过程、触发器中有效。

提示:如果在批处理、存储过程、触发器中使用其他批处理、存储过程、触发器定义的变量,则系统出现错误并提示“必须声明变量”。

如何使用T-SQL编程共28页文档

如何使用T-SQL编程共28页文档
如何使用T-SQL编程
11、用道德的示范来造就一个人,显然比用法律来约束他更有价值。—— 希腊
12、法律是无私的,对谁都一视同仁。在每件事上,她都不徇私情。—— 托马斯
13、公正的法律限制不了好的自由,因为好人不会去做法律不允许的事 情。——弗劳德
14、法律是为了保护无辜而制定的。——爱略特 15、像房子一样,法律和法律远躺在泥坑里的人,才不会再掉进坑里。——黑格尔 32、希望的灯一旦熄灭,生活刹那间变成了一片黑暗。——普列姆昌德 33、希望是人生的乳母。——科策布 34、形成天才的决定因素应该是勤奋。——郭沫若 35、学到很多东西的诀窍,就是一下子不要学很多。——洛克

第5章3 T-SQL编程

第5章3 T-SQL编程

5 T-SQL编程
5.5 事务
5.5.1 事务及事务语句
事务(Transaction):一个指令序列,或全部完成,或全部都不完成的,是一个不可分割的逻辑工作单元。

5.5.2 三类事务示例
假设C表中已经存在记录('11', 'aaa',2),但不存在记录('12', 'bbb',2)。

5.6 触发器
5.6.1 触发器概念
触发器:由INSERT/UPDATE/DELETE事件触发执行的程序。

触发器的意义:自动执行,实现用户定义的完整性约束。

1、限制插入不合适的记录、限制删除或更新特定的记录。

(超越CHECK约束、参照完整性约束等)
2、可以对相关表进行级联更改,在插入/修改/删除一条记录的同时在其他表中插入/修改/删除相关记录。

1
若两种触发器同时存在,先执行“INSTEAD OF”后执行“AFTER”。

2、参数结构
插入数据时:inserted表中是新值,deleted表为空。

删除数据时:deleted表中是待删除值,inserted表为空。

更新数据时:deleted表中是原值,inserted表中是新值。

5.6.2 INSTEAD OF类型的触发器
5.6.3 AFTER触发器。

实验五 T-SQL中的函数定义和调用

实验五 T-SQL中的函数定义和调用

实验五 T-SQL中的函数定义和调用一、实验目的1. 熟悉SQL Server常用的内置函数的功能和调用(包括日期时间函数、字符串处理函数和数学函数等)。

2. 熟练掌握标量函数、内嵌表值函数、多语句表值函数的定义和调用。

3. 正确区分两种表值函数的应用场合。

二、实验环境SQL Server 2000个人版及其交互查询工具isqlw(即查询分析器)。

三、实验内容和要求以下各个题除非独立的程序设计,否则均以图书管理数据库为应用背景。

1. 定义函数ISPRIME,其功能是判断某个整数是否是素数。

ISPRIME接受一个INT参数num,返回BIT类型的判断结果,若参数num是素数返回1;否则返回0。

最后,通过对100~200之间的所有整数用ISPRIME函数检验,打印其中的所有素数。

(最好在设计ISPRIME 函数时使用内置函数SQRT缩小检查范围,即逐一判断2~sqrt(num)之间是否存在被num 整数的数。

另外,在打印时最好分若干行输出素数(提示:用CAST函数进行类型转换)) 2. 定义一个内嵌表值函数book_info,该函数根据调用时传递的书名,返回该书的有关信息。

book_info函数的调用语法是SELECT * FROM book_info('Web站点安全')。

3. 定义一个多语句表值函数reader_history,接受某位读者的借书证号,返回该读者的借阅历史,包括借书证号、姓名、专业名、所借书籍的ISBN号、借书时间和还书时间,其中还书时间是借书之日起的第30天。

(提示:可以考虑使用系统函数DATEADD来计算还书时间。

请大家通过联机帮助文档来了解函数DATEADD的语法格式)4. 定义一个函数,返回某个专业(调用时传递专业名)借书最多的同学的学号。

要求:提交源程序并标识必要的注释。

保证程序能正确编译和运行,并根据以下要求认真填写实验报告。

数据库原理实验报告-T-SQL编程

数据库原理实验报告-T-SQL编程

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。

T-SQL编程

T-SQL编程

实验五 T-SQL编程实验报告姓名:张娜成绩:___________【实验目的】1、掌握批处理、脚本的概念。

2、掌握SQL Server中局部变量、全局变量和内置函数的概念和应用。

3、掌握SQL Server流程控制语句的使用。

4、掌握SQL Server三种用户自定义函数的创建和使用方法。

5、掌握游标的建立和使用。

6、掌握事务的建立和使用。

【实验内容】2、解释每一命令的语义,执行以上语句,系统报错,说明错误原因并改正。

use salesgo__将当前数据库设置为sales数据库declare @maxprice money/*定义money类型的变量@maxprice*/select @maxprice=max(price) from productswhere price is not null/*在products表中选出最大的价格数并赋值给变量@maxprice*/select [@maxprice]=@maxprice/*输出变量@maxprice*/print @@rowcount/*输出全局变量@@rowcount*/变量名出现错误,第二个go的位置不对3、(1)编写使用ROUND()函数的示例。

(2)编写使用SUBSTRING()函数的示例。

(3)编写使用DATEPART()函数的示例。

(4)编写显示当前登录帐户名的语句。

Declare @a int,@b char(5)Select a=round(2.235,1)Select a=round(2.235,2)Set @b=substring('abcdefghij',3,5)select 'b'=@bSelect '月数'=datepart(mm,'2009-5-24')select 'suser id'=suser_id(),'suser name'=suser_name(),'suser sid'=suser_sid(),'suser sname'=suser_sname(),'user id'=user_id(),'user'=user,'suser sid1'=suser_sid('login')select 'current user'=current_user4、修改CASE表达式后的T-SQL语句。

SQL实验五:T-SQL编程

SQL实验五:T-SQL编程

(二 〇 一 五 年 四 月《数据库原理及应用》实验报告学校代码: 10128 学 号: 201120905048题 目:T-S Q L 编程 学生姓名:孙跃 学 院:理学院 系 别:数学系专 业:信息与计算科学 班 级:信计12-2 任课教师:侯睿一、实验目的(1)进一步巩固第2章~第4章所学内容;(2)掌握用户自定义类型的使用;(3)掌握变量的分类及其使用;(4)掌握各种运算符的使用;(5)掌握各种控制语句的使用;(6)掌握系统函数及用户自定义函数的使用。

二、实验内容1.自定义数据类型的使用。

(1)对于实验2给出的数据库表结构,再自定义一数据类型ID_type,用于描述员工编号。

(2)在YGGL数据库中创建Employees3表,表结构与Employees类似,只是EmployeeID列使用的数据类型为用户自定义类型ID_type。

2.变量的使用。

(1)对于实验2给出的数据库表结构,创建一个名为female的用户变量,并在SELECT语句中使用该局部变量查找表中所有女员工的编号、姓名。

(2)定义一个变量,用于获取号码为102201的员工的电话号码。

3.运算符的使用。

(1)使用算数运算符“-”查询员工的实际收入。

(2)使用比较运算符“>”查询Employees表中工作时间大于5年的员工信息。

4.流程控制语句。

(1)判断Employees表中是否存在编号为11006的员工,如果存在则显示该员工信息,不存在则显示查无此人。

(2)假设变量X的初始值为0,每次加1,直至X变为5。

(3)使用CASE语句对Employees表按部门进行分类。

5.自定义函数的使用。

(1)定义一个函数实现如下功能:对于一个给定的DepartmentID值,查询该值在Departments表中是否存在,若存在则返回0,否则返回-1。

(2)写一段T-SQL程序调用上述函数。

6.系统内置函数的使用。

(1)求一个数的绝对值。

(2)求财务部雇员的总人数。

实验5使用T-SQL编写存储过程访问数据库

实验5使用T-SQL编写存储过程访问数据库

实验5使用T-SQL编写存储过程访问数据库实验五使用T-SQL编写存储过程访问数据库【目的与要求】熟悉使用存储过程来进行数据库应用程序的设计。

【实验设备与环境】在实验一中安装的SQL SERVER 2008及其T-SQL执行引擎。

【实验内容】对学生-课程数据库,编写存储过程,完成下面的功能:(1)统计某课程(如离散数学)的成绩分布情况,即按照各分数段统计人数;(2)统计任意一门课的平均成绩。

要求:提交源程序并表示必要的注释。

保证程序能正确编译和运行并截取程序执行结果图。

附:实验内容(1)参考程序create procedure p_satscore @cno char(4) --course number asbegindeclare @score1 intdeclare @score2 intdeclare @num intdeclare @cname varchar(10) --course nameset @cname=(select cname from course where cno=@cno) print '<'+@cname+'>'+'考试成绩按照分数段统计情况'set @score1='100'set @score2='90'while(@score1>=0)beginset @num=(select count(*) from sc where cno=@cno and grade between @score2 and @score1)print str(@score2)+'至'+str(@score1)+'分人数为'+str(@num) set @score1=@score2-1if @score1>=60set @score2=@score2-10elseset @score2=0endend。

第五章 T-SQL程序设计

第五章 T-SQL程序设计

第五章Transant—SQL程序设计5.1 Transant—SQL程序设计基础5.1.1 变量5.1.2 运算符5.1.3函数5.2 程序流程控制5.3游标5.4 存储过程5.4.1 存储过程的概念5.4.2 在企业管理器中创建存储过程5.4.3 使用CREATE PROC语句创建存储过程5.4.4 修改和删除用户存储过程5.5 触发器5.5.1 触发器的概念5.5.2 创建触发器5.5.3 修改和删除触发器5.1概述:两个GO之间的SQL语句作为一个批处理。

在一个批处理中可以包含一条或多条Transact-SQL语句,成为一个语句组。

这样的语句组从应用程序一次性地发送到SQL Server 服务器进行执行。

SQL Server服务器将批处理编译成一个可执行单元,称为执行计划。

Go:执行自上一个GO语句以来的所有命令和语句.不能的T-SQL语句同处一行.在SQL Server中,有两种类型的注释字符:⏹单行注释:使用两个连在一起的减号“- -”作为注释符;例:Use teachdbSelect s_no,s_name from student --这是一个行注释信息语句⏹多行注释:使用“/* */”作为注释符。

/*这是一个多行注释的例子下面的代码是查询学生的学号和姓名的*/Use teachdbSelect s_no,s_name from student5.1.1 变量1 全局变量全局变量在整个SQL Server系统内使用。

存储的通常是一些SQL Server的配置设定值和统计数据。

这些变量不能由用户定义,也不能由用户赋值。

在使用全局变量时应该注意以下几点:⏹全局变量是在服务器级定义的。

⏹用户只能使用预先定义的全局变量。

⏹引用全局变量时,必须以标记符“@@”开头。

⏹全局变量对用户来说是只读的。

⏹局部变量的名称不能与全局变量的名称相同。

⏹见表5.1P175⏹例5.1:利用@@servername查看本地服务器名称,并显示截止到当前时刻试图登录SQL的次数:SELECT @@servername as …服务器名‟@@CONNECTIONS AS …登录次数‟例5.2查看STUDENT 表的报有记录并利用@@ROWCOUNT统计记录数.USE teachdbGoSelect * from studentSelect @@ROWCOUNT as …第一次查询返回的记录数‟6.3.2 局部变量利用局部变量还可以保存程序执行过程中的中间数据值,保存由存储过程返回的数据值等。

实验5

实验5

实验5 使用T-SQL语句管理数据表数据一、实验目的熟悉数据表结构及使用特点;熟悉使用Management Studio界面方式管理数据表数据;熟悉使用T-SQL语句管理数据表数据。

二、实验环境已安装SQL Server 2005的计算机;具有局域网环境,有固定IP;三、实验学时2学时四、实验要求了解SQL Server数据表数据的管理方法;了解SQL Server数据类型;完成实验报告(给出T-SQL语句)。

五、实验内容及步骤(1)请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作:向各个数据表中插入如下记录:学生信息表(student)Sno Sname Ssex Sage Sdept200515001 赵菁菁女23 CS200515002 李勇男20 CS200515003 张力男19 CS200515004 张衡男18 IS200515005 张向东男20 IS200515006 张向丽女20 IS200515007 王芳女20 CS200515008 王民生男25 MA200515009 王小民女18 MA200515010 李晨女22 MA200515011 张毅男20 WM200515012 杨磊女20 EN200515013 李晨女19 MA200515014 张丰毅男22 CS200515015 李蕾女21 EN200515016 刘社男21 CM200515017 刘星耀男18 CM200515018 李贵男19 EN200515019 林自许男20 WM200515020 马翔男21200515021 刘峰男25 CS200515022 牛站强男22200515023 李婷婷女18200515024 严丽女20200515025 朱小鸥女30 WM课程信息表(course)Cno Cname Cpno Ccredit1 数据库 5 42 数学 23 信息系统 1 44 操作系统 6 35 数据结构7 46 数据处理 27 PASCAL语言 6 48 大学英语 49 计算机网络 410 人工智能 2 选课信息表(sc)Sno Cno Grade200515001 1 75200515002 1 85200515002 3 53200515003 1 86200515004 1 74200515005 1 58200515006 1 84200515004 2 46200515005 2 89200515006 2 65200515008 2 72200515009 2 76200515010 2 96200515010 8 86200515011 8 62200515015 8 0200515018 8 58200515001 4 62200515002 4 85200515021 9 54200515001 5 58200515021 6 58200515001 7 70200515005 10 65200515016 8 Null200515017 8 Null2.修改CS系姓名为“李勇”的学生姓名为“李咏”;update studentset Sname ='李咏'where Sname ='李勇'and Sdept ='CS';3.修改课程“数据处理”的学分为3学分;update courseset Ccredit = 3where Cname ='数据处理';4.将选修课程“1”的同学成绩加5分;update scset Grade = Grade + 5where Cno = 1;5.将选修课程“大学英语”的同学成绩加5分;update scset Grade = Grade +5where Cnoin(select Cnofrom coursewhere ame ='大学英语'and o = o);6.将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;update studentset Sname='王丹丹',Ssex='女',Sage='20',Sdept='MA'where Sno ='200515010';7.删除数据表student中无专业的学生记录;delete studentwhere Sdept is NULL;9.删除数据表student中计算机系年龄大于25的男同学的记录;delete studentwhere Sdept ='CS'and Sage > 25 and Ssex ='男';10.删除数据表course中学分低于1学分的课程信息;delete coursewhere Ccredit < 1;。

第5章4 T-SQL编程

第5章4 T-SQL编程
SELECT @Cno, @Cname, @Ccredit
FETCH ABSOLUTE 5FROM Ccursor INTO @Cno, @Cname, @Ccredit
SELECT @Cno, @Cname, @Ccredit
FETCH LastFROM Ccursor INTO @Cno, @Cname, @Ccredit
UPDATE C SET Ccredit=2 WHERE CURRENT OF Ccursor
CLOSE Ccursor
DEALLOCATE Ccursor
FORWARD_ONLY:能修改表数据
READ_ONLY、FAST_FORWARD:出错!
3
静态游标
DECLARE游标名CURSORSTATIC
DECLARE游标名CURSORLOCAL
在批处理、存储过程或触发器终止时,隐性释放。
全局游标
DECLARE游标名CURSORGLOBAL
仅仅在关闭连接时,隐性释放
2
前向游标
DECLARE游标名CURSORFORWARD_ONLY
只能FETCH NEXT。
只读游标
DECLARE游标名CURSORREAD_ONLY
select@Cno, @Ccredit
UPDATEC SET Ccredit=5WHERE CURRENT OF Ccursor
CLOSE Ccursor
DEALLOCATE Ccursor
Select * from C
SCROLL的技术细节:
新删除的记录,不在缓冲区中,不能读值,不能修改。
DECLARE @Cno char(4), @Ccredit INT
FOR SELECT Cname FROM C

数据库应用实验报告T-SQL编程

数据库应用实验报告T-SQL编程

内蒙古工业大学信息工程学院实验报告课程名称:数据库应用实验名称: T-SQL编程实验类型:验证性□ 综合性□ 设计性□实验室名称:九楼机房班级:学号:姓名:组别:同组人:成绩:实验日期:预习报告成绩:指导教师审核(签名):年月日预习报告一、实验目的1.掌握用户自定义类型的使用;2.掌握变量的分类及其使用;3.掌握各种运算符的使用;4.掌握各种控制语句的使用;5.掌握系统函数及用户自定义函数的使用。

二、实验内容1.自定义数据类型的使用(1)对于实验1给出的数据库表结构,自定义1个数据类型ID—type,用于描述员工编号。

在查询分析器编辑窗口输入如下程序并执行:USE YGGLEXEC sp_addtype’ID_type’,‘char(6)’,’not null’GO注意:不能漏掉单引号。

(2)重新创建YGGL数据库的Employees表。

在查询分析器编辑窗口输入如下程序并执行: USE YGGLIF EXISTS(SELECT name FROM sysobjectsWHERE type=‘U’and name='Employees’)DROP table employees/*首先在系统表中查看EmployeeS表是否存在,若存在,删除该表CREATE TABLE Employees( EmployeelD ID_type,/*定义字段EmployeelD的类型为ID_typeName char(10)NOT NULL.Birthday datetime NOT NULL.Sex bit NOT NULL.Address char(20)NOT NULL.Zip char(6)NULL,PhoneNumber char(12)NULL,EmailAddree char(20)NULL,DepartmentlD char(3)NOT NULL)GO【思考与练习】编写如下程序:(1)自定义1个数据类型,用于描述YGGL数据库中的DepartmentlD宁段,然后编写代码重新定义数据库的各表。

数据库实验5 存储过程和触发器

数据库实验5 存储过程和触发器

实验五存储过程和触发器一、实验目的(1) 通过实践理解存储过程和触发器的概念、作用及优点;(2) 掌握存储过程的定义与调用,实现存储过程中带有不同参数的应用;(3) 掌握创建触发器。

二、实验原理1.存储过程一个被命名的存储在服务器上的T-SQL语句的集合,是封装重复性工作的一种方法。

(1)创建存储过程CREATE PROC[DURE]PROCDURE_NAME [{@PARAMENT DATA_TYPE}[VARYING][=DEFAULT][OUTPUT]] [, (1)AS SQL_STATEMENTPROCEDURE_NAME:新存储过程的名称,必须符合标识符规则且唯一。

@PARAMETER:过程中的参数。

可以声明一个或多个参数。

用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。

使用 @ 符号作为第一个字符来指定参数名称。

参数名称须符合标识符规则。

每个过程的参数仅用于该过程本身;相同的参数名称可用在其它过程中。

默认情况下参数只能代替常量,不能代替表名、列名或其它数据库对象名称。

DATA_TYPE:参数的数据类型。

DEFAULT:参数的默认值。

如果定义了默认值,不必指定该参数的值即可执行过程。

默认值必须是常量或 NULL。

OUTPUT:表明参数是返回参数。

该选项的值可以返回给 EXEC[UTE]。

使用 OUTPUT 参数可将信息返回给调用过程。

(2)执行存储过程SQL SERVER系统中,可以使用EXECUTE语句执行存储过程。

EXECUTE语句也可以简写为EXEC。

如果将要执行的存储过程需要参数,那么应该在存储过程名称后面带上参数值。

[EXEC[UTE]]{[@RETURN_STATUS=]{PROCEDURE_NAME[;NUMBER]|@PROCEDURE_NAME_VAR}[@PARAMETER={VALUE|@VARIABLE[OUTPUT]|[DEFAULT]}[,…N](3) 删除存储过程使用DROP PROCEDURE语句可永久地删除存储过程。

数据库原理实验报告-T-SQL编程

数据库原理实验报告-T-SQL编程

数据库原理实验报告-T-SQL编程本次实验主要通过T-SQL编程学习数据库操作语言,包括基本的表格操作、数据查询、以及高级的存储过程和触发器编程。

1. 创建表格首先,我们需要创建一些表格来存储数据。

使用CREATE TABLE语句可以创建一个新的表格,语法如下:```sqlCREATE TABLE table_name (column1 datatype1,column2 datatype2,column3 datatype3,.....);```其中,table_name为所创建的表格的名称,column1, column2, column3为表格中的列名,datatype1, datatype2, datatype3为列的数据类型。

例如,以下为创建一个名为“students”的表格,并包含学生的姓名、性别和年龄:2. 插入数据```sqlINSERT INTO students (name, gender, age)VALUES ('Tom', 'male', 20);```3. 更新和删除数据使用UPDATE语句可以更新表格中的数据,语法如下:其中,table_name为要更新的表格名称,SET语句用于设置要更新的列名和对应的值,WHERE语句用于指定要更新的数据行。

例如,以下为将名为“Tom”的学生年龄更新为25岁:```sqlDELETE FROM table_name WHERE condition;```4. 查询数据5. 存储过程存储过程是一种预先定义好的程序,它包含了一组SQL语句,可以在需要时对存储过程进行调用。

使用CREATE PROCEDURE语句可以创建一个新的存储过程,语法如下:其中,procedure_name为所创建的存储过程名称,SQL statements为存储过程中的SQL语句。

例如,以下为创建一个名为“get_students”的存储过程,并查询所有学生数据:```sqlCREATE PROCEDURE get_studentsASBEGINSELECT *FROM students;END;```使用EXECUTE语句可以执行存储过程,语法如下:```sqlEXEC procedure_name;```例如,以下为执行名为“get_students”的存储过程:6. 触发器触发器是一种特殊的存储过程,它在特定的事件发生时自动执行。

数据库实验T-SQL编程

数据库实验T-SQL编程

实验六T-SQL编程课程名称:数据库原理实验实验类型:设计型实验名称T_SQL编程学时 4实验目的和要求:1.掌握变量的定义及赋值、数据显示及IF、WHILE、CASE逻辑控制语句。

2.掌握简单子查询、IN子查询及EXISTS子查询的用法,并能应用T-SQL进行综合查询。

实验内容:创立学员成绩数据库stu。

create database stu;1、创立学员信息表:create table StuInfo(stuName char(10),stuNo char(10) primary key,stuSex char(2) check(stuSex='男'or stuSex='女'),stuAge int,stuSeat int,stuAddress char(20));insertinto StuInfovalues('张秋丽','s25301','男',18,1,'北京海淀');insertinto StuInfovalues('李文才','s25302','男',28,2,'地址不详');insertinto StuInfovalues('李斯文','s25303','女',22,3,'河南洛阳');insertinto StuInfovalues('欧阳俊雄','s25304','女',34,4,'地址不详');insertinto StuInfovalues('梅超风','s25318','女',23,5,'地址不详');查询学员信息表:select *from StuInfo;----试编写SQL语句查找李文才的左右同桌。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL实用教程(第四版)实验五T-SQL编程
南昌大学实验报告
学生姓名:廖美君学号: 8002213113 专业班级:
实验类型:□ 验证□ 综合□ 设计□ 创新实验日期: 2021-5-9
一、实验项目名称
T-SQL编程
二、实验目的与要求
1、进一步巩固前面所学知识
2、掌握用户自定义类型的使用
3、掌握变量的分类及使用
4、掌握各种运算符的使用
5、掌握各种控制语句的使用
6、掌握系统函数及用户自定义函数的使用
三、实验基本原理
1、了解T-SQL支持的各种基本数据类型
2、了解自定义数据使用的一般步骤
3、了解T-SQL各种运算符、控制语句的功能及使用方法
4、了解系统函数的调用方法
5、了解用户自定义函数使用的一般步骤
四、主要仪器设备及耗材
1
计算机,MS SQL Server 2021,OFFICE
五、实验步骤
1、自定义数据类型的使用
(1)定义一数据类型ID_type,用于描述员工编号 SQL语句: USE 廖美君
EXEC sp_addtype 'ID_type', 'nchar(6)','not null' GO
实验结果:
图5-1定义一数据类型ID_type
思考与练习:
a)使用界面方式创建一个用户自定义类型
2
图5-2使用界面方式创建用户自定义类型过程(一)
图5-3使用界面方式创建用户自定义类型过程(二)
3
图5-4使用界面方式创建用户自定义类型成功
(2)在廖美君数据库中创建表Employees3
要求:表结构与Employees类似,只是EmployeesID列使用的数据类型为用户自定义
类型ID_type。

SQL语句: USE 廖美君 GO
IF EXISTS(SELECT Name FROM sysobjects WHERE Name='EMPLOYEES3')
DROP TABLE Employees3 CREATE TABLE Employees3 (
EmployeeID ID_type,
Name nchar(10) NOT NULL, Education nchar(4) NOT NULL, Birthday datetime NOT NULL,
Sex bit NOT NULL DEFAULT 1, Workyear tinyint NULL, Address nvarchar(40) NULL,
4
PhoneNumber nchar(12) NULL, DepartmentID
nchar(3) NOT NULL, PRIMARY KEY (EmployeeID) ) GO
实验结果:
图5-5创建表Employees3
2、变量的使用(1)创建一个用户变量
要求:对于实验2给出的数据库表结构,创建一个名为Female的用户变量,并在
SELECT语句中使用该局部变量查找表中所有女性的编号、姓名。

SQL语句: USE 廖美君
DECLARE @female Bit SET @female=0
SELECT EmployeeID,Name
5
感谢您的阅读,祝您生活愉快。

相关文档
最新文档