数据库SQL Server 8 章(T-SQL)

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 数据库SQL Server 8 章(T-SQL)

思维导图

一、T-SQL

1.T-SQL编程介绍

思维导图

一、T-SQL

1.T-SQL编程介绍

DECLARE
{@local_variable[AS]data_type
|@cirspr_variable_nameCURSOR
}[,…n]

4.运算符

(1)算术运算符:


[1] +:加


[2] -:减


[3] *:乘


[4] /:除


[5] %:模除取余


(2)位运算符


[1] &(与,and): 按位逻辑与运算


[2] |(或,or): 按位逻辑或运算


[3] ~(非,not): 按位逻辑非运算


[4] (互斥OR):按位互斥运算


(3)比较运算符


关系运算符用来表示两个表达式之间的比较关系。


[1] = :等于;


[2] < :小于;


[3] > :大于;


[4] != 或 <> :不等于;


[5] >= : 大于等于;


[6] <= : 小于等于;


[7] !> :不大于;


[8] !< : 不小于。


(4)逻辑运算符


逻辑运算符用于表示两个表达式之间的逻辑关系:


[1] AND:逻辑与


[2] OR: 逻辑或


[3] NOT: 逻辑非


(5)特殊运算符


[1] % :通配符,通常与like配合使用,可指代任意长度的字符串;


[2] _ : 通配符,代表严格的一个字符。where name like '_xxx’将查找以xxx结尾的所有4个字母的名字(sxxx,dxxx等)


[3] [] : 指定范围([a-f])或集合([abcdefg])中的任何单个字符。where name like ‘[a-f]xxxx’,将超找以abcdef开头,xxxx结尾的字符。


[4] [^] : 不属于指定范围的([a-f])或集合([abcdefg])的任何单个字符。


[5] BETWEEN … AND … :定义一个取值范围区间,使用and分开。between开始值与and结束值。


[6] LIKE :字符串匹配。


[7] IN : 一个字段的值是否在一组定义的值之中。


[8] EXISTS:子查询有结果集返回(则子查询返回True)。


[9] NOT EXISTS:子查询没有结果集返回(则子查询返回True)。


[10] IS NULL : 字段是否为null。


[11] IS NOT NULL :字段是否不为null。


[12] ANY / SOME:ANY和SOME关键字是同义词,表示子查询结果集中任意一条记录满足条件,则返回TRUE。


[13] ALL:表示子查询结果集所有所有记录均满足条件,才返回TRUE。

5.语句

if … else …

declare @number_1 int ,@number_2 int
select @number_1 = 1,@number_2 = 2
if @number_1 > @number_2
print @number_1
else 
print @number_2

while

declare @x int
select @x = 3
while @x = 3
begin
print @x
end

case

--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END

wait for

WAITFOR
{
DELAY time
|TIME time
}

try…catch

TRY…CATCH 错误处理
Begin try
--如果没出错 | 如果出错了执行
End try | begin catch
End catch

6.函数

数学函数:

字符串函数:

日期函数:

聚合函数:

AVG 、COUNT 、MAX 、MIN 、SUM

标量值函数:

create function [owner_name] function_name
 ([{@parameter_name [as] scalar_parameter_date_type [=default]}[,…n]])
 returns scalar_return_data_type [with encryption] [as]
 begin
     function_body
     return scalar_expression
 end

表值函数:



二、游标

1.游标

游标:是一种数据访问机制,它允许用户访问单独的数据行,而不是对整个行集进行操作。用户可以通过单独处理,每一行逐条收集信息并对数据逐行进行操作,这样可以降低系统开销和潜在的阻隔情况。用户也可以使用这些数据生成SQL代码并立即执行或输出。

游标主要包括以下两部分:

游标结果集 由定义游标的SELECT语句返回的行的集合

游标位置 指向这个结果集中的某一行的指针。

2.游标特点

1)游标返回一个完整的结果集,但允许程序设计语言只调用集合中的一行;

2)允许定位在结果集的特定行;

