1、SQL Server 概述SQL Server是使用客户机/服务器(C/S)体系结构的关系型数据库管理系统(RDBMS)。1988年推出了第一个年推出了第一个OS/2版本。版本。1992年,年,SQL Server移植到移植到NT上后,上后,Microsoft成成了这个项目的主导者。了这个项目的主导者。1994年以后,年以后,Microsoft专注于开发、推广专注于开发、推广SQL Server的的Windows NT版本版本 1996年,年,Microsoft公司推出了公司推出了SQL Server 6.5版本版本 1998年,推出了年,推出了SQL Server 7.0版本版本2000年,
2、推出了年,推出了SQL Server 2000。2005年年,推出了,推出了SQL Server 2005。2008年年,推出了,推出了SQL Server 2008。2012年年,推出了,推出了SQL Server 2012。2014年年,推出了,推出了SQL Server 2014。MS SQL Server 概述概述 SQL SERVER的管理内容提要 SQL Server服务器的数据库管理 系统数据库 数据库操作 系统数据表 数据库对象 数据库类别 数据库对象 数据类型 SQL Server 数据库管理 Microsoft SQL Server 安装成功后,系统会自动创建4个系统数据库
3、。这些系统数据库的文件存储在Microsoft SQL Server默认安装目录下的MSSQL子目录的Data文件夹中,数据库文件的扩展名为.mdf,数据库日志文件的扩展名为.ldf。SQL Server 系统的数据库管理功能借助于这些系统数据库来实现。一、一、SQL Server系统数据库系统数据库1.Master 1.Master 数据库数据库 记录了SQL Server系统的所有系统信息。这些系统信息包括所有的登录信息、系统所有的登录信息、系统设置信息、设置信息、SQL Server的初始化信息和其的初始化信息和其它系统数据库及用户数据库的相关信息它系统数据库及用户数据库的相关信息。2.
4、Model 2.Model 数据库数据库 是所有用户数据库和Tempdb数据库的模板数据库。一、一、SQL Server系统数据库系统数据库 SQL Server 数据库管理3.Tempdb3.Tempdb数据库数据库 是一个临时数据库。Tempdb数据库由整个系统的所有数据库使用。SQL Server每次启动时,tempdb数据库被重新建立。当用户及SQL Server断开连接时,其临时表和存储过程被自动删除。4.Msdb4.Msdb数据库数据库 是代理服务数据库来安排报警、作业并记录操作。一、一、SQL Server系统数据库系统数据库 SQL Server 数据库管理数据库创建有两条途径
5、:数据库创建有两条途径:其一,管理器可视化操作;其一,管理器可视化操作;其二,其二,Transact SQL命令方式。命令方式。1可视化操作可视化操作提供的是可视化的操作界面提供的是可视化的操作界面 2SQL命令方式命令方式命令:命令:CREATE DATABASE 说明:说明:命令执行的位置,可在查询分析器中;或命令执行的位置,可在查询分析器中;或在前台程序中在前台程序中 SQL Server 数据库管理二、二、数据库的创建数据库的创建System.Data.SqlClient.SqlConnection cn=new System.Data.SqlClient.SqlConnection(
6、);cn.ConnectionString=Data Source=NTSERVER0SQL2005;User ID=sa;Password=123456;cn.Open();System.Data.SqlClient.SqlCommand cm=new System.Data.SqlClient.SqlCommand();cm.Connection=cn;cm.CommandType=CommandType.Text;cm.CommandText=CREATE DATABASE MYDB2;cm.ExecuteNonQuery();cn.Close();SQL Server 数据库管理例:例
7、:ADO.NET连接方式实现数据库的创建:连接方式实现数据库的创建:二、二、数据库的创建数据库的创建 Microsoft 公司从此公司从此7.0版本后停止了使用数据库版本后停止了使用数据库设备的概念(数据备份中仍然使用),直接使用设备的概念(数据备份中仍然使用),直接使用操作系统文件,操作系统文件分为:主要数据文操作系统文件,操作系统文件分为:主要数据文件、次数据文件和日志文件。件、次数据文件和日志文件。主要数据文件主要数据文件:是数据库的起点,指向数据库中文件的其它部分。每:是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名个数据库都有一
8、个主要数据文件。主要数据文件的推荐文件扩展名是是.mdf。次要数据文件次要数据文件:包含除主要数据文件外的所有数据文件。有些数据库:包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是数据文件的推荐文件扩展名是.ndf。日志文件日志文件:包含恢复数据库所需的所有日志信息。每个数据库必须至少包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是.
9、ldf。SQL Server 数据库管理三、三、数据库的文件系统数据库的文件系统(结构结构)数据库选项是指用来在某个数据管理范围内有效参数据库选项是指用来在某个数据管理范围内有效参数,用于控制数据库的某些特性和行为。数,用于控制数据库的某些特性和行为。选项的设置方法选项的设置方法,有两种:,有两种:其一,管理器中可视化设置其一,管理器中可视化设置 其二,命令方式其二,命令方式 1可视化设置可视化设置(企业管理器企业管理器)2命令方式命令方式 sp_dboption dbname=database ,optname=option_name ,optvalue=value SQL Server 数
10、据库管理四、四、数据库的选项数据库的选项说明:说明:参数说明参数说明A.dbname=database 在其中设置指定选项的数据库的名称。database 的数据类型为 sysname,默认值为 NULL。B.optname=option_name 要设置的选项的名称。没有必要输入完整的选项名称。Microsoft SQL Server 可识别名称中任何独有的部分。如果选项名称包含空格或者关键字,请将选项名称用引号引起来。如果省略此参数,sp_dboption 将列出处于打开状态的选项。option_name 的数据类型为 varchar(35),默认值为 NULL。C.value=value
11、 option_name 的新设置。如果省略此参数,sp_dboption 将返回当前设置。value 可以是 true、false、on 或 off。value 的数据类型为 varchar(10),默认值为 NULL。SQL Server 数据库管理四、四、数据库的选项数据库的选项 举例举例 自动缩小数据库文件的大小自动缩小数据库文件的大小autoshrink 设为设为 truesp_dboption MyDB,autoshrink,true 更改数据库的名称更改数据库的名称single user设为设为 true sp_dboption MyDB,single user,truesp_r
12、enamedb MyDB,MyDB1sp_dboption MyDB1,single user,false 批量数据操作批量数据操作select into/bulkcopy设为设为 truesp_dboption MyDB1,select into/bulkcopy,true SQL Server 数据库管理四、四、数据库的选项数据库的选项1查看数据信息查看数据信息 USE 设置当前数据库设置当前数据库 Sp_help db_name 查看指定数据库查看指定数据库 Sp_databases _查看所有数据库信息查看所有数据库信息2数据库更名数据库更名Sp_renamedb old_name n
13、ew_name说明:单用户模式下才能改。说明:单用户模式下才能改。3修改数据库选项修改数据库选项 sp_dboption4修改数据库的大小修改数据库的大小 SQL Server 数据库管理五、五、数据库的管理数据库的管理格式:格式:DROP DATABASE dataname_name例如:例如:DROP DATABASE MyDb SQL Server 数据库管理六、六、数据库的删除数据库的删除 数据备份对于数据的安全性起到极为重要数据备份对于数据的安全性起到极为重要的作用。操作方式:的作用。操作方式:其一,可视化操作其一,可视化操作 其二,命令方式。其二,命令方式。可视化操作:可视化操作:
14、1、备份、备份 2、还原、还原 SQL Server 数据库管理七、七、数据库的备份和还原数据库的备份和还原 在系统数据库中,事先定义了若干的数据表。这些数据表记录了所有服务器活动的信息。在系统使用中不能直接修改系统表的内容。其中系统表的数据信息的破坏,有可能会造成难以诊断的错误甚至系统瘫痪。只能通过系统提供的存储过程和系统函数访问这些据表。系统数据表可简单分为两大类:服务器级服务器级的(只有master中存在)和数据库级数据库级的(所有数据库中都存在)。SQL Server 2005版本,在SYS后加”.”。八、八、数据库的系统数据表数据库的系统数据表1.系统表的分类系统表的分类名称名称说明
15、说明备注备注Sys.altifles记录文件的状态及变化信息记录文件的状态及变化信息Sys.devices保存系统数据库设备和备份设备保存系统数据库设备和备份设备信息。信息。Sys.oledbusers记录连接服务器的用户名、密码记录连接服务器的用户名、密码等信息等信息Sys.cachepbjects记录高速缓存的使用情况记录高速缓存的使用情况Sys.languages记录服务器所能识别的语言记录服务器所能识别的语言Sys.perfinfo记录有关统计服务器性能的计数记录有关统计服务器性能的计数器的信息器的信息Sys.charsets记录字符集和排列顺序的相关信记录字符集和排列顺序的相关信息息
16、2.服务器级的系统数据表服务器级的系统数据表名称名称说明说明备注备注Sys.lockinfo记录各种数据封锁信息记录各种数据封锁信息Sys.processes记录正在进行中的进程信息记录正在进行中的进程信息Sys.configures记录服务器的配置信息记录服务器的配置信息Sys.Logins记录所有的本地帐户信息记录所有的本地帐户信息Sys.remotelogins记录所有远程帐户信息记录所有远程帐户信息Sys.curconfigs记录服务器当前的配置信息记录服务器当前的配置信息Sys.messages记录所有的系统错误及警告信记录所有的系统错误及警告信息息Sys.databases记录所有
17、的数据库相关信息记录所有的数据库相关信息Sys.servers记录所有可以访问的记录所有可以访问的SQL Server服务器信息服务器信息2.服务器级的系统数据表服务器级的系统数据表名称名称说明说明备注备注Sys.files保存数据库的数据文件和日志文保存数据库的数据文件和日志文件信息件信息Sys.objects保存数据库的所有对象信息。保存数据库的所有对象信息。Sys.Columns记录表、视图的列和存储过程中记录表、视图的列和存储过程中的参数信息的参数信息Sys.foreignkeys记录有关外键约束的所有信息记录有关外键约束的所有信息Sys.permissins记录有关对象的访问权限信息
18、记录有关对象的访问权限信息Sments记录数据库对象定义时的简介信息记录数据库对象定义时的简介信息Sys.fulltextcatalogs记录全文的目录信息记录全文的目录信息Sys.protects记录有关帐户信息记录有关帐户信息记录了各自数据库的系统信息3.数据库级的系统数据表数据库级的系统数据表系统数据类型 数据表中的列、局部变量在使用之前必须指定数据表中的列、局部变量在使用之前必须指定所表示的数据类型。所表示的数据类型。数据类型大致可以分为系统数据类型、自定义数据类型大致可以分为系统数据类型、自定义数据类型。数据类型。常用的系统数据类型有:常用的系统数据类型有:数值型、字符型、日期时间型
19、等数值型、字符型、日期时间型等 系统数据类型是SQL Server预先定义好的,可以直接使用。1整型数据类型 (1)int(integer):4个字节 -231231-1 (2)Smallint:2个字节 -215215-1(3)Tinyint:1个字节 0255 (4)Bigint:8个字节 -263263-1 系统数据类型一、一、系统数据类型系统数据类型 2位数据类型 Bit称为位数据类型,有两种取值:0和1。如果一个表中有8个或更少的bit列时,用1个字节存放。如果有916个bit列时,用2个字节存放。在输入0以外的其它值时,系统均把它们当1看待。系统数据类型一、系统数据类型一、系统数据
20、类型 3浮点数据类型 用于存储十进制小数,采用只入不舍的方式 (1)real:4个字节的,最大7位精确位数。(2)float:可以精确到第15位小数,默认占用8个字节的存储空间。float数据类型也可以写为:float(n)说明:其中 n为115之间的整数值。当n取17时,系统用4个字节存储它;当n取815时,用8个字节存储它。系统数据类型一、系统数据类型一、系统数据类型 4.精确表示的浮点数据类型 Decimal和numeric可以提供小数所需要的实际存储空间,可以用217个字节来存储。其格式为decimal(p,s)和numeric(p,s)说明:p _指明小数点两边总位数,s _小数点后
21、的位数该数据类型是精确表示的,数的表示范围有p决定。1 9 5 1019 9 2028 13 2938 17数值类型的总位数不包括小数。numeric类型的列可作为唯一标识(identity);decimal可简写为dec.例如:decimal(10,4),表示共有10位数,其中整数6位,小数4位。系统数据类型一、系统数据类型一、系统数据类型 5货币数据类型(1)Money:用于存储货币值,数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范 围 为-9 2 2 3 3 7 2 1 3 6 8 5 4 7 7.5 8 0 8 922337213685477.5808,精度为货币单
22、位的万分之一。(2)Smallmoney:其存储范围为:-214748.3468 214748.3467。当为money或smallmoney的表输入数据时,可以在有效位置前面加一个货币单位符号(如$或其它货币单位的记号)。系统数据类型一、系统数据类型一、系统数据类型 6字符(串)数据类型 用来存储各种字母、数字符号和特殊符号。在使用时需要在其前后加上英文单引号。(1)CharChar:占用1个字节。其定义形式为:char(n)n的取值为18000。默认n的值为1。(2)VarcharVarchar:可以存储长达8000个字符的可变长度字符串,和char类型不同varchar类型根据输入数据的
23、实际长度而变化。其定义形式为:varchar(n)系统数据类型一、系统数据类型一、系统数据类型(3)NcharNchar:采用Unicode(统一字符编码标准)字符集每个Unicode字符用两个字节为一个存储单位。其定义形式为:nchar(n)(4)NvarcharNvarchar:使用Unicode字符集的Varchar数据类型。其定义形式为:nvarchar(n)系统数据类型一、系统数据类型一、系统数据类型 7日期和时间数据类型(1)Datetime:占用8个字节。用于存储日期和时间的结合体,可以存储从公元1753年1月1日零时起公元9999年12月31日23时59分59秒之间的所有日期和
24、时间,其精确度可达三百分之一秒,即3.33毫秒。当存储datetime数据类型时,默认的格式是:MM DD YYYY hh:mm A.M./P.M。当插入数据或者在其它地方使用datetime类型时,需要用单引号把它括起来。系统数据类型一、系统数据类型一、系统数据类型 默认January 1,1900 12:00 A.M。可以接受的输入格式如下:Jan 4 1999、JAN 4 1999、January 4 1999、Jan 1999 4、1999 4 Jan和1999 Jan 4。datetime数据类型允许使用/、-和.作为不同时间单位间的分隔符。(2)Smalldatetime:存储从1
25、900年1月1日2079年6月6日内的日期。4个字节。系统数据类型一、系统数据类型一、系统数据类型 8文本和图形数据类型(1)Text:容量可以在1231-1个字节。在定义Text数据类型时,不需要指定数据长度,SQL Server会根据数据的长度自动为其分配空间。(2)Ntext:采用unicode标准字符集,用于存储大容量文本数据。其理论上的容量为230-1(1,073,741,823)个字节。(3)Image:用于存储照片、目录图片或者图画,其理论容量为231-1(2,147,483,647)个字节。系统数据类型一、系统数据类型一、系统数据类型 9二进制数据类型(1)Binary:其定义
26、形式为binary(n),数据的存储长度是固定的,即n+4个字节。二进制数据类型的最大长度(即n的最大值)为8000,常用于存储图像等数据。(2)Varbinary:其定义形式为varbinary(n),数据的存储长度是变化的,它为实际所输入数据的长度加上4字节。在输入二进制常量时,需在该常量前面加一个前缀0 x。系统数据类型一、系统数据类型一、系统数据类型 10特殊数据类型(1)Timestamp:也称作时间戳数据类型。是一种自动记录时间的数据类型,主要用于在数据表中记录其数据的修改时间。它提供数据库范围内的唯一值。(2)Uniqueidentifier:也称作唯一标识符数据类型。Uniqu
27、eidentifier用于存储一个16字节长的二进制数据类型,它是SQL Server根据计算机网络适配器地址和CPU时钟产生的全局唯一标识符代码(Globally Unique Identifier,简写为GUID)。系统数据类型一、系统数据类型一、系统数据类型 11其它类型(1)sql_variant:用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的SQL Server数据。declare x sql_variant set x=asdfasdf select x set x=1223 select x(2)table:用于存储对表或者视图处理后的结果集。系统数据类型
28、一、系统数据类型一、系统数据类型 11其它类型(3)xml类型:存放xml格式的数据串.(4)datae/time (SQL SERVER 2012)系统数据类型一、系统数据类型一、系统数据类型 命令格式:sp_addtype typename=type,phystype=system_data_type ,nulltype=null_type ,owner=owner_name sp_droptype typename=type 例子:EXEC sp_addtype birthday,datetime,NULLEXEC sp_droptype birthday系统数据类型二、自定义数据类型二
29、、自定义数据类型按模式级别分:物理数据库 逻辑数据库按创建对象分:系统数据库 用户数据库 数据库对象1 1、数据库类别、数据库类别数据库对象是数据库的逻辑结构单元:表、视图、角色、索引、存储过程、触发器、约束 2 2、数据库对象、数据库对象SQL SERVER 的数据库管理操作内容提要 标识符的命名规则标识符的命名规则 运算符、表达式和语句运算符、表达式和语句 存储过程存储过程 触发器触发器 函数函数 游标游标 1、定义、定义 用来表示特定意义的字符序列用来表示特定意义的字符序列 例如:例如:select -查询命令字查询命令字 成绩表成绩表 -表示学生成绩信息表示学生成绩信息 12 -表示数
30、值表示数值12 xyx -表示字符串表示字符串 2、保留字、保留字 在系统中具体特殊定义的标识符。在系统中具体特殊定义的标识符。例如:例如:table select set if else sum where int bit SQL Server的命名规则一、标识符一、标识符 3、常量表示、常量表示 数数 值:值:同其他语言同其他语言 字符串:字符串:前后加单引号前后加单引号 日期时间:日期时间:前后加单引号,引号之间按日期时间的格前后加单引号,引号之间按日期时间的格式写即可。式写即可。说明:说明:在表中添加数据时则不需要单引号。在表中添加数据时则不需要单引号。4、自定义表示对象、变量的标识符
31、、自定义表示对象、变量的标识符 如果不特别说明后面所说的标识符均是指该类标识符如果不特别说明后面所说的标识符均是指该类标识符号。号。一、标识符一、标识符SQL Server的命名规则 在在 MS SQL Server 中标识符的命名方式有两种:中标识符的命名方式有两种:规则标识符和定界标识符。规则标识符和定界标识符。规则标识符规则标识符:遵守一般标识符有关格式的规定。即:遵守一般标识符有关格式的规定。即:以字母(汉字)、以字母(汉字)、_、#、开始的字符(包含字母开始的字符(包含字母(汉汉字字)、_、#、数字、数字、$)序列。)序列。例如:例如:My I X1 x_1 CJB i x#tdb#
32、xyz 学生信息表、学号学生信息表、学号 等等等等说明:说明:1)、标准标识符格式、标准标识符格式 下一页下一页二、自定义标识符的命名二、自定义标识符的命名 SQL Server的命名规则 标识符的首字母必须是下列两种情况之一:标识符的首字母必须是下列两种情况之一:英文字母英文字母(汉字汉字)_、#标识符的首字母以后可以是:标识符的首字母以后可以是:英文字母英文字母(汉字汉字)_、#、$0-9 标识符不能是标识符不能是SQL 的保留字的保留字 标识符号内部不容许有空格或特殊字符(运算标识符号内部不容许有空格或特殊字符(运算符等)。符等)。二、自定义标识符的命名二、自定义标识符的命名 SQL S
33、erver的命名规则2、自定义标识符命名具有特定的含义、自定义标识符命名具有特定的含义 开始的表示全局变量开始的表示全局变量 开始的表示局部变量开始的表示局部变量#开始的表示全局对象开始的表示全局对象#开始的表示局部对象开始的表示局部对象 以其他字母开始的以其他字母开始的,表示永久对象,表示永久对象 以以sp_开始的为系统存储过程开始的为系统存储过程 以以xp_开始的为系统扩展存储过程。开始的为系统扩展存储过程。二、自定义标识符的命名二、自定义标识符的命名 SQL Server的命名规则 定界标识符定界标识符:使用使用 或或“”“”定界符括起来的定界符括起来的符号,定界符内可以规则标识符也可以
34、是非规符号,定界符内可以规则标识符也可以是非规则标识符。则标识符。例如:例如:x -表示对象表示对象 等价于等价于 x xh -表示学号表示学号 等价于等价于 x zh ang -中间有空格的标识符中间有空格的标识符 js+xs -中间有运算符的标识符中间有运算符的标识符 select -标识符为关键字标识符为关键字 12 -标识符为关键字标识符为关键字 二、自定义标识符的命名二、自定义标识符的命名 SQL Server的命名规则SQL Server 编程结构一、算术运算一、算术运算+、-、*、/、%(求余求余)二、关系运算二、关系运算、=、=、=、或或!=三、逻辑运算三、逻辑运算 第一节第一
35、节 运算符和表达式运算符和表达式 运算符运算符含义含义NOT对任何其它布尔运算符的值取反。对任何其它布尔运算符的值取反。AND如果两个布尔表达式都为如果两个布尔表达式都为 TRUE,那么就,那么就为为 TRUE。OR如果两个布尔表达式中的一个为如果两个布尔表达式中的一个为 TRUE,那么就为那么就为 TRUE。BETWEEN 如果操作数在某个范围之内,那么就为如果操作数在某个范围之内,那么就为 TRUE。SQL Server 编程结构 第一节第一节 运算符和表达式运算符和表达式 运算符运算符含义含义EXISTS如果子查询包含一些行,那么就为如果子查询包含一些行,那么就为 TRUE。IN如果操作
36、数等于表达式列表中的一个,那如果操作数等于表达式列表中的一个,那么就为么就为 TRUE。LIKE如果操作数及一种模式相匹配,那么就为如果操作数及一种模式相匹配,那么就为 TRUE。ALL如果一系列的比较都为如果一系列的比较都为 TRUE,那么就为,那么就为 TRUE。ANY如果一系列的比较中任何一个为如果一系列的比较中任何一个为 TRUE,那么就为那么就为 TRUE。SOME如果在一系列比较中,有些为如果在一系列比较中,有些为 TRUE,那,那么就为么就为 TRUE。说明:说明:ANY|SOME|ALL 用于标量值及单列集中的值进用于标量值及单列集中的值进行比较。行比较。格式:格式:=|!=|
37、=|!|=|!SOME|ANY|ALL (SELECT 单列子查询单列子查询)例例1:判断成绩表中是否成绩都超过判断成绩表中是否成绩都超过60分。分。SOME(SELECT CJ FROM XSCJB WHERE KCMC=计算机计算机)60 等价于等价于Exists(SELECT CJ FROM XSCJB WHERE KCMC=计算机计算机 AND CJ60)第一节第一节 运算符和表达式运算符和表达式 SQL Server 编程结构例例2:判断成绩表中是否所有成绩均不超过:判断成绩表中是否所有成绩均不超过91分。分。第一节第一节 运算符和表达式运算符和表达式 SQL Server 编程结构
38、declare sf bitdeclare sf bitif(all(select cj from cjb)91)if(all(select cj from cjb),=,=,!=,!,!比较运算符比较运算符 (位异或)、(位异或)、&(位及)、(位及)、|(位或)(位或)NOT AND ALL、ANY、BETWEEN、IN、LIKE、OR、SOME =(赋值)(赋值)第一节第一节 运算符和表达式运算符和表达式 SQL Server 编程结构1变量的分类变量的分类 在在SQL SERVER 中变量分为两类:中变量分为两类:局部变量:以一个局部变量:以一个开始的字母数字串。开始的字母数字串。生存
39、期:本模块或批处理中生存期:本模块或批处理中全局变量:以两个全局变量:以两个开始的字母数字串。开始的字母数字串。生存期:本次系统生存期:本次系统(SQL SERVER服务器服务器)启动到退出系统启动到退出系统2变量的定义变量的定义DECLARE ,例:例:DECLARE I INT,j INTDECLARE str VARCHAR(20)第二节第二节 语句语句 一、变量的定义及赋值一、变量的定义及赋值 SQL Server 编程结构3.变量的赋值变量的赋值A简单的赋值简单的赋值SELECT =SET =例:例:SELECT I=100SET str=张张B取数据表中的数据赋值局部变量取数据表中
40、的数据赋值局部变量SELECT =,FROM 例:例:SELECT str=XM FROM XSDAB WHERE XH=1 第二节第二节 语句语句 一、变量的定义及赋值一、变量的定义及赋值 SQL Server 编程结构说明:说明:若非局部变量,采用的上述语句,将返回结果为记录集,若非局部变量,采用的上述语句,将返回结果为记录集,列名为该标识符。列名为该标识符。例:例:SELECT zt=0 SELECT name=XM FROM XSDAB WHERE XH=14全局变量全局变量 是用来记录是用来记录SQL SERVER服务器活动状态的一组数据。服务器活动状态的一组数据。在在SQL SER
41、VER 中可以直接使用。中可以直接使用。第二节第二节 语句语句 一、变量的定义及赋值一、变量的定义及赋值 SQL Server 编程结构常用的全局变量:常用的全局变量:ERROR 返回最后执行的返回最后执行的SQL 语句的错误代码。语句的错误代码。0表示表示执行正确,非零表示错误代码。执行正确,非零表示错误代码。ROWCOUNT 返回上一语句影响的行数。返回上一语句影响的行数。CURSOR_ROWS 返回连接上最后打开的游标中当前存在的合格返回连接上最后打开的游标中当前存在的合格行的数量。可调用行的数量。可调用 CURSOR_ROWS,以确定,以确定当它被调用时,符合游标的行的数目被进行了检索
42、。当它被调用时,符合游标的行的数目被进行了检索。第二节第二节 语句语句 一、变量的定义及赋值一、变量的定义及赋值 SQL Server 编程结构LOCK_TIMEOUT 返回当前会话的当前锁定超时设置,单位为毫返回当前会话的当前锁定超时设置,单位为毫秒。秒。注:注:SET LOCK_TIMEOUT 允许应用程序设置语句等允许应用程序设置语句等待阻塞资源的最长时间。当一条语句已等待超过待阻塞资源的最长时间。当一条语句已等待超过 LOCK_TIMEOUT所设置的时间,则被锁住的语句所设置的时间,则被锁住的语句将自动取消,并给应用程序返回一条错误信息。将自动取消,并给应用程序返回一条错误信息。在一个
43、连接的开始,在一个连接的开始,LOCK_TIMEOUT 返回返回一个一个 1值。值。第二节第二节 语句语句 一、变量的定义及赋值一、变量的定义及赋值 SQL Server 编程结构1IF语句语句格式:格式:IF SQL语句块语句块1 ELSESQL语句块语句块2 说明说明:A.SQL语句块语句块 必须为单条命令必须为单条命令,若存在多条命令则必须加若存在多条命令则必须加语句括号语句括号 第二节第二节 语句语句 二、常用语句二、常用语句(命令命令)SQL Server 编程结构BEGIN 语句语句1语句语句2ENDB.结果为布尔型的表达式结果为布尔型的表达式.允许为允许为:一般表达式一般表达式i
44、100 含含SELECT 语句的表达式语句的表达式 第二节第二节 语句语句 二、常用语句二、常用语句(命令命令)SQL Server 编程结构(select avg(cj)from cjb)90SOME(SELECT CJ FROM XSCJB WHERE KCMC=JSJ)90(SELECT AVG(CJ)FROM XSCJB WHERE KCMC=JSJ)80SET I=(SELECT COUNT(*)FROM XSCJB WHERE KCMC=JSJ)exists(select*from sysobjects where name=xsdab and type=U)WHERE 条件表达式
45、中能使用的表达式条件表达式中能使用的表达式.第二节第二节 语句语句 二、常用语句二、常用语句(命令命令)SQL Server 编程结构2.WHILE 语句语句 _ 循环语句循环语句格式格式:WHILE 语句块语句块 -循环体循环体说明说明:语句块必须为单条语句语句块必须为单条语句(命令命令),若存在多条命令则若存在多条命令则必须加语句括号必须加语句括号 BEGIN 语句语句1语句语句2 END 第二节第二节 语句语句 二、常用语句二、常用语句(命令命令)SQL Server 编程结构B.循环体中可以使用如下命令循环体中可以使用如下命令:BREAK _ 结束循环语句结束循环语句 CONTINUE
46、 _ 跳过本次循环跳过本次循环.3.GOTO 语句语句 _ 无条件转向语句无条件转向语句格式格式:GOTO 说明说明:标号的设置标号的设置,为为:标号标号:4.RETURN 语句语句用于存储过程用于存储过程,无条件退出存储过程无条件退出存储过程.格式格式:RETURN n说明说明:n为返回值为返回值,缺省缺省 0 表示存储过程执行正确表示存储过程执行正确,非非0表示表示有问题发生有问题发生.第二节第二节 语句语句 二、常用语句二、常用语句(命令命令)SQL Server 编程结构5.CASE 表达式表达式 _ 类似于类似于IIF格式格式1:CASE WHEN THEN WHEN THEN .n
47、 ELSE END 第二节第二节 语句语句 二、常用语句二、常用语句(命令命令)SQL Server 编程结构格式格式2:CASE WHEN THEN WHEN THEN .n ELSE END 第二节第二节 语句语句 二、常用语句二、常用语句(命令命令)SQL Server 编程结构例例:select xm,xb=CASE xb when 1 THEN 男男 ELSE 女女 END from xsdab Select xh,kcmc,cj=CASE when cj=90 then 优优when cj=80 then 良良when cj=70 then 中中when cj=60 then 及格
48、及格else 不及格不及格 end From xscjb 第二节第二节 语句语句 二、常用语句二、常用语句(命令命令)SQL Server 编程结构1批处理是指从客户机传送到服务器上的一组完整的数批处理是指从客户机传送到服务器上的一组完整的数据和据和SQL指令。指令。2特点特点一个批处理可以只包含一条一个批处理可以只包含一条SQL指令,也可以包含多条指令,也可以包含多条SQL指令;指令;批处理的所有语句被当为一个整体,成组地分析、编译和执行。批处理的所有语句被当为一个整体,成组地分析、编译和执行。若干的若干的SQL语句,只能单独存在一个批中。语句,只能单独存在一个批中。CREATE DEFAU
49、LTCREATE PROCEDURECREATE RULECREATE TRIGGERCREATE VIEW3批处理的定义批处理的定义SQL SERVER语句以语句以GO语句作为批处理结束标志。语句作为批处理结束标志。第二节第二节 语句语句 三、批处理三、批处理存储过程及触发器1定义定义 存储过程是一组事先编译好的存储过程是一组事先编译好的SQL代码。代码。等效于其它编程语言中子程序。等效于其它编程语言中子程序。2 为什么使用存储过程?为什么使用存储过程?执行速度快执行速度快 存储过程在创建时经过了编译和优化,执行时不在重复存储过程在创建时经过了编译和优化,执行时不在重复该操作而直接执行。(命
50、令执行时必须经过编译和优化)该操作而直接执行。(命令执行时必须经过编译和优化)采用模块化的程序设计采用模块化的程序设计 一次创建,无数次调用;将若干命令组合在一起,可实一次创建,无数次调用;将若干命令组合在一起,可实现复杂功能。现复杂功能。存储过程在数据库中,独立于前台应用程序有利于对数存储过程在数据库中,独立于前台应用程序有利于对数据库操作的模块化。据库操作的模块化。第一节第一节 概述概述 存储过程及触发器 减少网络通信量减少网络通信量 存储过程在数据库中,应用程序只需发出一个存储过程在数据库中,应用程序只需发出一个调用存储过程的命令即可,减少命令的传输。调用存储过程的命令即可,减少命令的传