实验10 T-SQL语言编程基础
- 格式:pdf
- 大小:598.97 KB
- 文档页数:13
FileStream 对象和语法filestream 数据类型在SQL Server 2008中被引入,该数据类型允许在服务器文件系统中存储和同步内容,适合于管理大量的未结构化数据。
这些数据通常存储在文档或其他应用程序特定的文件类型中。
filestream 类型的列数据插入到数据库表中,但实际上存储在数据库外部的单独文件中——在NTFS 文件系统中,而不存储在SQL Server 数据库文件中。
T-SQL 查询操作与外部存储的数据之间的所有交互操作都由SQL Server 数据库引擎来管理。
这个特性默认状态为禁用,必须用系统存储过程sp_filestream_configure 来启用。
数据库要支持FileStream 类型,需要根据文件系统中的文件夹定义一个文件组,称为文件容器。
该文件组的数据库文件用于存储元数据、设置和标题信息,以实现对外部数据的管理。
要使表支持FileStream 类型,应在创建表时用FILESTREAM 关键字定义一列。
可以把数据首先写入FileStream 类型的列中,然后用标准的T-SQL 语句INSERT 存储到NTFS 文件系统中,或者使用托管或未托管的程序代码。
filestream 数据的最初内容常常包含在源文档文件中,所以插入或修改这些数据需要执行外部的程序代码,这一般需要高级文件管理和代码流处理,而不能仅用T-SQL 查询来处理。
SQL Server Native Client 10.0库(sqlncli10.dll)中的OpenSQLFileStream API 提供了编程支持。
这是对Win32 API 的扩展,函数可以从托管的.NET 代码(例如C#或Visual )或未托管代码(例如C++或Visual Basic 6)中调用。
E.1 FileStream 对象下面列出了管理filestream 对象的系统编程对象。
附 录 ET-SQL编程入门经典(涵盖SQL Server 2008 & 2005)538对象名返回类型说明sp_filestream_configure N/A @enable_level返回参数的值:0:禁用(默认)1:仅允许T-SQL访问2:允许T-SQL和本地文件系统访问3:允许T-SQL、本地和远程文件系统访问PATHNAME() nvarchar(max)返回FileStream类型列的文件系统路径GET_FILESTREAM_TRANSACTION_CONTEXT()varbinary(max) 返回一个令牌,以协调数据库对象的事务环境或查询与外部的程序代码E.2 示例T-SQL脚本下面是几个简单的T-SQL脚本示例,用于创建带filestream存储的数据库并定义支持filestream列的表,以及使用INSERT语句在外部文件中存储列文本。
T-SQL简介及基本语法⼀、T-SQL概述SQL Server⽤于操作数据库的编程语⾔为Transaction-SQL,简称T-SQL。
T-SQL与PL/SQL不同,并没有固定的程序结构。
T-SQL包括以下4个部分:DDL:定义和管理数据库及其对象,例如create、alter和drop等。
DML:实现对数据库表各对象的操作,例如insert、update等。
DCL:数据控制语⾔,实现对数据库进⾏安全管理和权限管理等控制,例如grant、revoke、deny等。
附加的语⾔元素。
T-SQL的附加语⾔元素,包括变量、运算符、函数、注释和流程控制语句等。
在T-SQL中,命令和语句的书写是不区分⼤⼩写的。
⼆、T-SQL编程基础1、标识符①T-SQL规则标识符由字母、数字、下划线、@、#、$符号组成,其中字母可以是a-z或A-Z,也可以是来⾃其他语⾔的字母字符。
⾸字符不能为数字和$。
标识符不允许是T-SQL保留字。
标识符内不允许有空格和特殊字符长度⼩于128②界定标识符 对于不符合标识符规则的标识符,则要使⽤界定符⽅括号([])或双引号(“”)将标识符括起来。
如标识符[My Table]、“select”内分别使⽤了空格和保留字select。
2、数据类型在SQL Server中提供了多种系统数据类型。
除了系统数据类型外,还可以⾃定义数据类型。
①系统数据类型(1)精确数字数据类型int 存储整型数值,存储数值范围为-231~231-1。
bigint bigint⽐int能存储更⼤的数值,存储数值范围为-263~263-1。
smallint 数据类型的范围数值⽐int更⼩,在-215~215-1之间。
定义这种数据类型的时候⼀定要⼩⼼,要确定存储的数据不会超过smallint所能存储的数值范围。
tinyint 数据类型的范围数值⽐smallint更⼩,存储从 0 到 255 的整型数据。
decimal/numeric decimal[(p,s)]和numeric[(p,s)]这两种数据类型⽤于存储相同精度和范围的数据(⼩数点的左、右两边存储的数值位数相同),所能存储的数值范围为-1038+1~1038-1。
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语言:数据定义与操纵、编程操作;连接、视图、存储过程、触发器一、实验目的1.掌握利用T-SQL语言进行数据定义、数据操纵的方法。
2.掌握利用T-SQL语言编程的技巧和方法。
3掌握利用T-SQL语言进行数据连接、视图的定义。
4掌握利用T-SQL语言定义存储过程、触发器。
5加深T-SQL语言编程的技巧和方法的掌握。
二.实验平台1.操作系统:Windows 2000 或者Windows XP。
2.数据库管理系统:SQL server 2000 个人版。
三、实验内容1.利用T-SQL语言建立若干个表(教材P75的表)。
(Transact-SQL是Microsoft SQL Server提供的一种结构化查询语言)2.利用T-SQL语言插入相应的数据。
3.编程实现如下操作:1)求供应工程J1零件的供应商号码;2)求供应工程J1零件P1的供应商号码;3)求供应工程J1零件为红色的供应商号码。
4利用实验建立的表,建立关于工程项目相关的视图,包括项目号、采用零件号、零件名、供应商。
5建立查询上述内容的存储过程。
6建立在表J加入新项目号时,自动在其它相关的表中插入新项目号。
四、实验过程1.新建一个SPJ数据库,打开SQL查询分析器,利用T-SQL语言按照教材P74习题5的要求建立相应的表。
2.向表中插入数据,例如:InsertInto SPJValues (’s1’,’p1’,’j1’,’200’)3.1) SELECT DISTINCT SNOFROM SPJWHERE JNO='J1';2) SELECT DISTINCT SNOFROM SPJWHERE JNO='J1'AND PNO='P1';3) SELECT DISTINCT SNOFROM SPJ,PWHERE JNO='J1' AND P.PNO=SPJ.PNO AND COLOR='红';4create view GCXMASSELECT J.JNO,P.PNO,PNAME,SNAMEFROM S,P,J,SPJWHERE J.JNO=SPJ.JNO ANDP.PNO=SPJ.PNO ANDS.SNO=SPJ.SNOWITH CHECK OPTION视图的建立5.利用企业管理器将上述SQL语言填写入即可。
实验十 T-SQL语言编程基础姓名:学号:专业:网络工程班级:同组人:无实验日期:2012-4-19【实验目的与要求】1.熟练掌握变量的定义和赋值。
2.熟练掌握各种运算符。
3.熟练掌握流程控制语句,尤其是条件语句和循环语句。
【实验内容与步骤】10.1. 变量的定义与输出1.变量的定义和赋值1) 局部变量的声明:DECLARE @variable_name DataType例如:declare @stuname varchar(20)--声明一个存放学员姓名的变量stuname.declare @stuseat int--声明一个存放学员座位号的变量stuseat2) 局部变量的赋值:局部变量的赋值有两种方法:a) 使用Set语句Set @variable_name=valueb) 使用Select语句Select @variable_name=value实验:运行以下程序段,理解变量的使用。
--局部变量的赋值与使用declare @customer_name varchar(20)--声明变量用来存放客户名称set @ customer_name ='家电市场'--使用SET语句给变量赋值select*from xsswhere客户名称=@customer_name --通过局部变理向sql语句传递数据请给出运行结果:练习:创建一名为 Product_name的局部变量,并在SELECT语句中使用该变量查找“冰箱”的”价格”和”库存量”。
给出相应的语句declare @Product_name varchar(20)set @Product_name ='冰箱'select价格,库存量from CPwhere产品名称= @Product_name请给出运行测试结果:2.两种输出语句:1) Print 输出单个的局部变量或字符串表达式. 如:PRINT '价格合理';2) Select 局部变量 as 自定义别名。
T-SQL 编程基础一.常用的数据类型1.整型 1)bigint -261~(261-1)2)int -231~(231-1)3)smallint -215~(215-1)4)tinyint 0~2552.浮点型1)real2)float3)decimal4)numeric3.逻辑数据类型Bit1.文本数据类型1)text2)ntext2.图形数据类型Image6.字符1)char2)nchar3)varchar4)nvarchar7.日期时间1)datetime2)smalldatatime格式:1983-07-07、1983/07/07、05-07-19831.时间小时:分钟:秒.毫秒如果使用12小时制 AM午前 PM午后如:2:05:7.9pm2.货币1)money2)smallmoney二、局部变量局部变量是用户可自定义的变量,它的作用范围仅在程序内部。
局部变量必须以“@”开头。
变量声明格式:DeclareDeclare @变量名变量类型声明后所有变量赋予初值NULL变量赋值Set @变量名=变量值Select @变量名=变量值变量的输出Print @变量名Select @变量名实例1:变量的声明、赋值、输出declare @str1 char(10),@str2 varchar(50), @x1 int,@x2 real,@time1 datetime set @str1='good'set @str2='hello,how are u?'set @x1=12set @x2=15set @time1=1999/05/06print @str1print @str2print @x1print @x2print @time1三、注释符、通配符与常用运算符1.注释符 /* */2.通配符 % _……3.运算符1)算术运算符:+ - * / %2)比较运算符:>、>=、<、<=、=、!=、<>、!<、!>3)逻辑运算符:and or not4)位运算符:&按位与 |按位或~按位非 ^按位异或5)连接符:+4.优先级:相同层次混在一起从左向右() ~ */% +- ^ & | not and or四、流程控制1.begin……end 相当于{}格式:begin命令行End 常用于选择、循环语句2.if语句格式:If 条件表达式命令行或程序块Else if 条件表达式命令行或程序块……Else命令行或程序块实例2:邮费计算题目:某地到西安的邮路里程1043KM,通过邮政局向西安市区寄交EMS,应在24小时内到达,计费标准每克0.12元,但超过100克,超过数每克0.05元,试编写程序计算邮费。
实验十使用T-SQL编写程序一、实训目的1)掌握常用函数的使用方法2)掌握流程控制语句的使用方法二、实训内容1)启动SQL Server 2005查询编辑器。
2)应用转换函数。
3)应用聚合函数。
4)应用字符串函数。
5)应用IF…ELSE语句。
6)应用WHILE语句。
三、实训步骤1.应用转换函数1)打开“SQL Server Management Studio”窗口。
2)单击“标准”工具栏上的“新建查询”按钮,打开“查询编辑器”窗口。
3)在窗口内直接输入以下语句,求kc表中课程号为“107”的课程名称的长度,并输出结果。
USE xscjDECLARE @length intSELECT @length=LEN(课程名) FROM kc WHERE 课程号= '107'PRINT '107号课程名称的长度为:'+CONVERT(varchar(4),@length)4)单击“SQL编辑器”工具栏上的“分析”按钮,检查输入的T-SQL语句是否有语法错误。
如果有语法错误,则进行修改,直到没有语法错误为止。
5)确保无语法错误后,单击“SQL编辑器”工具栏上的“执行”按钮,执行结果如图10-1所示。
2.应用聚合函数1)在“查询编辑器”窗口内输入以下语句,统计xsqk表中的学生人数,并输出结果。
USE xscjDECLARE @counter intSELECT @counter=COUNT(*) FROM xsqkPRINT 'xsqk表中共有'+CAST(@counter AS varchar(4))+ '名学生'2)单击“SQL编辑器”工具栏上的“执行”按钮,执行结果如图10-2所示。
3.应用字符串函数1)在“查询编辑器”窗口内输入以下语句,将字符串“Welcome to SQL Server”转换为大写字母输出。
DECLARE @change varchar(30)SET @change= 'Welcome to SQL Server 'PRINT UPPER(@change)2)单击“SQL编辑器”工具栏上的“执行”按钮,执行结果如图10-3所示。
T-SQL语言基础第七课 T-SQL语言基础课前导读?基础知识 ?重点知识基础知识SQL语言概述。
重点知识数据类型、常量、运算符和常用函数,读者应结合上机实战熟练相关操作。
课堂讲解在SQL Server 2000中,企业管理器是一个功能强大、操作方便的图形化管理工具,几乎所有的操作都可以在其中完成,但它仍不能完全取代SQL语句。
无论是SQL Server 2000,还是在其他的数据库中,SQL都扮演了重要的角色,要成为一名突出的数据库开发人员,首先就应该掌握SQL语言。
本课将介绍SQL语言的基本概况、数据类型、常量、运算符和常用函数等内容。
?SQL语言概述 ?数据类型 ?常量 ?运算符 ?常用函数SQL语言概述SQL是Structured Query Language(结构化查询语言)的缩写,是关系数据库使用的标准数据库查询语言。
SQL在20世纪70年代由IBM开发出来,随着关系数据库管理系统的不断推出,SQL语言被广泛应用。
由于关系数据库供应商都根据需要定义了自己的SQL语法规则,例如,Microsoft使用的SQL为Transact-SQL(简称T-SQL),Oracle使用的SQL为SQL-Plus。
为了统一各种数据库产品中SQL语法,ANSI(American National Standard Institute,美国国家标准局)制定了SQL语言标准。
最早的ANSI标准于1986年完成,它也被叫做SQL-86,目前新的SQL标准是1992年制定的SQL-92。
很显然,各个数据库供应商不可能抛弃自己的专长来适应ANSI标准,所以业界使用的SQL语言基本上是以SQL-92为基础,在加上各供应商自己的特有语法。
所以,SQL语言标准有“业界标准”和“ANSI标准”之分。
SQL语言具有“非过程性”的特点,使用SQL编写的程序不能独立运行,必须在特定的数据库管理系统中使用,这与“过程性”的高级程序设计语言,如VB、VC等不同。
引入新课:要编写存储过程、触发器及事务,首先要掌握T-SQL语言的语法规范和语言基础。
一、批处理若干条一次性发送到服务器端的T-SQL语句集合(结束标志为GO语句),编译成一个可执行单元,称为执行计划。
举例说明:如果批处理中的一条语句发生编译错,执行计划就无法编译,从而整个批就无法执行。
有关批处理的限制,详见教材二、注释行注释:――注释文本块注释:/*注释文本*/三、常量与变量1、局部变量:用户定义的~,以@开始(1)声明:DECLARE @变量名数据类型[,…n] (注:刚声明的局部变量其值为NULL)举例:DECLARE @n INT (声明然后赋初值:DECLARE @n INT=0) (2)赋值:SET语句或SELECT语句(举例说明:如果查询返回多行,那么把最后一行的值赋给局部变量)(3)输出Print 局部变量或字符串表达式SELECT 局部变量AS 自定义列名(4)作用域:只能在声明的批处理、存储过程或触发器中使用(举例说明:局部变量的声明与使用必须在同一个批内)2、全局变量:系统提供的~,以@@开始,用户不能定义及修改全局变量,但能通过全局变量来测试系统的设定值或者T-SQL命令执行后的状态值。
也可用PRINT、SELECT命令输出举例:@@ERROR的值表示最后执行的T-SQL语句的错误号,如执行正确,则为0@@ROWCOUNT的值表示受上一个SQL语句影响的行数四、流程控制语句1、 BEGIN…END:语句块2、 IF…ELSE举例:声明一个局部变量,并给其赋值,然后判断其是偶数还是奇数并输出结果DECLARE@n intset@n=12IF@n%2=0beginprint@nprint'偶数!'endELSEprint'奇数!'go3、 CASE函数(1)简单~: CASE 表达式WHEN 值1 THEN 返回表达式1WHEN 值2 THEN 返回表达式2…[ELSE 返回表达式n+1]END(2)搜索~: CASEWHEN 条件表达式1 THEN 返回表达式1WHEN 条件表达式2 THEN 返回表达式2…[ELSE 返回表达式n+1]END举例:(1)根据成绩等级gradeLevel值(‘A’.’B’.’C’,’D’,’E’)输出(‘优秀’,良好,中等,及格,不及格)DECLARE@gradeLevel char(1),@result VARCHAR(10)SET@gradeLevel='a'SET@result=CASE upper(@gradeLevel)WHEN'A'THEN'优秀'WHEN'B'THEN'良好'WHEN'C'THEN'中等'WHEN'D'THEN'及格'WHEN'E'THEN'不及格'ELSE'超出范围!'ENDPRINT@result(2)根据成绩分数,输出成绩等级:优秀,良好,中等,及格,不及格DECLARE@grade_avg DECIMAL(3,1)DECLARE@result VARCHAR(10)SELECT@grade_avg=AVG(stuScore)FROM stuMarksWHERE stuNo='S001'SET@result=CASEWHEN@grade_avg>=90 and@grade_avg<=100 THEN'优秀'WHEN@grade_avg>=80 and@grade_avg<90 THEN'良好'WHEN@grade_avg>=70 and@grade_avg<80 THEN'中等'WHEN@grade_avg>=60 and@grade_avg<70 THEN'及格'WHEN@grade_avg>=0 and@grade_avg<60 THEN'不及格ELSE'超出范围!'ENDprint@grade_avgPRINT@result(3)把stuINfo表的stuSex改为用tinyint类型,分别用0,1表示性别’男’、’女’,然后查询学号,姓名及性别,要求输出结果时,性别转换成相应的男、女表示SELECT姓名=stuname,性别=case stuSexwhen 1 then'男'when 0 then'女'endFROM stuInfo4、 WHILE语句:WHILE 条件BEGIN[break|continue]END举例:计算1+2+。
TSQL编程基础目录T-SQL编程之一,变量和基本语句 (3)存储过程和触发器 (11)SQL Server2000自定义函数 (26)T-SQL编程之一,变量和基本语句一个标准的计算机语言,大概要提供的必要主要功能是:变量说明、分支判断、循环和输入输出结果。
T-SQL也一样,具有这些功能,只不过T-SQL的输入和输出不是界面,而是表。
完全精确描述一个计算机语言,大概要很厚的书才能做到,好在目前这些书籍的发行也很多,许多书描述的都很详细。
以下让我们按计算机语言的一般过程,介绍T-SQL计算机语言。
1 变量说明在T-SQL中,变量命名是:@变量名称变量名称同一般的计算机语言变量命名没差异,都是英文字母开头。
而类型则同数据库系统的字段类型,不区分大小写,如:DECLARE @A CHAR(10)DECLARE @B V ARCHAR(50DECLARE @F FLOAT数据库上有的类型都可以这么说明,同一般计算机语言不同的是,变量前的@,是有说法的,有一个@,表示局部变量,有两个则是全局变量。
如:DECLARE @N INT /*说明局部变量@N */DECLARE @@M INT /*说明全局变量@@M */全局变量是可以跨数据库访问的变量,而局部变量仅仅使用在本数据库的本程序中。
在SQLSERVER中,都提供了一些标准全局变量,如:@@IDENTITY : 返回最后插入行的标识列的列值。
@@ERROR : 返回最后执行的Transact-SQL语句的错误代码。
没有错误则为零@@ROWCOUNT : 返回受上一语句影响的行数,任何不返回行的语句将这一变量设置为0。
@@DBTS : 返回当前数据库的时间戳值必须保证数据库中时间戳的值是惟一的。
上面的全局变量是最常用的@@SERVERNAME: 返回运行SQL Server 2000本地服务器的名称。
@@REMSERVER: 返回登录记录中记载的远程SQL Server服务器的名称。
第一章简单SQL语句1.1、数据查询数据查询的一般格式为:SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]...[into 新表名]FROM<表名或视图名>[][WHERE <条件表达式>][GROUP BY <列名1>[HAVING<条件表达>]][ORDER BY <列名2>[ASC|DESC]]说明:整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM 子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。
INTO子句用于将查询到的结果数据按照原来的数据类型保存到一个新建的表中。
如果有GROUP BY 子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一组。
通常会在每组中作用聚集函数。
如果GROUP BY 子句带HAVING短语,则只有满足指定条件的组才予以输出。
如果有ORDER BY 子句,则结果表还要按<列名2>的值的升序(ASC)或降序(DESC)排序。
注:[]表示可选项,该子句表达可有也可无。
查询条件运算符作用比较>、>=、=、<、<=、<>、!=、!>、!<比较大小确定范围BETWEEN …AND、NOT BETWEEN …AND判断列值是否在指定范围内确定集合IN、NOT IN判断列值是否为列表中的指定值字符匹配LIKE、NOT LIKE 判断列值是否与指定的字符匹配格式相符空值IS NULL、IS NOT NULL判断列值是否为空逻辑运算(逻辑运算)AND、OR、NOT用于多条件的逻辑连接1.1.1使用INTO子句使用INTO子句允许用户定义一个新表,并且把SELECT子句的数据插入到新表中,其语法格式如下:SELECT 选取的列INTO 新表名FROM 表名WHERE 查询条件使用SELECT INTO 插入数据时,需要注意以下几点:(1)新表不能存在,否则会产生错误信息。
数据库原理实验报告-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语言编程基础
姓名:学号:
专业:网络工程班级:
同组人:无实验日期:2012-4-19【实验目的与要求】
1.熟练掌握变量的定义和赋值。
2.熟练掌握各种运算符。
3.熟练掌握流程控制语句,尤其是条件语句和循环语句。
【实验内容与步骤】
10.1. 变量的定义与输出
1.变量的定义和赋值
1) 局部变量的声明:
DECLARE @variable_name DataType
例如:
declare @stuname varchar(20)--声明一个存放学员姓名的变量stuname.
declare @stuseat int--声明一个存放学员座位号的变量stuseat
2) 局部变量的赋值:
局部变量的赋值有两种方法:
a) 使用Set语句
Set @variable_name=value
b) 使用Select语句
Select @variable_name=value
实验:
运行以下程序段,理解变量的使用。
--局部变量的赋值与使用
declare @customer_name varchar(20)--声明变量用来存放客户名称
set @ customer_name ='家电市场'--使用SET语句给变量赋值
select*
from xss
where客户名称=@customer_name --通过局部变理向sql语句传递数据
请给出运行结果:
练习:
创建一名为 Product_name的局部变量,并在SELECT语句中使用该变量查找“冰箱”的”价格”和”库存量”。
给出相应的语句
declare @Product_name varchar(20)
set @Product_name ='冰箱'
select价格,库存量
from CP
where产品名称= @Product_name
请给出运行测试结果:
2.两种输出语句:
1) Print 输出单个的局部变量或字符串表达式. 如:PRINT '价
格合理';
2) Select 局部变量 as 自定义别名。
3.全局变量:
1) SQL Server2005中的所有全局变量都使用两个@@标志作为
前缀.
常见全局变量
变量含义
@@ERROR 最后一个T-SQL错误的错误号
@@IDENTITY最后一次插入的标识值@@LANGUAGE当前使用的语言的名称
@@MAX_CONNECTIONS 可以创建的同时连接的最大数目
@@ROWCOUNT 受上一个SQL语句影响的行数
@@SERVERNAME本地服务器的名称
@@SERVICENAME 此计算机上的SQL服务的名称
@@TRANSCOUNT当前连接打开的事务数@@VERSION SQL Server的版本信息
@@TIMETICKS 当前计算机上的每刻度的微秒数
2) 全局变量的使用
运行以下程序段,理解全局变量的使用。
use cpxs
go
select*from cp
insert into cp values('0221055','爱多
VCD',2326,12)
select当前的错误号=@@error
--0
update CP set库存量=120 where产品编号
='0221055'
print'当前的错误
号'+convert(varchar(20),@@error)
--当前的错误号
select更新的产品编号=@@identity
--6
select当前使用的语言的名称=@@language
--简体中文
select本地服务器的名称=@@servername
--DEMONSTRATOR
select此计算机上SQL服务的名称=@@servicename
--MSSQLSERVER
select SQLServer的版本信息=@@version 给出运行结果:
10.2. 条件结构
1. 在查询分析器中执行下面的语句,体会IF...ELSE...结构
DECLARE @Price float
SELECT @Price =价格 FROM CP WHERE 产品编号='100002' IF @Price >=3000
PRINT '价格偏高'
ELSE
PRINT '价格合理'
PRINT '价格为:'+CONVERT(CHAR(5),@Price)
给出运行结果:
2.练习:自己编写一段程序判断CP表中价格与平均值的比较,将低于平均值的数据行输出来。
给出相应的语句段和运行结果:
declare @Avg_price float
select @Avg_price =avg(价格)from CP
select产品均价=@Avg_price
print'产品均价是:'+convert(char(20),@Avg_price)
select*
from CP
where价格<@Avg_price
10.3. 循环结构
1.下面是计算1~100和的循环结构,执行之,体会循环结构程序。
(注意语句块标志BEGIN...END)
DECLARE @SUM INT,@I INT
SELECT @I=1,@SUM=0
WHILE @I<=100
BEGIN
SELECT @SUM=@SUM+@I
SELECT @I=@I+1
END
PRINT '1...100的和为:'+CONVERT(CHAR(4),@SUM)
给出运行结果:
2.练习:编写一个程序用于计算10的阶乘
给出相应的程序和运行结果:
DECLARE @SUM INT,@I INT
SELECT @I=1,@SUM=1
WHILE @I<=10
BEGIN
SELECT @SUM=@SUM * @I
SELECT @I=@I+1
END
PRINT'10的阶乘为:'+CONVERT(CHAR(20),@SUM)
10.4. 完成以下T-SQL语言编程
(1)用T-SQL语言编程输出3~300之间能被7整除的数。
给出相应的程序和运行结果:
DECLARE @I INT
SELECT @I=3
WHILE @I<=300
BEGIN
if(@I%7=0)
print''+convert(char(4),@I)
SELECT @I=@I+1
END
(2)用T-SQL语言编程输出3~100之内的素数。
给出相应的程序和运行结果:
declare @a int,@b int,@c int
set @a=3
set @b=2
while(@a<100)
begin
set @c=sqrt(@a)
while(@b<=@c)
begin
if(@a%@b=0)
break
if(@b=@c)
print'素数:'+convert(char(4),@a) set @b=@b+1
end
set @a=@a+1
end
(3)在CP表中查找名为”长虹彩电”的产品,如果存在,则显示该产
品的信息;否则,显示”查无此产品”。
给出相应的程序和运行结果:
declare @x nchar(30)
set @x='长虹彩电'
if exists(select*
from CP
where产品名称=@x
)
select*
from CP
where产品名称=@x
else
print'查无此产品'
(4)查看有无客户编号为”000004”的销售记录,如果有,则显示“有”,并查询显示该客户销售的产品信息。
给出相应的程序和运行结果:
declare @kh nchar(10),@cpb char(10)
set @kh='000004'
if exists(select产品编号
from CPXSB
where客户编号=@kh
)
print'有'
select @cpb=产品编号
from CPXSB
where客户编号=@kh
select*
from CP
where产品编号=@cpb。