3)从结果集的当前位置检索一行或多行;

4)支持对结果集中当前位置的行进行数据修改;

5)可以为其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持;

6)提供脚本、存储过程和触发器中使用的访问结果集中数据的T-SQL语句。

3.创建声明


4.游标操作

三、事务

1.事务语句

在SQL Server 2008系统中主要使用下列4条语句管理事务:

1)BEGIN TRANSACTION

2)COMMIT TRANSACTION

3)ROLLBACK TRANSACTION

4)SAVE TRANSACTION

2.事务模式

1)自动提交事务

每条单独的语句都是一个事务。

2)显式事务

每个事务均以BEGIN TRANSACTION语句显式开始,以COMMIT TRANSACTION语句显式结束。

3)隐式事务

在前一个事务完成时新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK语句显式完成。

4)批处理级事务

只能应用于多个活动结果集(MARS),在MARS会话中启动的T-SQL显式或隐式事务变为批处理级事务。当批处理完成时没有提交或回滚的批处理级事务自动由SQL Server进行回滚。


四、锁

1.锁

所谓封锁,就是一个事务可向系统提出请求,对被操作的数据加锁(Lock)。其他事务必须等待此事务解锁(Unlock)之后才能访问该数据。从而,在多个用户并发访问数据库时,确保不互相干扰。可锁定的单位是:行、页、表、盘区和数据库。

2.锁的类型

1)共享(S)锁:用于读操作

多个事务可封锁一个共享单位的数据;

任何事务都不能修改加S锁的数据;

通常是加S锁的数据被读取完毕,S锁立即被释放。

2)独占(X)锁:用于写操作

仅允许一个事务封锁此共享数据;

其他任何事务必须等到X锁被释放才能对该数据进行访问;X锁一直到事务结束才能被释放。

3)更新(U)锁

用来预定要对此页施加X锁,它允许其他事务读,但不允许再施加U锁或X锁;

当被读取数据页将要被更新时,则升级为X锁;

U锁一直到事务结束时才能被释放。

3.死锁

所谓死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们将无法推进下去,此时称为系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象的死锁。

8.4死锁的必要条件

1)互斥条件

2)请求与保持条件

3)不剥夺条件

4)循环等待条件

8.5死锁的解除和预防

1)按同一顺序访问对象

2)避免事务中的用户交互

3)保持事务简短并在一个批处理中

4)使用低隔离级别

5)使用绑定连接

4.死锁的建议

1)对于频繁使用得表使用集簇化的索引;

2)设法避免一次性影响大量的T-SQL语句,特别是INSERT和UPDATE语句;

3)设法让UPDATE和DELETE语句使用索引;

4)使用嵌套事务时,避免提交和回退冲突

5)对一些数据不需要及时读取更新值的表在写SQL的时候在表后台加上(nolock),Select * from tableA(nolock)。


相关实践学习
使用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
相关文章
|
5天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
28 11
|
19天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
17天前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
29天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
1月前
|
SQL 开发框架 .NET
突破T-SQL限制:利用CLR集成扩展RDS SQL Server的功能边界
CLR集成为SQL Server提供了强大的扩展能力,突破了T-SQL的限制,极大地拓展了SQL 的应用场景,如:复杂字符串处理、高性能计算、图像处理、机器学习集成、自定义加密解密等,使开发人员能够利用 .NET Framework的丰富功能来处理复杂的数据库任务。
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
1月前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
25 2
|
27天前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
2月前
|
存储 数据挖掘 数据库
数据库数据恢复—SQLserver数据库ndf文件大小变为0KB的数据恢复案例
一个运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成一个NDF文件,每个NDF几百GB大小。数据库包含两个LDF文件。 存储损坏,数据库不可用。管理员试图恢复数据库,发现有数个ndf文件大小变为0KB。 虽然NDF文件大小变为0KB,但是NDF文件在磁盘上还可能存在。可以尝试通过扫描&拼接数据库碎片来恢复NDF文件,然后修复数据库。

热门文章

最新文章