加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- AI开发硬件、专属主机、建站、CDN、云容器引擎!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server表变量如何定义

发布时间:2023-12-30 13:17:05 所属栏目:MsSql教程 来源:DaWei
导读: 这篇文章主要讲解了“SQL Server表变量如何定义,表变量不能做什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL
这篇文章主要讲解了“SQL Server表变量如何定义,表变量不能做什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Server表变量如何定义,表变量不能做什么”吧!
一、表变量

表变量的具体定义包括列定义,列名,数据类型和约束。而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约束不能在表变量中使用)。

定义表变量的语句是和正常使用Create Table定义表语句的子集。只是表变量通过DECLARE @local_variable语句进行定义。

1、定义和使用表变量
定义一个表变量,插入一条数据,然后查询:

DECLARE @tb1 Table
  (
   Id int,
   Name varchar(20),
   Age int
  )

INSERT INTO @tb1 VALUES(1,'刘备',22)

SELECT * FROM @tb1

2、表变量不能做如下事情:
来试试一些不符合要求的情况,例如添加表变量后,添加约束,并对约束命名:

ALTER TABLE @tb1 ADD CONSTRAINT CN_AccountAge
    CHECK 
    (Account_Age > 18);    -- 插入年龄必须大于18

SQL Server不支持定义表变量时对Constraint命名,也不支持定义表变量后,对其建Constraint。

更多的不允许,请查看下面的要求。

虽然表变量是一个变量,但是其不能赋值给另一个变量。

check约束,默认值和计算列不能引用自定义函数。

不能为约束命名。

不能Truncate表变量。

不能向标识列中插入显式值(也就是说表变量不支持SET IDENTITY_INSERT ON)

3、表变量的特征:

表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调用的存储过程和函数中),表变量在批处理结束后自动被清除。

表变量较临时表产生更少的存储过程重编译。

针对表变量的事务仅仅在更新数据时生效,所以锁和日志产生的数量会更少。

由于表变量的作用域如此之小,而且不属于数据库的持久部分,所以事务回滚不会影响表变量。

表变量可以在其作用域内像正常的表一样使用。更确切的说,表变量可以被当成正常的表或者表表达式一样在SELECT,DELETE,UPDATE,INSERT语句中使用,但是表变量不能在类似"SELECT select_list INTO table_variable"这样的语句中使用。而在SQL Server2000中,表变量也不能用于INSERT INTO table_variable EXEC stored_procedure这样的语句中。

感谢各位的阅读,以上就是“SQL Server表变量如何定义”的内容了,经过本文的学习后,相信大家对SQL Server表变量如何定义,表变量不能做什么都有更深刻的体会了吧。小编将为大家推送更多相关知识点的文章,欢迎关注!

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章