本科里学了那么多年SQL Server一直看到书上各种SQL语句中间夹杂着那么几个看似毫无意义的GO,看着就让人莫名,问老师,老师一般只会告诉你,不要理他,这个东西没用的。但是个性纠结并且有轻微强迫症的博主我是不能容忍这种事情的发生的啊!所以终于在若干年后的今天,博主我经过一番研究之后终于知道了这个传说中可以忽略的GO究竟是干嘛的了。

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

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

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

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

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

示例1:

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文件的作用。

示例2:

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的用法了,所以在日常应用中,尤其是在存储过程中要慎用GO,因为很有可能你的存储过程上半段还创建了一个临时表,然后紧跟了一个GO,那么下半段就别想往这个临时表插数据了,因为他们已经可以算是两个存储过程里的语句了。

最后给大家加介绍一个小技巧:

GO不是标准SQL语句,甚至不是T-SQL语句。它只是SQL Server管理器(SSMS)中用来提交T-SQL语句的一个标志。你可以在SSMS中任意指定这个提交标志。SSMS->工具->选项->查询执行->SQL Server->批分隔符中指定这个提交标志。如下图:

SQL Server 中 GO 的用法相关推荐

  1. SQL SERVER 中 GO 的用法2

    具体不废话了,请看下文详解. 1 2 3 4 5 6 7 8 9 10 use db_CSharp go  select *,  备注=case  when Grade>=90 then '成绩 ...

  2. SQL Server 中 RAISERROR 的用法 raiserror 是由单词 raise error 组成 raise 增加; 提高; 提升 raiserror 的作用: r

    SQL Server 中 RAISERROR 的用法 raiserror  是由单词 raise error 组成      raise  增加; 提高; 提升 raiserror 的作用: rais ...

  3. SQL Server中@@ROWCOUNT的用法

    转自:http://www.studyofnet.com/news/146.html 本文导读:@@ROWCOUNT返回上一语句受影响的行数!和@ERROR一样的特性,在每一条语句执行后都将被重置,如 ...

  4. SQL Server中row_number函数用法介绍

    一.SQL Server Row_number函数简介 ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数. 行号以每个分区中第一行的行号开头. 语法实例: ...

  5. SQL Server 中 RAISERROR 的用法

    raiserror  是由单词 raise error 组成      raise  增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sq ...

  6. Sql server中时间函数用法详解

    SQL中的时间函数非常有用,特别是在我们进行初始赋值.复杂查询的时候,就显得特别方便. 1.获得系统当前时间 select getdate()  2.DateName ( datepart , dat ...

  7. SQL Server 中@@IDENTITY的用法

    原文地址:http://www.studyofnet.com/news/145.html 本文导读:@@IDENTITY是返回上次插入的标识值,标识值一般指的是自动增长值.但是如果想只返回插入到当前作 ...

  8. SQL SERVER中ROLLUP的用法

    cube操作符 要使用cube,首先要了解group by 其实cube和rollup区别不太大,只是在基于group by 子句创建和汇总分组的可能的组合上有一定差别, cube将返回的更多的可能组 ...

  9. SQL Server中drop、truncate和delete语句的用法

    SQL Server中drop.truncate和delete语句的用法 drop  删除表和表中的所有数据(不保留表的结构) drop table tablename truncate   删除表中 ...

最新文章

  1. 爬虫之requests模块中cookies参数的使用
  2. 谈谈对 Canal( 增量数据订阅与消费 )的理解--大数据平台技术栈系列(3)
  3. R语言ggplot2可视化使用facet_grid构建多个子图(facet、面图)并自定义每个子图(facet、面图)的文本实战
  4. Tensorflow【实战Google深度学习框架】—TensorBoard
  5. Java不是文明语言吗?
  6. vscode中如何运行git
  7. c语言学生成绩管理论文,学生成绩管理系统毕业论文c语言.doc
  8. Java学习----方法的覆盖
  9. C#语言-04.OOP基础
  10. linux7.7 离线安装nfs客户端_Linux提权姿势二:利用NFS提权
  11. MySQL+Navicat安装教程
  12. 合肥大学c语言试题及答案,合肥工业大学C语言题库程序填空题库2.doc
  13. 你要看透的56条人生哲理
  14. C#获取标准北京时间
  15. win10安装mongoDB
  16. Redis03-优惠券秒杀
  17. python turtle绕原点旋转_Python教程小小turtle绘图教学 (二)
  18. 小米计算机找不到,小米手机投屏找不到设备的情况怎么办?
  19. Python面向对象编程——类的学习
  20. uni-app分享小程序页面给微信好友;小程序分享无效原因;小程序分享失败原因;

热门文章

  1. 电脑排行榜笔记本_2019联想笔记本电脑排行榜
  2. golang ajax jquery,golang - 从http请求返回json字符串的库/包
  3. mysql 5.6 ddl 锁表_MySQL数据库之MySQL5.6 Online DDL 是否锁表、rebuild表、inplace的说明...
  4. python萌新:从零基础入门到放弃
  5. linux(一)export的生命周期
  6. 开发日记:接口开发设计
  7. 牛书终于在卓越网上架
  8. Windows下安装NPM
  9. codeforces hack
  10. SpringBoot第八篇:整合MyBatis-Generator