第4章Transact-SQL语言基础.ppt
《第4章Transact-SQL语言基础.ppt》由会员分享,可在线阅读,更多相关《第4章Transact-SQL语言基础.ppt(104页珍藏版)》请在三一办公上搜索。
1、第4章 Transact-SQL语言基础,Transact-SQL简介,4.1,Transact-SQL的语法规则,4.2,标识符,4.3,数据类型,4.4,常量,4.5,变量,4.6,运算符与表达式,4.7,函数,4.8,流程控制语句,4.9,注释,4.10,SQL语言:Structured Query Language,结构化查询语言),是目前使用最为广泛的关系数据库查询语言。70年代:由IBM公司开发出来的;1976年开始在商品化关系数据库系统中应用;1986:ANSI确认SQL为关系数据库语言的美国标准,1987年被ISO采纳为国际标准,称为SQL-86;1989:ANSI发布了SQL
2、-89标准,后来被ISO采纳为国际标准;1992:ANSI/ISO发布了SQL-92标准,习惯称为SQL 2;1999年:ANSI/ISO发布了SQL-99标准,习惯称为SQL 3;2003:ANSI/ISO共同推出了SQL 2003标准。尽管ANSI和ISO针对SQL制定了一些标准,但各家厂商仍然针对其各自的数据库产品进行某些程度的扩充或修改。,SQL语言的发展,4.1 Transact-SQL简介,Transact-SQL语言是Microsoft开发的一种SQL语言,简称T-SQL语言。它不仅包含了SQL-86和SQL-92的大多数功能,而且还对SQL进行了一系列的扩展,增加了许多新特性,
3、增强了可编程性和灵活性。该语言是一种非过程化语言,功能强大,简单易学,既可以单独执行,直接操作数据库,也可以嵌入到其他语言中执行。Transact-SQL语言主要包括:数据定义语言(Data Definition Language,DDL)数据操纵语言(Data Manipulation Language,DML)数据控制语言(Data Control Language,DCL)系统存储过程(System Stored Procedure)一些附加的语言元素,4.2 Transact-SQL的语法规则,1.语法中的符号约定,4.2 Transact-SQL的语法规则,例如,SELECT子句的语
4、法如下:SELECT ALL|DISTINCT TOP n PERCENT WITH TIES 其中,语法块进一步定义如下::=*|表名|视图名|表别名.*|列名|表达式|IDENTITYCOL|ROWGUIDCOL AS 列别名|列别名=表达式,.n,4.2 Transact-SQL的语法规则,2.数据库对象名的表示 数据库对象名由四部分组成:服务器名.数据库名.所有者名.|数据库名.所有者名.|所有者名.对象名 当引用某个特定对象时,如果对象属于当前默认的服务器、数据库或所有者,则可以省略服务器名、数据库名或所有者名,但中间的句点不能省略。,4.2 Transact-SQL的语法规则,例如
5、,以下对象名格式都有效:服务器名.数据库名.所有者名.对象名 服务器名.数据库名.对象名 服务器名.所有者名.对象名 服务器名.对象名 数据库名.所有者名.对象名 数据库名.对象名 所有者名.对象名 对象名,4.2 Transact-SQL的语法规则,例如,假设customer 数据库中的一个表employees和一个视图mktg_view具有相同的名为telephone的列。(1)在employees表中引用telephone列,可以使用 customer.employees.telephone来表示。(2)在mktg_view视图中引用telephone列,可以使用 customer.mk
6、tg_view.telephone来表示。,4.3 标识符,标识符用于标识服务器、数据库、数据库对象、变量等。标识符有两种类型:常规标识符 分隔标识符,4.3 标识符,1.常规标识符 指符合标识符的格式规则的标识符。标识符的格式规则如下:长度不超过128个字符。开头字母为a-z或A-Z、#、_ 或 以及来自其它语言的字母字符。后续字符可以是a-z、A-Z、来自其它语言的字母字符、数字、#、$、_、。不允许嵌入空格或其它特殊字符。不允许与保留字同名。,4.3 标识符,注意,以符号、#开头的标识符具有特殊的含义,例如以一个#号开始的标识符表示临时表或过程。以#开始的标识符表示全局临时对象。,4.3
7、 标识符,2.分隔标识符 对于不符合格式规则的标识符,当用于Transact-SQL语句时,必须用双引号或方括号括起来。【例4-1】以下语句的“My Table”表示一个表名称,因为名称中间有空格,因此在语句中需要用双引号或中括号括起来。SELECT*FROM My Table等价于 SELECT*FROM My Table,4.3 标识符,对于常规标识符,可以加上双引号或方括号,也可以不加。【例4-2】以下语句的“authors”表示一个表名称,因为该名称符合标识符的格式规则,因此在语句中可以不用双引号或中括号括起来。SELECT*FROM authors该语句等价于 SELECT*FROM
8、 authors也等价于 SELECT*FROM authors,4.4 数据类型,使用SQL Server创建数据库中的表时,要对表中的每一列定义一种数据类型,数据类型决定了表中的某一列可以存放什么数据。除了定义表需要指定数据类型外,使用视图、存储过程、变量、函数等都需要用到数据类型。SQL Server提供了丰富的系统定义的数据类型,用户还可以在此基础上自己定义数据类型。,4.4.1 整型数据类型,1.bigint类型 存储大小:8个字节,取值范围:-263263-12.int类型 存储大小:4个字节,取值范围:-231231-13.smallint类型 存储大小:2个字节,取值范围:-2
9、15215-14.tinyint类型 存储大小:1个字节,取值范围:0255,4.4.2 定点数据类型,定点数据类型用于表示定点实数,包括numeric和decimal类型。Numeric等价于decimal。格式:decimal(p,s)numeric(p,s)说明:p:表示精度,指定小数点左边和右边十进制数字的最大位数,取值在1到38之间,缺省值为18;s:指定小数点右边十进数的最大位数,取值在0到p之间,缺省值为0。表示范围:-1038+11038-1,4.4.2 定点数据类型,精度:decimal和numeric类型数据的存储字节数与精度p有关。具体如下表:,4.4.3 浮点数据类型,
10、浮点数据类型采用科学计数法存储十进制小数,包括real和float数据类型。,表示范围:-1.79E+3081.79E+308,1.float类型格式:float(n)说明:n:科学记数法尾数的位数,具体如下表:,4.4.3 浮点数据类型,2.real类型 存储大小:4个字节 取值范围:-3.40E+383.40E+38 精度:7位 在SQL Server中,real的同义词为float(24)。,4.4.4 字符数据类型,分为Unicode字符数据类型和非Unicode字符数据类型.Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且
11、唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。非Unicode字符数据类型:允许使用由特定字符集定义的字符。字符集在安装SQL Server时选择,不能更改。非Unicode字符数据类型:char、varchar和text。Unicode字符数据类型:可存储由Unicode标准定义的任何字符,包含由不同字符集定义的所有字符。需要相当于非Unicode数据类型两倍的存储空间。Unicode字符数据数据类型包括:nchar、nvarchar和ntext。对于存储来源于多
12、种字符集的字符的列,可采用这些数据类型。分为固定长度和可变长度字符数据类型。,4.4.4 字符数据类型,1.char类型格式:char(n)功能:定义长度为n个字节的固定长度非Unicode字符数据,每个字符占一个字节。说明:n:18000 存储大小:n个字节(n个字符)2.varchar类型格式:varchar(n)功能:定义长度最多为n个字节的可变长度非Unicode字符数据,每个字符占一个字节。说明:n:18000。存储大小:输入字符的实际长度。长度可为零,4.4.4 字符数据类型,3.nchar类型格式:nchar(n)功能:定义包含n个字符的固定长度Unicode字符数据说明:n:1
13、4000 存储大小:2n个字节4.nvarchar类型格式:nvarchar(n)功能:定义包含最多n个字符的可变长度Unicode字符数据说明:n:14000。存储大小:所输入的字符实际个数的两倍。长度可以为零。,4.4.4 字符数据类型,省略n:在数据定义或变量定义语句中,n的缺省长度为1。在CAST函数中,n的缺省长度为30。,4.4.5 日期和时间数据类型,日期和时间数据类型用于存储日期和时间的结合体。包括datetime和smalldatetime两种类型。1.datetime类型 存储大小:8个字节 表示范围:1753年1月1日零时9999年12月31日23时59分59秒。例:01
14、/01/98 23:59:59 2000-5-29 12:30:482.smalldatetime 存储大小:4个字节 表示范围:1900年1月1日2079年6月6日。例:2000/05/08 12:35 2000-05-29 12:35 2000-05-29,4.4.6 图形(image)数据类型,image数据类型用于存储可变长度二进制数据,其长度界于0到231-1个字节之间。,4.4.7 货币数据类型,货币数据类型包括money和smallmoney数据类型。货币数据存储的精确度为四位小数。1.money类型 存储大小:8个字节 表示范围:-922,337,203,685,477.580
15、8+922,337,203,685,477.58072.smallmoney类型 存储大小:4个字节 表示范围:-214,748.3648214,748.3647,4.4.8 位(bit)数据类型,bit数据类型的取值只有0和1,如果一个表中有不多于8个的bit列,这些列将作为一个字节存储。如果表中有9到16个bit列,这些列将作为两个字节存储。更多列的情况依此类推。,4.4.9 二进制数据类型,二进制数据类型又可以分为binary和varbinary类型。,1.binary类型 格式:binary(n)功能:定义固定长度的n个字节二进制数据,当输入的二进制数据长度小于n时,余下部分填充0。说
16、明:n:18000 存储大小:n+4个字节,4.4.9 二进制数据类型,2.varbinary类型格式:varbinary(n)功能:定义n个字节可变长度二进制数据。说明:n:18000存储大小:为实际输入数据长度加4个字节,而不是n个字节。输入的数据长度可能为0字节。如果在数据定义或变量定义语句中使用时没有指定n,则默认长度n为1。如果在CAST函数中使用时没有指定n,则默认长度n为30。,4.4.10 其他数据类型,1.timestamp类型(时间戳数据类型)存储大小:8个字节。时间戳类型的数据用于提供数据库范围内的惟一值,反映数据库中数据修改的相对顺序,相当于一个单调上升的计数器。当表中
17、的某列定义为timestamp类型时,在对表中某行进行修改或添加行时,相应timestamp类型列的值会自动被更新。,4.4.10 其他数据类型,2.uniqueidentifier类型 用于存储一个16字节长的二进制数据,它是SQL Server根据计算机网络适配器和CPU时钟产生的全局惟一标识符(Globally Unique Identifier,GUID),该数字可以通过调用SQL Server的NEWID函数获得。GUID是一个唯一的二进制数字,世界上的任何两台计算机都不会生成重复的GUID值。GUID主要用于在拥有多个节点、多台计算机的网络中,分配必须具有唯一性的标识符。,4.4.
18、10 其他数据类型,3.sql_variant类型 用于存储除text、ntext、image、timestamp和sql_variant外的其它任何合法的数据。4.table类型 用于存储对表或者视图处理后的结果集。这种新的数据类型使得用变量就可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。5.cursor类型 cursor类型是变量或存储过程 的OUTPUT 参数的一种数据类型,这些参数包含对游标的引用。,4.5 常量,常量也称为标量值,是表示一个特定数据值的符号。常量的格式取决于它所表示的值的数据类型。,4.5 常量,1.字符串常量 字符串常量用单引号括起来。如果要在字符串中
19、包含单引号,则可以使用连续的两个单引号来表示。例如:Chinese Process X is 50%complete.The level for job_id:%d should be between%d and%d.(空字符串)Iam a student,4.5 常量,以上是普通字符串的表示方法,对于Unicode字符串的格式,需要在前面加一个N标识符,N前缀必须是大写字母。例如:Michl是字符串常量 NMichl是Unicode常量 Unicode常量被解释为Unicode数据。Unicode 数据中的每个字符都使用两个字节进行存储,而普通字符数据中的每个字符则使用一个字节进行存储。,4
20、.5 常量,2.二进制常量 二进制常量使用0 x作为前辍,后面跟随十六进制数字字符串。例如:0 xAE 0 x12Ef 0 x69048AEFDD010E 0 x(空二进制常量),4.5 常量,3.bit常量 bit常量使用数字0或1表示。如果使用一个大于1的数字,它将被转换为1。4.datetime常量 datetime常量使用单引号括起来的特定格式的字符日期值表示。例如:April 15,1998 15 April,1998 980415 04/15/98 14:30:24 04:24 PM,4.5 常量,5.整型常量 由正、负号和数字09组成,正号可以省略。例如:1894 2+14534
21、5234-21474836486.decimal常量 由正、负号、小数点、数字09组成,正号可以省略。例如:1894.1204 2.0+145345234.2234-2147483648.10,4.5 常量,7.float和real常量 使用科学记数法表示。例如:101.5E5 0.5E-2+123E-3-12E58.money常量 以可选小数点和可选货币符号作为前缀的一串数字。可以带正、负号。例如:$12$542023.14-$45.56+$423456.99,4.5 常量,9.uniqueidentifier常量 表示全局唯一标识符值的字符串。可以使用字符或二进制字符串格式指定。例如,以下
22、这两个示例指定相同的GUID:6F9619FF-8B86-D011-B42D-00C04FC964FF0 xff19966f868b11d0b42d00c04fc964ff,4.6 变量,变量是可以保存特定类型的单个数据值的对象,SQL Server的变量分为两种:用户自己定义的局部变量和系统提供的全局变量。,4.6.1 局部变量,局部变量的作用范围仅限制在程序的内部。常用来保存临时数据。例如,可以使用局部变量保存表达式的计算结果,作为计数器保存循环执行的次数,或者用来保存由存储过程返回的数据值。,4.6.1 局部变量,1.局部变量的定义格式:DECLARE 局部变量名 数据类型,n说明:局部
23、变量名:必须以开头,符合标识符的命名规则数据类型:系统定义的数据类型;用户定义数据类型。不能是text、ntext或image数据类型。局部变量定义后初始值为NULL。局部变量的作用范围是在其中定义局部变量的批处理、存储过程或语句块。,4.6.1 局部变量,批处理:批处理是客户端作为一个单元发出的一个或多个SQL语句的集合,从应用程序一次性地发送到SQL Server执行。语句块:包含在BEGIN和END语句之间的多个Transact-SQL语句组合为一个语句块。NULL:空值。在数据库内NULl是特殊值,代表未知值的概念。NULL不同于空字符或0。空字符实际上是有效字符,0是有效数字。NUL
24、L也不同于零长度字符串,NULL只是表示该值未知这一概念。,4.6.1 局部变量,【例4-3】定义变量MyCounter为int类型:DECLARE MyCounter int【例4-4】定义变量LastName为nvarchar(30)类型,定义变量FirstName为nvarchar(20)类型,定义变量State为nchar(2)类型:DECLARE LastName nvarchar(30),FirstName nvarchar(20),State nchar(2),4.6.1 局部变量,【例4-5】执行下列语句将产生语法错误,因为在一个批处理中所引用的变量是在另一个批处理中定义的。D
25、ECLARE MyVariable int SET MyVariable=1 GO-结束当前批 SELECT*FROM Employees WHERE EmployeeID=MyVariable,引用了另一个批定义的变量,4.6.1 局部变量,2.局部变量的赋值(1)用SET语句给局部变量赋值 格式:SET 局部变量名=表达式【例4-6】定义局部变量myvar,并为其赋值,最后显示myvar的值。DECLARE myvar char(20)SET myvar=This is a test-用SET赋值 PRINT myvar-用PRINT语句显示,4.6.1 局部变量,(2)用SELECT语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 Transact-SQL语言基础 Transact SQL 语言 基础
链接地址:https://www.31ppt.com/p-2826432.html