MSSQL中的SET语句及查询选项详解

常用的一些SET语句
SET TEXTSIZE 设置SELECT语句返回列最大值。
SET ROWCOUNT 设置返回记录的总数
SET NOCOUNT 设置是否返回记录
SET IDENTITY_INSERT 开启自增列录入选项
SET CONCAT_NULL_YIELDS_NULL 设置NULL在运算时是否按空处理
SET LOCK_TIMEOUT timeout  指定语句等待锁释放的毫秒数 

一、日期和时间语句

SET DATEFIRST
 将一周的第一天设置为从 1 到 7 的一个数字。可以使用 @@DATEFIRST 函数查看 SET DATEFIRST 的当前设置。
SET DATEFORMAT { format | @format_var }
 该设置仅用在将字符串转换为日期值时的解释中。它不影响日期值的显示。SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。SET DATEFORMAT 将覆盖 SET LANGUAGE 的隐式日期格式设置。

二、锁定语句

SET DEADLOCK_PRIORITY { LOW | NORMAL | HIGH | <numeric-priority> | @deadlock_var | @deadlock_intvar }
 <numeric-priority> ::= { -10 | -9 | -8 | ?| 0 | ?| 8 | 9 | 10 }
 指定当前会话与其他会话发生死锁时继续处理的相对重要性

SET LOCK_TIMEOUT timeout_period
 指定语句等待锁释放的毫秒数。

三、杂项语句

SET CONCAT_NULL_YIELDS_NULL { ON | OFF }
 控制当NULL与字符串连接时,是否将NULL值视为空串值。
SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }
 任何时候,一个会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,则对另一个表发出 SET IDENTITY_INSERT ON 语句时,SQL Server 2005 将返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON,并报告已将其属性设置为 ON 的表。
 如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。
 SET IDENTITY_INSERT 的设置是在执行或运行时设置的,而不是在分析时设置的。
SET LANGUAGE { [ N ] 'language' | @language_var }
 SET LANGUAGE 的设置是在执行或运行时设置,而不是在分析时设置。
SET QUOTED_IDENTIFIER { ON | OFF }
 当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则

四、查询执行语句

SET ARITHABORT { ON | OFF }
 在查询执行过程中发生溢出或被零除错误时,终止查询。如果 SET ARITHABORT 为 ON,并且 SET ANSI WARNINGS 也为 ON,则这些错误情况将导致查询终止。如果 SET ARITHABORT 为 ON,但 SET ANSI WARNINGS 为 OFF,则这些错误情况将导致批处理终止。如果在事务内发生错误,则回滚事务。如果 SET ARITHABORT 为 OFF 并且发生了这些错误之一,则显示一条警告消息,并将 NULL 赋予算术运算的结果。
SET ARITHIGNORE { ON | OFF }
 控制在查询执行过程中,是否返回溢出或被零除错误的错误消息。
 SET ARITHIGNORE 设置只控制是否返回错误消息。SQL Server 2005 在计算中出现溢出或被零除错误时将返回 NULL,不考虑此设置。可以使用 SET ARITHABORT 设置来确定是否终止查询。此设置不影响 INSERT、UPDATE 和 DELETE 语句执行过程中发生的错误。
SET FMTONLY { ON | OFF }
 只将元数据返回给客户端。
SET NOCOUNT { ON | OFF }
 是否返回Transact-SQL 语句影响的行数的消息。
 当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
SET NOEXEC { ON | OFF }
 编译每个查询但不执行查询。
SET NUMERIC_ROUNDABORT { ON | OFF }
 指定当表达式中的舍入导致精度损失时生成的错误报告级别。
SET PARSEONLY { ON | OFF }
 检查每个 Transact-SQL 语句的语法并返回任何错误消息,但不编译和执行语句。
SET ROWCOUNT { number | @number_var }
 SQL Server 在返回指定的行数之后停止处理查询。
SET TEXTSIZE { number }
 指定由 SELECT 语句返回的 varchar(max)、nvarchar(max)、varbinary(max)、text、ntext 和 image 数据的大小。

五、SQL-92 设置语句

SET ANSI_DEFAULTS { ON | OFF }
 控制一组可共同指定某些 SQL-92 标准行为的 SQL Server 2005 设置
SET ANSI_NULL_DFLT_OFF { ON | OFF }
 数据库的 ANSI null default 选项为 true 时,更改会话行为以覆盖新列的默认为空性。
SET ANSI_NULL_DFLT_ON {ON | OFF}
 当数据库的 ANSI null default 选项为 false 时,修改会话的行为以覆盖新列的默认为空性。
