




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 Transact-SQL语法,Transact-SQL语言概述 SQL语句使用说明 SQL的数据类型 变量定义 运算符 SQL Server常用函数 流程控制语句 与高级语言区别 掌握内容,Transact-SQL语言概述,SQL发展 20世纪70年代,IBM公司开始开发可以用于实现关系模型的语言和数据库系统; 1975年在IBM公司的System R上首次实现。原型称为SEQUEL(Structured English Query Language) SQL-86是第一个SQL标准; SQL-89、SQL-92(SQL2)、SQL-99(SQL3); SQL是数据子语言,缺乏其它语言具有的许多基本编程能力,必须与应用语言共同使用才能提供访问数据库的方法。 使用SQL 查询数据库时,只需要告诉它做什么而不用告诉它如何去做。 结构化语言与面向过程和面向对象语言区别 人性化,符合人们的思维方式,容易理解和掌握,Transact-SQL语言概述,数据定义语言 DDL data definition language 用于创建、修改或删除数据库对象 Create,Alter,Drop; 数据控制语言 DCL data control language 可以控制访问数据库中特定对象的用户, 通过Grant或Revoke语句授权或限制访问。 数据操纵语言 DML data manipulation language 用于观察、添加、修改或删除存储在数据库中对象的数据。Select,Insert,Update,Delete,SQL语句使用说明,每条SQL语句以分号结束; 每条SQL语句可以单独写成一行,也可以分成若干行; SQL语句对大小写不敏感,对于SQL语句的关键字、表名、列名等,可以大小写混合; SQL Server用三段式名字标识对象:,前两者可以省略,数据库的默认值是当前数据库,所有者名的默认值是数据库的所有者dbo。 如: pubs.dbo.authors,SQL语句使用说明,注释 注释是程序代码中不执行的文本字符串(也称为注解)。在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“-”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */”。 语句表示: CREATE GLOBAL|LOCAL TEMPORARY TABLE ( ,) ON COMMIT PRESERVE | DELETE ROWS ,SQL的数据类型,如果该列存储的数据长度相同,应该用char(n),否则用varchar(n); 如果长度差别不大,希望提高查询效率,可以使用char(n) 需要存储中文字符时,最好使用nchar(n)和nvarchar(n)(示例),SQL的数据类型,在选择整型数时,默认情况下使用int; 如果确认要存储的数据很大或很小,可以考虑使用其它类型 如果提供的数据超过其允许的取值范围,将将发生数据溢出错误。 (示例),SQL的数据类型,在 = 和 运算符,应避免使用 float 或 real 参与科学计算的数据可以float 或 real Decimai和numeric相同,0 = s = p = 38 例如:decimal(6,2),可以存储精度为6,小数位为2的数据 (示例),SQL的数据类型,SQL的数据类型,注释 如果在数据定义或变量声明语句中没有指定 n,默认长度为 1。 当列数据项大小一致时应使用 binary。 当列数据项大小不一致时应使用 varbinary。,SQL的数据类型,日期型示例:2009-10-15 10:36:20:778,SQL的数据类型,SQL的数据类型,常用类型 字符型 char(n),varchar(n),nchar(n) ,nvarchar(n) 数字型 int, float, decimal(p,s) 位型 bit 文本型 text,ntext 图形 image 日期时间型 datatime,变量定义,Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。 局部变量是用户可自定义的变量,它的作用范围仅在程序内部。在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量。 局部变量定义: 使用局部变量必须以开头,而且必须先用DECLARE 命令说明后才可使用。 DECLARE 变量名 变量类型 ,变量名 变量类型,变量定义,局部变量必须使用SELECT 或SET 命令来设定变量的值,其语法如下: SELECT 变量名= 变量值 SET 变量名= 变量值 示例: declare age int , born datetime; Set age=21; Set born=1981-10-20 17:20:12:000; Print age ; Print born ;,变量定义,全局变量是SQL Server系统内部使用的变量。任何程序都可以随时调用全局变量; 全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值; 用户只能使用预先定义的全局变量; 引用全局变量时,必须以标记符“”开头; 如:ERROR 返回最后执行的 Transact-SQL 语句的错误代码。 SERVERNAME,VERSION,ROWCOUNT,运算符,算术运算 算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运算符包括加(+)、减(-)、乘(*)、除(/)和取模(%); 赋值运算 只有一个赋值运算符,即等号(=)。另外等号还在关系运算中做比较用。 位运算 位运算符使我们能够在整型数据或者二进制数据(image 数据类型除外)之间执行位操作。两个数按位与 & ,按位或 |,按位异或 。 关系运算 用于比较两个表达式的大小或是否相同,其比较的结果是布尔值,即TRUE(表示表达式的结果为真)、FALSE(表示表达式的结果为假)以及UNKNOWN。除了 text、ntext 或 image 数据类型的表达式外,比较运算符可以用于所有的表达式。,运算符,逻辑运算 逻辑运算符可以把多个逻辑表达式连接起来。逻辑运算符包括AND、OR和NOT等运算符。逻辑运算符和比较运算符一样,返回带有 TRUE 或 FALSE 值的布尔数据类型。 字符串运算 连接运算符 + 用于连接两个或两个以上的字符或二进制串、列名或者串和列的混合体,将一个串加入到另一个串的末尾。 示例: declare age char(10); set age=abc+123; print age;,运算符,括号:() 乘、除、求模运算符:*、/、% 加减运算符:+、- 比较运算符:=、=、!=、!、! 位运算符:、&、| 逻辑运算符:NOT 逻辑运算符:AND 逻辑运算符:OR,SQL Server常用函数,字符串函数 日期和时间函数 数学函数 转换函数 系统函数 聚合函数 其它函数,SQL Server常用函数,基本字符串函数 Lower,Upper,Ltrim,Rtrim Reverse(char) 返回字符表达式的反转。 Replicate(char,int) 以指定的次数重复字符表达式。 STUFF(char1,int,int,char2) 删除指定长度的字符并在指定的起始点插入另一组字符。 Select stuff(abcdef, 2, 3, 123456) ; 结果:a123456ef,SQL Server常用函数,字符串查找函数: Charindex(char1,char2 ,int) 返回字符串char2 中指定表达式 char1 的起始位置。 Patindex(%pattern% , expression ) 返回指定表达式中某模式第一次出现的起始位置; 长度和分析函数: Datalength(char),Left(char,int),Right(char,int) Substring(expression , start , length ),SQL Server常用函数,示例:输出结果 declare a varchar(10),b varchar(10); set a=123; set b=345123678; Print Patindex(%123%,b) print Charindex( a,b);,SQL Server常用函数,转换函数: Ascii(char) 返回字符表达式最左端字符的 ASCII 代码值; Char(int) 将 int ASCII 代码转换为字符的字符串函数; Str(float) 把数字转换为字符数据。,SQL Server常用函数,聚合函数 AVG 求平均值 COUNT 统计数目 MAX 求最大值 MIN 求最小值 SUM 求和,SQL Server常用函数,DATENAME 返回代表指定日期的指定日期部分的字符串。 DATEPART 返回代表指定日期的指定日期部分的整数。 。,Datepart取值,流程控制语句,流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL Server 中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。 IFELSE BEGINEND CASE WHILECONTINUEBREAK GOTO WAITFOR RETURN,流程控制语句,IFELSE 语法: IF Boolean_expression sql_statement | statement_block ELSE sql_statement | statement_block 如果布尔表达式中含有 SELECT 语句,必须用圆括号将 SELECT 语句括起来。 建议始终使用圆括号。,流程控制语句,IFELSE语句示例: declare x int, y int, z int; select x = 1, y = 2, z=3; if x y print x y ; -打印字符串x y else if y z print y z; else print z y ;,流程控制语句,BEGINEND BEGINEND语句能够将多个SQL语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当要执行的语句超过一个时,就需要使用BEGINEND语句。 语法: BEGIN sql_statement | statement_block END,流程控制语句,BEGINEND语句示例 declare SCORE FLOAT; if(select avg(成绩) from 学生信息)70 begin print 平均分小于70 ; select score=min(成绩) from 学生信息; end; else select score=max(成绩) from 学生信息; print score;,流程控制语句,CASE CASE函数可以计算多个条件式,并将其中一个符合条件的结果表达式返回。 语法: CASE input_expression WHEN when_expression THEN result_expression .n ELSE else_result_expression END,流程控制语句,CASE 示例1 Declare i int,str char(10); set str=b; set i= case str when a then 97 when b then 98 else 99 end; print i;,流程控制语句,CASE 示例2 Declare str1 char(10),str2 char(10); set str1=b; set str2= case when str1=a then A when str1=b then B else C end; print str2;,流程控制语句,WHILECONTINUEBREAK WHILECONTINUEBREAK语句用于设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。 CONTINUE语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令; BREAK语句则使程序完全跳出循环,结束WHILE语句的执行。,流程控制语句,语法: WHILE BEGIN sql_statement | statement_block CONTINUE BREAK sql_statement | statement_block END,流程控制语句,WHILE 语句示例 declare x int,y int, c int; select x = 1,y=1; while x3 begin print x; -打印变量x 的值 while y3 begin select c = 100*x + y; print c; -打印变量c 的值 select y = y + 1; end; select x = x + 1; select y = 1; end;,流程控制语句,GOTO 语法:Goto Label GOTO 语句用来改变程序执行的流程,使程序跳到标有标识符的指定程序行,再继续往下执行。 作为跳转目标的标识符可为数字与字符的组合,但必须以冒号结尾。 如标签定义: Label:,流程控制语句,GOTO 示例 declare sum int,count int; select sum=0, count=1; label_1: select sum=sum+count; select count=count+1; if count=5 goto label_1; print count; print sum;,流程控制语句,WAITFOR语句 WAITFOR语句用于暂时停止执行SQL语句、语句块或者存储过程等,直到所设定的时间已过或者所设定的时间已到才继续执行。 语法: WAITFOR DELAY time | TIME time DELAY一直等到指定的时间过去,最长可达 24 小时。 TIME 等待到指定时间 time为日期时间型,只需指定时间,不指定日期,格式:hh:mm:ss,流程控制语句,WAITFOR 示例 declare i int; set i=10; waitfor DELAY 00:00:05 print i;,流程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 垃圾焚烧发电项目建设与技术方案
- 混凝土泵送施工工艺方案
- 豪华游轮服务员聘用合同及海上服务规范
- 时尚理发店员工招聘与劳务派遣服务协议
- 高端酒店企业股权转让及品牌管理服务合同
- 基于海绵城市理念的老旧小区排水改造策略
- 2025年新能源汽车电池热管理系统在电动汽车安全性能中的重要性报告
- 2025年地热能发电行业市场潜力分析与投资策略报告
- 4.3 坐标平面内图形的轴对称和平移说课稿-2025-2026学年初中数学浙教版2024八年级上册-浙教版2024
- 机械学基础考试题及答案
- 会场布置及座次安排
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 碳足迹核算与生命周期评价方法
- 2024年中国人寿:养老险上海分公司招聘笔试参考题库含答案解析
- 自我同一性理论与经验研究
- 二十四节气与养生
- 企业安全培训课件-网络与信息安全
- 供应商罚款联络函
- 上海交通大学中文主页
- 骨关节外科问诊知识讲座
- 振荡指标MACD(波段操作精解)
评论
0/150
提交评论