SQL Server表变量和临时表的区别

SQL Server表变量和临时表尽管在穿件的语法上有些类似,但是还是有些区别,下面就将为您介绍这两者间的区别,希望可以使您对SQL Server表变量和临时表加深理解。

表变量创建的语法类似于SQL Server临时表,区别就在于创建的时候,必须要为之命名。表变量是变量的一种,表变量也分为本地及全局的两种,本地表变量的名称都是以“@”为前缀,只有在本地当前的用户连接中才可以访问。全局的表变量的名称都是以“@@”为前缀,一般都是系统的全局变量,像我们常用到的,如@@Error代表错误的号,@@RowCount代表影响的行数。

如我们看看创建表变量的语句:

DECLARE @News Table ( News_id int NOT NULL,

NewsTitle varchar(100), NewsContent varchar(2000), NewsDateTime datetime )

比较临时表及表变量都可以通过SQL的选择、插入、更新及删除语句,它们的的不同主要体现在以下这些:

1)表变量是存储在内存中的,当用户在访问表变量的时候,SQL Server是不产生日志的,而在临时表中是产生日志的;

2)在表变量中,是不允许有非聚集索引的;

3)表变量是不允许有DEFAULT默认值,也不允许有约束;

4)临时表上的统计信息是健全而可靠的,但是表变量上的统计信息是不可靠的;

5)临时表中是有锁的机制,而表变量中就没有锁的机制。

 

 

 

【编辑推荐】

SQL Server临时表简介

带您了解Sql server表值函数

SQL SERVER索引介绍

Sql Server日期格式转换示例

SQL函数之DATEPART函数

THE END