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

本文涉及的产品
云数据库 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
相关文章
|
4天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
40 10
|
4天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
50 6
|
1天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
1天前
|
SQL 关系型数据库 MySQL
【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
10 3
|
4天前
|
SQL 监控 数据库
数据库管理与电脑监控软件:SQL代码优化与实践
本文探讨了如何优化数据库管理和使用电脑监控软件以提升效率。通过SQL代码优化,如使用索引和调整查询语句,能有效提高数据库性能。同时,合理设计数据库结构,如数据表划分和规范化,也能增强管理效率。此外,利用Python脚本自动化收集系统性能数据,并实时提交至网站,可实现对电脑监控的实时性和有效性。这些方法能提升信息系统稳定性和可靠性,满足用户需求。
21 0
|
5天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
|
12天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
12天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
14天前
|
存储 关系型数据库 MySQL
数据库字符编码MySQL中使用UTF-8还是UTFB4
数据库字符编码MySQL中使用UTF-8还是UTFB4
18 0

热门文章

最新文章