数据库原理与应用(SQL Server)笔记 第七章 流程控制语句、系统内置函数

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 数据库原理与应用(SQL Server)笔记 第七章 流程控制语句、系统内置函数

一、流程控制语句


(一)BEGIN...END语句块


BEGIN...END语句块的作用是将多条T-SQL语句定义为一个语句块来执行,即当做一个整体,BEGIN...END语句块可以嵌套使用,其中关键字BEGIN指示语句块的开始,END指示语句块的结束。

BEGIN
    <T-SQL语句> (BEGIN...END语句块)    /*BEGIN...END语句块可以嵌套使用*/
END


(二)条件语句


学过c语言或者c++语言的应该知道有if-else条件语句,这里的条件语句跟其相同。即使用IF...ELSE语句时,当条件为真或假时,分别执行不同的T-SQL语句或语句序列。根据带不带ELSE可分为两种形式,即ELSE可省略,不带ELSE时执行条件表达式的值,当条件表达式为真时执行T-SQL语句或语句块,然后执行IF语句的下一条语句;当为假时,直接执行IF语句的下一条语句。如果条件判断不止两个结果,比如有三个结果,就可以使用[if]-[else if]-[else]的结构,假设还有结果,就继续在中间添加else if即可。

IF <条件表达式>
    <T-SQL语句或BEGIN...END语句块>
(ELSE
    <T-SQL语句或BEGIN...END语句块>)

(三)循环语句


1、WHILE语句


当程序中的一部分语句需要循环执行时,使用WHILE语句来实现。首先根据条件表达式进行判断,当条件表达式为真时,执行循环体中的T-SQL语句或语句序列,再进行条件判断,当条件表达式为真时,重复执行上述操作;直到条件表达式为假时,退出循环体,执行WHILE语句的下一条语句。同时,在循环体中,也可以进行WHILE语句的嵌套。

WHILE <条件表达式>
<T-SQL语句构成的循环体或BEGIN...END语句块>


2、BREAK语句和CONTINUE语句


BREAK语句可以在循环语句中退出本层循环,而CONTINUE语句可以在循环语句中结束本次循环,从而进入循环开始条件的判断。


(四)无条件转移语句


GOTO语句用于实现无条件跳转,将执行流程转移到标号指定的位置。语句格式:

标号:
语句 ......
    GOTO <跳转至标号名称>


例、计算从1乘到100的值。


sql语句:

DECLARE @sum int,@i int
SET @i=1
SET @sum=1
x:
SET @sum=@sum*@i
SET @i=@i+1
IF @i<=10
  GOTO x
PRINT '1*2*...*10='+CAST(@sum AS char(10))

输出结果:

1666916339457.jpg



这里最后一行的PRINT '1*2*...*10='+CAST(@sum AS char(10))使用到了CAST()函数,其将数据类型varchar的表达式显式转换为另一种数据类型char,之间的AS用于分隔两个参数,在AS为要处理的数据类型,AS之后是要转换的数据类型。如果不转换将会报错无法运行。


查询中的x就是我们定义的要跳转的语句标号名称。


附:CAST()函数可转换的类型有字符型、日期、时间、浮点数、整数等等。


(五)返回语句


返回语句即RETURN语句,用于查询语句块、存储过程或批处理中无条件退出,即位于RETURN之后的语句将不再执行。


格式如下:

RETURN <整型表达式>


(六)等待语句


等待语句WAITFOR指定语句块、存储过程或事务执行的时刻或需要等待的时间间隔。


格式如下:

WAITFOR <DELAY 等待的时间>(TIME 等待到某一时刻)


(七)错误处理语句


TRY...CATCH语句用于对T-SQL语言中的错误进行处理,即在执行TRY中的语句时,若执行的过程中没有异常拋出,那么执行完后就执行最后一个CATCH 块后面的语句,所有 CATCH块中的语句都不会被执行,CATCH可以有多个,但至少要有一个。


格式如下:

TRY 
    T-SQL语句或BEGIN...END语句块
CATCH(异常类型) 
    T-SQL语句或BEGIN...END语句块
...
CATCH(异常类型) 
    T-SQL语句或BEGIN...END语句块


二、系统内置函数


(一)数学函数


数学函数用于对数值表达式进行数学运算并返回运算结果,这里介绍几个常用的数学函数。


1、ABS函数


ABS()用于返回数值表达式的绝对值。


例、-9.2222取绝对值输出9.2222,0.35555取绝对值输出0.35555。


sql语句:

SELECT ABS(-9.2222),ABS(0.35555)

输出结果:

1666916484782.jpg


2、EXP函数


EXP()用于返回指定表达式以e为底的指数。


例、求以e为底的平方的值:


sql语句:

SELECT EXP(2) AS 'e的平方'

输出结果:

1666916506105.jpg



3、CEILING函数和FLOOR函数


CEILING()用于返回大于或等于数值表达式的最小整数,而FLOOR()用于返回小于或等于数值表达式的最大整数。


4、LOG函数


LOG()用于返回数值表达式以10为底的对数。


例、输出LOG(1)的值:

sql语句:

SELECT LOG(1)

输出结果:

1666916538441.jpg


5、POWER函数


POWER()用于返回数值表达式进行幂运算的结果,这里要注意POWER()函数带有两个参数,格式是POWER(数值,幂次方)。


例、输出2的10次方的值,运用POWER函数:


sql语句:

SELECT POWER(2,10)

输出结果:

1666916591112.jpg


6、SQRT函数


SQRT()函数用于返回数值表达式的平方根。


例、输出16的平方根。


sql语句:

SELECT SQRT(16)

输出结果:

1666916611035.jpg


7、SIGN函数


SIGN()函数用于返回数值表达式的正号(+)、负号(-)或零(0)。


8、RAND函数


RAND()函数用于返回0到1之间的一个随机值,RAND()函数中有seed参数,指定种子值,其返回值类型为float。当指定种子值时,输出结果相同;当未指定时,则随机分配种子。


例、通过RAND函数产生种子随机数。


sql语句:

DECLARE @count float
SET @count=0
SELECT RAND(@count) AS cont

输出结果:

1666916648306.jpg


(二)字符串函数

函数 作用
ASCII 返回字符表达式中最左侧的ASCII码
CHAR 返回指定ASCII码的对应字符
CHARINDEX 返回指定模式的起始位置
LEN 返回字符串表达式的字符数(不包括尾随空格)
REPLACE 有三个字符串表达式,用第三个字符串表达式替换第一个字符串表达式中包含的第二个字符串表达式,并返回替换后的表达式
REPLICATE 以指定的次数复制字符表达式
LEFT 返回字符串中从左侧开始指定个数的字符
RIGHT 返回字符串中从右侧开始指定个数的字符
SPACE 返回由重复的空格组成的字符串
LTRIM 删除前导空格字符串,返回删除了前导空格之后的字符表达式
STR 返回由数字数据转换来的字符数据
SUBSTRING 返回表达式中指定的部分数据,可指定数据类型、开始位置、返回的字节数


结语


以上就是本次数据库原理与应用(SQL Server)笔记流程控制语句、系统内置函数的全部内容,感谢您的阅读和支持,篇幅较长,若有表述以及代码中的不当之处,望指出!您的指出和建议能给作者带来很大的动力!!!


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
7天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
29 11
|
21天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
20天前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
1月前
|
SQL 关系型数据库 MySQL
体验使用DAS实现数据库SQL优化,完成任务可得羊羔绒加厚坐垫!
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。完成任务,即可领取羊羔绒加厚坐垫,限量500个,先到先得。
151 12
|
27天前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
27天前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
1月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
3天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
13 3
|
3天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
20 3