第4章--T-SQL语言基础课件.ppt
《第4章--T-SQL语言基础课件.ppt》由会员分享,可在线阅读,更多相关《第4章--T-SQL语言基础课件.ppt(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第四章第四章 Transact-SQL语言基础语言基础本章的学习目标:了解Transact-SQL语言的发展过程理解Transact-SQL语言附加的语言元素掌握常量、变量、运算符和表达式掌握流程控制语句掌握常用函数4.1 工作场景导入软件测试员小李要测试数据库的性能,当学生选课表的数据达到10万行,系统是否反应还会很快?如何才可以快速方便的为学生选课表添加10万行数据?引导问题:为学生选课表添加10万行数据时,(1)如何产生10万行不同的随机数据?(2)为考虑系统性能,应考虑多少行数据提交1次?(3)如何使用WHILE循环?4.2 Transact-SQL概述SQL的全称为Structur
2、ed Query Language(结构化查询语言),SQL最早是在20世纪70年代由IBM公司开发出来的,主要用于关系数据库中的信息检索,它的前身是关系数据库原型系统System R所采用的SEQUEL语言。SQL有3个主要标准:ANSI SQL;SQL92;SQL99。4.2.1 Transact-SQL4.2.1 Transact-SQL语法约定语法约定约定用途大写Transact-SQL关键字。斜体用户提供的Transact-SQL语法的参数。粗体数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样键入的文本。下划线指示当语句中省略了包含带下划线的值的子句
3、时应用的默认值。|(竖线)分隔括号或大括号中的语法项。只能使用其中一项。 (方括号)可选语法项。不要键入方括号。 (大括号)必选语法项。不要键入大括号。,.n指示前面的项可以重复n次。各项之间以逗号分隔。.n指示前面的项可以重复n次。每一项由空格分隔。;Transact-SQL语句终止符。虽然在此版本的SQL Server中大部分语句不需要分号,但将来的版本需要分号。 := 语法块的名称。此约定用于对可在语句中的多个位置使用的过长语法段或语法单元进行分组和标记。可使用语法块的每个位置由括在尖括号内的标签指示:。4 4.2.2.2.2 多部分名称多部分名称所有对数据库对象名的Transact-S
4、QL引用将是由四部分组成的多部分名称,格式如下:server_name.database_name.schema_name.object_name| database_name .schema_name.object_name| schema_name . object_name| object_name各个参数的含义如下所示:(1)server_nameserver_name指定链接的服务器名称或远程服务器名称。(2)database_name如果对象驻留在SQL Server的本地实例中,则database_name指定SQL Server数据库的名称。如果对象在链接服务器中,则datab
5、ase_name将指定OLE DB目录。(3)schema_name如果对象在SQL Server数据库中,则schema_name指定包含对象的架构的名称。如果对象在链接服务器中,则schema_name将指定OLE DB架构名称。(4)object_nameobject_name表示对象的名称。4 4.2.3 .2.3 如何给标识符起名如何给标识符起名SQL Server将标识符分为以下两种类型。将标识符分为以下两种类型。1. 常规标识符常规标识符(1)标识符的首字符必须是下列字符之一)标识符的首字符必须是下列字符之一 。l 统一码(统一码(Unicode)2.0标准中所定义的字母,包括拉
6、丁字母标准中所定义的字母,包括拉丁字母a-z和和A-Z,以及其他语言的字母字符。以及其他语言的字母字符。l 下划线下划线“_”、符号、符号“”或者数字符号或者数字符号“#”。(2)标识符的后续字符可以是以下)标识符的后续字符可以是以下3种。种。l 统一码(统一码(Unicode)2.0标准中所定义的字母。标准中所定义的字母。l 来自拉丁字母或其他国家来自拉丁字母或其他国家/地区脚本的十进制数字。地区脚本的十进制数字。l “”符号、美元符号符号、美元符号“$”、数字符号、数字符号“#”或下划线或下划线“_”。(3)标识符不允许是)标识符不允许是Transact-SQL的保留字。的保留字。(4)不
7、允许嵌入空格或其他特殊字符。)不允许嵌入空格或其他特殊字符。2. 2. 分隔标识符分隔标识符分隔标识符类型有两种:分隔标识符类型有两种:l 双引号(“”)内的标识符l 方括号( )内的标识符 该标识符可以不符合标识符的格式规则,如该标识符可以不符合标识符的格式规则,如MR GZGLXT、MR和和GZGLXT之间含有空格,但因为使用了方括号,所以视为分隔之间含有空格,但因为使用了方括号,所以视为分隔标识符。标识符。注意:常规标识符和分隔标识符包含的字符数必须在注意:常规标识符和分隔标识符包含的字符数必须在1128之间,对于本地临时表,标识符最多可以有之间,对于本地临时表,标识符最多可以有116个
8、字符。个字符。 4 4.2.4 .2.4 系统保留字系统保留字与其他许多语言类似,SQL Server 2014使用了180多个保留关键字(Reserved Keyword)来定义、操作或访问数据库和数据库对象。这些保留关键字是T-SQL语法的一部分,用于分析和理解T-SQL语言,包括DATABASE、CURSOR、CREATE、INSERT、BEGIN等。一般地,不能使用这些保留关键字作为对象名称或标识符。在编写T-SQL语句时,为了方便用户区分,这些系统保留字会以不同的颜色标记。4.3.1 字符串型常量字符串型常量字符串型常量是定义在单引号中的字母、数字及特殊符号,字符串型常量是定义在单引
9、号中的字母、数字及特殊符号,如!、如!、#。lASCII字符串常量:字符串常量:由单引号括起来的ASCII字符组成。 如果在字符常量中已经包含了一个单引号,那么可以使如果在字符常量中已经包含了一个单引号,那么可以使用两个单引号表示这个带单引号的字符用两个单引号表示这个带单引号的字符,例如例如“SQL”表示表示SQL。 lUnicode字符串常量:字符串常量:格式与ASCII字符串常量相似,但它前面有一个前缀N,而且必须是大写的。 如:N数据库原理、N计算机。4.3 常量4.3.2 数值型常量数值型常量数值型常量包含整型常量和实数型常量。数值型常量包含整型常量和实数型常量。l整型常量整型常量(I
10、nteger)用来表示整数。用来表示整数。可细分为二进制整型常量、十进制整型常量和十六进制整型常量。二进制整型常量以数字0或1表示;十进制整型常量即不带小数点的十进制数;十六进制整型常量由前缀0 x后跟十六进制数组成。l实数型常量用来表示带小数部分的数。实数型常量用来表示带小数部分的数。有定点数和浮点数两种表示方式,其中浮点数使用科学记数法来表示。如:0.56E-3。4.3.3 日期时间型常量日期时间型常量(DATETIME)日期时间型常量使用特定格式的字符日期值来表示,日期时间型常量使用特定格式的字符日期值来表示,并且用单引号括起来。并且用单引号括起来。如:2017年9月20日可以用以下方示
11、:September 20,2017、09/20/2017或20170920。3.3.4 货币型常量货币型常量(MONEY)货币型常量以前缀货币型常量以前缀“$”作为标识。作为标识。如:$123.45。4.4.1 变量名称变量名称变量的命名规则:变量的命名规则:l第一个字符必须是字母、数字、下画线或第一个字符必须是字母、数字、下画线或符号。需要注意的是,符号符号。需要注意的是,符号“”开头的变量表示局部变量、符号开头的变量表示局部变量、符号“”开头的变量表示全局变量。开头的变量表示全局变量。l变量名不能是变量名不能是T-SQL语言的系统保留字语言的系统保留字(如如IF、ELSE、CONTINU
12、E等等),包括,包括大写和小写形式。大写和小写形式。l变量名中不允许出现空格或其他特殊字符。变量名中不允许出现空格或其他特殊字符。根据以上规则,下列变量名都是合法的:根据以上规则,下列变量名都是合法的:b6、abc、class_3和和average。变量声明:变量声明:使用变量需要先声明再使用使用变量需要先声明再使用格式:格式:DECLARE 变量名称变量名称 变量的数据类型变量的数据类型 ,nl 为表示局部变量,变量名称的第一个字符必须是为表示局部变量,变量名称的第一个字符必须是l 所有变量在声明后均设置初值为所有变量在声明后均设置初值为NULL4.4 变量 4.4.2 变量赋值变量赋值有两
13、种为变量赋值的方式:使用有两种为变量赋值的方式:使用SET语句直接为变量赋值和使用语句直接为变量赋值和使用SELECT语句选择表中的值来为变量赋值。语句选择表中的值来为变量赋值。语法格式如下:语法格式如下:l格式格式1:使用:使用SET语句赋值语句赋值SET 变量名称变量名称=表达式表达式l格式格式2:使用:使用SELECT语句赋值语句赋值SELECT 变量名称变量名称=表达式表达式 ,n说明:说明:表达式可以是任何有效的表达式可以是任何有效的SQL表达式;表达式;一个一个SELECT语句可以给多个变量赋值,而一个语句可以给多个变量赋值,而一个SET语句一次只能给一个语句一次只能给一个变量赋值
14、。变量赋值。【例】用赋值语句分别定义两个整型变量x和y。使x的值为36,y的值为9,计算并显示x,y,3x +4y,xy,和x /y的值。declare x int,y intset x=36set y=9select x,y,3*x+4*y,x*y,x/ygo【例】创建两个局部变量,并赋值,然后输出变量的值。declare var1 char(10),var2 char(20)set var1=郑州大学set var2=var1+是一所双一流大学select var1,var2go【例】创建一个名为sex的局部变量,并在select语句中使用该局部变量查找表student中所有男同学的信息。
15、use xscjdeclare sex char(2)set sex =男select * from studentwhere ssex= sexgo【例】使用查询给变量赋值。use xscjdeclare xm varchar(8)set xm =(select sname from student where sno=2008056103)select xmgouse xscjdeclare xm varchar(8)select xm =sname from studentselect xmgo说明:如果返回多个值,将返回的最后一个值赋给变量说明:如果返回多个值,将返回的最后一个值赋给变
16、量【例】use xscjdeclare xm varchar(8)select xm=张三select xm=sname from studentwhere sno=123456789select xm as namego说明:如果说明:如果select语句没有返回行,变量将保留当前值语句没有返回行,变量将保留当前值SQL Server 2014提供以下几类运算符:算术运算符、关系运算符、提供以下几类运算符:算术运算符、关系运算符、逻辑运算符、连接运算符和位运算符。逻辑运算符、连接运算符和位运算符。1. 算术运算符算术运算符算术运算符对两个表达式执行数学运算。算术运算符对两个表达式执行数学运算
17、。算术运算符说 明+加法运算-减法运算*乘法运算/除法运算,如果两个表达式都是整数,则结果是整数,小数部分被截断%(求模)求模(求余)运算,返回两数相除后的余数算术运算符算术运算符4.5 运算符和表达式4.5.1 运算符运算符【例】计算8/5、8.0/5.0、5/8、5.0/8.0与8%5的值。select 8/5,8.0/5.0,5/8,5.0/8.0,8%511.60000000.6250003通过执行语句我们注意到:8/5的结果为1,而8.0/5.0的结果为1.600000,两者运算结果并不相同。原因在于当两个具有相同数据类型的数进行算术运算时,运算结果依然是当前的数据类型。但是,当两个
18、不同数据类型的数进行算术运算时,数据类型优先级规则指定将优先级较低的数据类型转换为优先级较高的数据类型。这样能够在最大程度上保护运算结果的正确性和合理性。同样,5/8与5.0/8.0的运算结果也不相同。2. 关系运算符关系运算符关系运算符说 明实 例=相等姓名=”李华”大于成绩90小于年龄=大于等于成绩=60=小于等于工资=2000、!=不等于所属院系数学系!不小于学分!不大于成绩!100说明:l两个数值型数据比较时,按照值的大小直接比较;l两个日期时间型数据比较时,按照年、月、日的先后顺序比较;l两个字符型数据比较时,英文字母按照ASCII码值大小比较,汉字按照拼音先后顺序比较。【例】使用关
19、系运算符查询use xscjdeclare student char(6)set student=001111if(student0)select * from xs where 学号=studentgo3. 逻辑运算符逻辑运算符运 算 符运 算 规 则AND与运算,两个操作数均为TRUE时,结果才为TRUEOR或运算,若两个操作数中任何一个为TRUE,则结果为TRUENOT非运算,单目运算,结果值取反ALL每个操作数值都为TRUE时,结果为TRUEANY多个操作数中只要有一个为TRUE,结果为TRUEBETWEEN若操作数在指定的范围内,则运算结果为TRUEEXISTS若子查询包含一些行,则
20、运算结果为TRUEIN若操作数值等于表达式列表中的一个,则结果为TRUELIKE若操作数与某种模式相匹配,则结果为TRUESOME若在一系列操作数中,有些值为TRUE,则结果为TRUE【例】查询成绩高于李华最高成绩的学生姓名、课程名和成绩select sname,cname,gradefrom student join sc join courseon o=oon student.sno=sc.snoand gradeall(select grade from student join sc join course on o=o on student.sno=sc.sno and sname=
21、李华 ) 1) any,all【例】查询成绩高于李华最低成绩的学生姓名、课程名和成绩select sname,cname,gradefrom student join sc join courseon o=oon student.sno=sc.snoand gradeany(select grade from student join sc join course on o=o on student.sno=sc.sno and sname=李华 ) 2) between【例】查询93及94年出生的学生信息select * from studentwhere sbirth between 19
22、93-1-1 and 1994-12-31【例】查询不是93、94年出生的学生信息select * from studentwhere sbirth not between 1993-1-1 and 1994-12-31查询姓王或姓李的学生信息select * from studentwhere sname like 王李%查询不姓王也不姓李的学生信息select * from studentwhere sname like 王李%通配符说明%代表0个或多个字符_代表单个字符 指定范围(如:a-f、0-9或集合abcdef中的任何单个字符指定不属于范围(如:a-f、0-9或集合abcdef中的
23、任何单个字符3) like查询所有选课的学生信息查询所有选课的学生信息select * from studentwhere exists(select * from sc where sno=student.sno)查询没有选课的学生信息查询没有选课的学生信息select * from studentwhere not exists(select * from sc where sno=student.sno)4) exists4. 连接运算符连接运算符 连接运算符连接运算符“+”用于串联两个或两个以上的字符或二进用于串联两个或两个以上的字符或二进制串、列名或者串和列的混合体。制串、列名或者串
24、和列的混合体。select 2255+1188select 2255+1188select 2255+1188说明:当数据类型不相同说明:当数据类型不相同时,转换成优先级别高的。时,转换成优先级别高的。5. 位运算符位运算符 位运算符在两个表达式之间实现按位操作,这两个表达位运算符在两个表达式之间实现按位操作,这两个表达式应该为整型数据类型或与整型兼容的数据类型(如字式应该为整型数据类型或与整型兼容的数据类型(如字符型等,符型等,image类型除外)类型除外)运 算 符运 算 法 则&(位与运算)两个参与运算的位值均为1时,结果位为1,否则为0|(位或运算)两个参与运算的位中只要有一位值为1,
25、结果就为1,否则为0(位异或运算)两个参与运算的位不同时,结果为1,否则为0【例】【例】select 128&129,128|129,128129128:129:1000 00001000 0001 或| 1000 0001128:129:1000 00001000 0001 与&| 1000 0000128:129:1000 00001000 0001 异或 0000 0001优 先 级运 算 符1()括号2一目运算:+(正)、-(负)、(按位取反)3*(乘)、/(除)、%(取模)4+(加)、+(字符串连接)、-(减)5=、=、=、!=、!、!6(位异或)、&(位与)、|(位或)7NOT8A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语言 基础 课件
限制150内