SQL server中的GO详解

经常看到各种SQL语句中间夹杂着那么几个看似毫无意义的GO,这个Go的作用是什么呢?

官方说法是:GO只是SQL Server管理器(SSMS)中用来提交T-SQL语句的一个标志

我的理解是:GO相当于一个.sql文件的结束标记

我这么说大家可能不是很清楚我想表达的意思,下面我来解释一下:

大家都用过这个在这里插入图片描述按钮吧,这儿按钮就是新建一个.sql后缀名的SQL语句脚本文件,通常情况下,我们会在里面打各种SQL语句,然后按一下F5或者在这里插入图片描述去执行这些语句。

下面我们来输入一些语句看一下不使用GO和使用GO的区别:

declare @a int
set @a=1
select @a

执行结果为:
在这里插入图片描述

declare @a int
go
set @a=1
select @a

执行结果为:
在这里插入图片描述

总结:我们都知道如果一个变量@a是声明在a.sql文件中的,那么在b.sql中是不能为@a赋值的,因为这根本就是两个脚本文件。而GO语句正是起到了分割.sql文件的作用。

再看一个例子:

select * from dbo.MSdbms
select * from dbo.backupfile
go 2

执行结果:
在这里插入图片描述

select * from dbo.MSdbms
go
select * from dbo.backupfile
go 2

执行结果:
在这里插入图片描述

总结:GO 语句后面跟数字代表提交的次数,上图中的第一个GO依然起到了示例1中提到的分割.sql文件的作用。

同时,每个被GO分隔的语句都是一个单独的事务,一个语句执行失败不会影响其它语句执行。

例如:

首先同时执行下边的语句

select * from sysobjects where id=a
select getdate()

你会发现会报错,并且不会显示任何结果集

而你再执行

select * from sysobjects where id=a
go
select getdate()
go

你会发现尽管同样会报错,但结果集中包含select getdate()的结果。

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值