SET ANSI_NULLS { ON | OFF }
 指定当等于 (=) 和不等于 (<>) 比较运算符用于空值时它们符合 SQL-92 标准的行为。
SET ANSI_PADDING { ON | OFF }
 针对小于定义的列大小的值以及 char、varchar、binary 和 varbinary 数据中有尾随空格的值,此语句可以控制存储此类值的方式。
SET ANSI_WARNINGS { ON | OFF }
 指定几种错误情况下的 SQL-92 标准行为。

 

六、统计语句

SET FORCEPLAN { ON | OFF }
 将 Microsoft SQL Server 查询优化器设置为按照表出现在 SELECT 语句的 FROM 子句中的相同顺序来处理联接。
SET SHOWPLAN_ALL { ON | OFF }
 使 Microsoft SQL Server 不执行 Transact-SQL 语句。SQL Server 返回有关语句执行情况的详细信息,并估计语句对资源的需求。
SET SHOWPLAN_TEXT { ON | OFF }
 使 Microsoft SQL Server 不执行 Transact-SQL 语句。而是由 SQL Server 返回有关如何执行语句的详细信息。
SET SHOWPLAN_XML { ON | OFF }
 使 SQL Server 不执行 Transact-SQL 语句。SQL Server 返回有关如何以定义好的 XML 文档格式执行上述语句的详细信息。SET SHOWPLAN_XML 的设置是在执行或运行时设置的,而不是在分析时设置的。
SET STATISTICS IO { ON | OFF }
 使 SQL Server 显示有关由 Transact-SQL 语句生成的磁盘活动量的信息。
SET STATISTICS XML { ON | OFF }
 使 Microsoft SQL Server 执行 Transact-SQL 语句,并以定义完善的 XML 文档格式生成有关语句执行情况的详细信息。
SET STATISTICS PROFILE { ON | OFF }
 显示语句的配置文件信息。STATISTICS PROFILE 对即席查询、视图和存储过程有效。
SET STATISTICS TIME { ON | OFF }
 显示分析、编译和执行各语句所需的毫秒数。

七、事务语句

SET IMPLICIT_TRANSACTIONS { ON | OFF }
 将连接设置为隐式事务模式。如果设置为 ON,SET IMPLICIT_TRANSACTIONS 将连接设置为隐式事务模式。如果设置为 OFF,则使连接恢复为自动提交事务模式。
SET REMOTE_PROC_TRANSACTIONS { ON | OFF }
 指定当本地事务处于活动状态时,如果执行远程存储过程,将启动由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的 Transact-SQL 分布式事务。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL子查询是指在一个查询嵌套另一个查询,内部查询的结果作为外部查询的条件之一。MySQL子查询可以用于SELECT、UPDATE、DELETE语句,可以帮助我们更好地处理复杂的数据查询和操作。 MySQL子查询可以分为单行子查询和多行子查询两种类型。单行子查询返回的结果只有一行一列,多行子查询返回的结果有多行多列。 以下是MySQL子查询的一些常见用法和示例: 1. 单行子查询 单行子查询返回的结果只有一行一列,可以用于比较操作符、HAVING子句、CASE语句等场景。 比较操作符示例: ```sql SELECT * FROM table1 WHERE column1 = (SELECT column2 FROM table2 WHERE column3 = 'value'); ``` HAVING子句示例: ```sql SELECT column1, COUNT(*) FROM table1 GROUP BY column1 HAVING COUNT(*) > (SELECT COUNT(*) FROM table2); ``` CASE语句示例: ```sql SELECT column1, column2, CASE WHEN column3 = (SELECT MAX(column3) FROM table2) THEN 'max' ELSE 'not max' END FROM table1; ``` 2. 多行子查询 多行子查询返回的结果有多行多列,可以用于比较操作符、相关子查询、相关更新、相关删除等场景。 比较操作符示例: ```sql SELECT * FROM table1 WHERE (column1, column2) IN (SELECT column1, column2 FROM table2 WHERE column3 = 'value'); ``` 相关子查询示例: ```sql SELECT * FROM table1 WHERE column1 IN (SELECT column1 FROM table2 WHERE column2 = 'value'); ``` 相关更新示例: ```sql UPDATE table1 SET column1 = 'new value' WHERE column2 IN (SELECT column2 FROM table2 WHERE column3 = 'value'); ``` 相关删除示例: ```sql DELETE FROM table1 WHERE column1 IN (SELECT column1 FROM table2 WHERE column2 = 'value');```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值