1. 概述
在SQL Server中,预定义查询是指在创建查询过程中,系统自动定义的一些查询。
这些查询分为两类:
系统存储过程(system stored procedures)
系统函数(system functions)
2. 系统存储过程
2.1 sp_who
sp_who
存储过程返回有关当前 SQL Server 中活动用户(系统或用户进程)和有关每个进程使用的资源的信息。此存储过程提供了对执行查询的用户、进程和锁定的一个简要概述。
该存储过程返回的信息有:
SPID - 进程ID
Status - 当前状态
Loginame - 登录名
HostName - 主机名
BlkBy - 正在阻止此进程的进程ID(如果有)
DBName - 正在使用的数据库名称
Command - 执行的命令
CPUTime - CPU时间(毫秒)
DiskIO - 磁盘IO
LastBatch - 上一个批处理的时间
ProgramName - 正在使用的程序名称
以下是一个使用sp_who
的例子:
sp_who
该代码会返回当前SQL Server中活动的用户和进程的信息。
2.2 sp_help
sp_help
存储过程提供有关对象的属性、列和其他信息。它可以用于从 SQL Server 元数据中检索对象定义的各个方面信息(如列、约束、索引、存储过程、视图等)。
以下是一个使用sp_help
获取表信息的例子:
sp_help 'sales.customers'
该代码会返回名为sales.customers
表的所有相关信息。
2.3 sp_executesql
sp_executesql
存储过程可以用于将 Transact-SQL 语句动态转换为执行时执行的 SQL 语句批处理。此存储过程的某些使用方案包括:
动态的查询方案
基于输入的存储过程组装参数的动态SQL
高级动态存储过程
以下是一个使用sp_executesql
的例子:
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'SELECT * FROM Sales.Customers'
EXEC sp_executesql @sql
该代码会动态地生成一个SQL查询语句,返回Sales.Customers
表中的所有数据。
3. 系统函数
3.1 COUNT()
COUNT()
函数用于返回指定表或查询中行的数目。如果要返回特定条件下行的数目,可以在 COUNT 中指定条件。
以下是一个使用COUNT()
的例子:
SELECT COUNT(*) FROM Sales.Customers
该代码返回Sales.Customers
表中的行数。
3.2 AVG()
AVG()
函数用于返回指定表或查询中的数值列的平均值。
以下是一个使用AVG()
的例子:
SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader;
该代码返回Sales.SalesOrderHeader
表中TotalDue
列的平均值。
3.3 SUM()
SUM()
函数用于返回指定表或查询中数值列的和。
以下是一个使用SUM()
的例子:
SELECT SUM(TotalDue) FROM Sales.SalesOrderHeader;
该代码返回Sales.SalesOrderHeader
表中TotalDue
列的总和。
4. 小结
预定义查询是SQL Server中自带的一些查询,可以用于帮助我们更快捷、方便地进行查询操作。其中系统存储过程用于返回有关 SQL Server 中活动用户、进程和其他资源的信息;系统函数用于返回特定条件下表或查询中行的数目、数值列的平均值以及数值列的总和。这些查询的使用可以大大提高查询的效率。