sql中 @局部变量和@@全局变量

局部变量

声明:DECLARE @local_variable data_type

@local_variable 是变量的名称。变量名必须以 at 符 (@) 开头。data_type 是任何由系统提供的或用户定义的数据类型。变量不能是 text、ntext 或 image 数据类型。

示例:
use master
declare @SEL_TYPE char(2)
declare @SEL_CUNT numeric(10)
set @SEL_TYPE = ‘U’/user table/
set @SEL_CUNT = 10

/返回系统中用户表的数目/
select @SEL_CUNT = COUNT(*)
from sysobjects
where type = @SEL_TYPE

select @SEL_CUNT as 'User table '‘s count’

如果要返回系统表的数目,可以用set @SEL_TYPE = ‘S’

可能这个例子并不能说明使用变量的好处,我只是想说明使用方法。当一组(几个甚至几十个)SQL语句都使用某个变量时,就能体会到他的好处了。

全局变量

全局变量是系统预定义的,返回一些系统信息,全局变量以两个at(@)开头。下面是我统计了一些较为常用的变量。

@@CONNECTIONS
返回自上次启动以来连接或试图连接的次数。

@@CURSOR_ROWS
返回连接上最后打开的游标中当前存在的合格行的数量(返回被打开的游标中还未被读取的有效数据行的行数)

@@DATEFIRST
返回每周第一天的数字

@@ERROR
返回最后执行的SQL 语句的错误代码。

@@FETCH_STATUS
返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。

@@IDENTITY
返回最后插入的标识值

@@LANGID
返回当前所使用语言的本地语言标识符(ID)。

@@LANGUAGE
返回当前使用的语言名。

@@LOCK_TIMEOUT
返回当前会话的当前锁超时设置,单位为毫秒。

@@PROCID
返回当前过程的存储过程标识符 (ID) 。

@@ROWCOUNT
返回受上一语句影响的行数。

@@SERVERNAME
返回运行 的本地服务器名称。

@@SPID
返回当前用户进程的服务器进程标识符 (ID)。

@@TRANCOUNT
返回当前连接的活动事务数。

@@VERSION
返回当前安装的日期、版本和处理器类型。

@@CPU_BUSY
返回自SQL Server 最近一次启动以来CPU 的工作时间其单位为毫秒

@@DATEFIRST
返回使用SET DATEFIRST 命令而被赋值的DATAFIRST 参数值SET DATEFIRST,命令用来指定每周的第一天是星期几

@@DBTS
返回当前数据库的时间戳值必须保证数据库中时间戳的值是惟一的

@@ERROR
返回执行Transact-SQL 语句的错误代码

@@FETCH_STATUS
返回上一次FETCH 语句的状态值

@@IDLE
返回自SQL Server 最近一次启动以来CPU 处于空闭状态的时间长短单位为毫秒

@@IO_BUSY
返回自SQL Server 最近一次启动以来CPU 执行输入输出操作所花费的时间其单位为毫秒

@@LANGID
返回当前所使用的语言ID 值

@@LANGUAGE
返回当前使用的语言名称

@@LOCK_TIMEOUT
返回当前会话等待锁的时间长短其单位为毫秒

@@MAX_CONNECTIONS
返回允许连接到SQL Server 的最大连接数目

@@MAX_PRECISION
返回decimal 和numeric 数据类型的精确度

@@NESTLEVEL
返回当前执行的存储过程的嵌套级数初始值为0

@@OPTIONS
返回当前SET 选项的信息

@@PACK_RECEIVED
返回SQL Server 通过网络读取的输入包的数目

@@PACK_SENT
返回SQL Server 写给网络的输出包的数目

@@PACKET_ERRORS
返回网络包的错误数目

@@PROCID
返回当前存储过程的ID 值

@@REMSERVER
返回远程SQL Server 数据库服务器的名称

@@SERVICENAME
返回SQL Server 正运行于哪种服务状态之下如MSSQLServer MSDTC SQLServerAgent

@@SPID
返回当前用户处理的服务器处理ID 值

@@TEXTSIZE
返回SET 语句的TEXTSIZE 选项值SET 语句定义了SELECT 语句中text 或image数据类型的最大长度基本单位为字节

@@TIMETICKS
返回每一时钟的微秒数

@@TOTAL_ERRORS
返回磁盘读写错误数目

@@TOTAL_READ
返回磁盘读操作的数目

@@TOTAL_WRITE
返回磁盘写操作的数目

@@TRANCOUNT
返回当前连接中处于激活状态的事务数目

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要设置 SQL的字段不能重复,可以在创建表的时候使用 UNIQUE 约束。UNIQUE 约束可以保证表某一列的值都是唯一的。 以下是使用 UNIQUE 约束创建一个示例表的 SQL 代码: ``` CREATE TABLE my_table ( id INT PRIMARY KEY, name VARCHAR(50) UNIQUE, email VARCHAR(50) UNIQUE, phone VARCHAR(20) UNIQUE ); ``` 在上面的示例,使用 UNIQUE 约束分别给 name、email 和 phone 列设置了唯一性约束,确保了表每个值都是唯一的。需要注意的是,UNIQUE 约束不仅可以用于单个列,还可以用于多个列的组合,以确保表的每个行都是唯一的。 ### 回答2: SQL可以通过设置唯一约束来禁止重复字段。在创建表格时,可以使用UNIQUE关键字来声明某些列具有唯一性,这样就不允许在同一表格插入重复值。 例如,创建一个名为"students"的学生表格,其学号要求是唯一的: CREATE TABLE students ( id INT PRIMARY KEY, student_name VARCHAR(50), student_id VARCHAR(20) UNIQUE, age INT, major VARCHAR(50) ); 在上述例子,通过在"student_id"列上使用UNIQUE关键字,我们声明该列必须具有唯一性。如果尝试插入重复的学号,即会触发错误。 要注意的是,唯一约束可以包含在多列上,以确保多列组合具有唯一性。例如,如果我们想要确保"student_name"和"age"这两列的组合是唯一的,可以这样声明: CREATE TABLE students ( id INT PRIMARY KEY, student_name VARCHAR(50), student_id VARCHAR(20), age INT, major VARCHAR(50), UNIQUE (student_name, age) ); 这样,在插入数据时,不允许出现重复相同姓名和年龄的组合。 通过设置唯一约束,可以保证数据库表格的字段值的唯一性,从而避免数据冗余和错误。 ### 回答3: 在SQL,我们可以通过设置约束来确保数据库表的字段不重复。其一个常见的约束是主键约束,它保证了表的某个字段的唯一性。 主键约束可以在创建表时定义,也可以在已存在的表添加。创建表时定义主键约束的语法如下: CREATE TABLE 表名 ( 列名1 数据类型 [约束条件], 列名2 数据类型 [约束条件], ... PRIMARY KEY (列名1) ); 其,主键约束的关键字是PRIMARY KEY,括号内列出了需要设置为主键的列名。主键约束可以保证指定的列不重复且不能为空。 例如,我们创建一个名为students的表,其的id字段需要设置为主键,确保不重复: CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50), age INT ); 这样,每次向students表插入数据时,都会自动检查id字段是否重复,如果重复则会报错。 除了主键约束,还可以使用唯一约束来保证字段的唯一性。在创建表时,可以在列定义使用UNIQUE关键字来设置唯一约束。例如: CREATE TABLE students ( id INT, name VARCHAR(50) UNIQUE, age INT ); 这样,name字段在整个表必须保持唯一,如果插入重复的name值,会导致插入失败。 总之,通过在SQL设置主键约束或唯一约束,我们可以确保表的字段不重复,从而提高数据的完整性和准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cosima落云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值