1. 作用:

向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号.
2. 语法:
一批 Transact-SQL 语句
GO

Select 1
Select 2
Select 3
GO
3. 说明:
1) GO 不是 Transact-SQL 语句;
2) 它是 sqlcmd 和 osql 实用工具以及 SQL Server Management Studio 代码编辑器识别的命令.
3) SQL Server 应用程序可以将多个 Transact-SQL 语句作为一个批发送到 SQL Server 的实例来执行.然后,该批中的语句被编译成一个执行计划.程序员在 SQL Server 实用工具中执行特殊语句,或生成 Transact-SQL 语句的脚本在 SQL Server 实用工具中运行时,使用 GO 作为批结束的信号.
4) 如果基于 ODBC 或 OLE DB API 的应用程序试图执行 GO 命令,会收到语法错误.SQL Server 实用工具从不向服务器发送 GO 命令.
4. 权限:
GO 是一个不需任何权限的实用工具命令.它可以由任何用户执行.
5. 用法:
1) SQL Server 实用工具将 GO 解释为应该向 SQL Server 实例发送当前批 Transact-SQL 语句的信号.当前批语句由上一 GO 命令后输入的所有语句组成,如果是第一条 GO 命令,则由即席会话或脚本开始后输入的所有语句组成.
Select 1
Select 2
Select 3
GO
—这是一个批

Select 1
GO
Select 2
GO
—这是两个批
2) GO 命令和 Transact-SQL 语句不能在同一行中.但在 GO 命令行中可包含注释.
Select 1
GO
--会正确输出结果,列名为”无列名”

Select 1 GO

--会正确输出结果,列名为”GO”
--由此可知此处的GO并未起到应有的作用;
3) 用户必须遵照使用批处理的规则.例如,在同一批处理中,创建数据库之后不能直接使用其新建的数据库.局部(用户定义)变量的作用域限制在一个批处理中,不可在 GO 命令后引用.
create database [Roc]
use [Roc]
GO
--运行此批处理后,系统会报错
--把此批处理分成两个批即可正确运行

create database [Roc]
GO
use [Roc]
GO declare @Roc varchar(max)
Select @Roc = 'aking'
GO
print @Roc
GO
--此为两个批处理,由于局部变量的作用域要限制在一个批处理中,所以此语句错误
--把这两个批合并为一个批即可正确运行
declare @Roc varchar(max)
Select @Roc = 'aking'
print @Roc
GO
4) 不同批处理是分开执行的,一个查询失败不会影响另外一个查询.
Select * from 不存在的表
Select 1
--查询执行后会报错,并且不返回任何结果

Select * from 不存在的表
GO
Select 1
GO
--查询执行会会报错,但会返回Select 1的结果
5) GO [count] count 为正整数.指定GO 之前的批处理执行指定的次数.
insert [Roc] Select 'aking'
GO
--批处理执行1次,向表Roc中插入一行记录

aking Insert [Roc] Select 'aking'
GO 10
--批处理执行10次,向表Roc中插入10行记录aking
6. 补充:
Select 1
Select * from 不存在的表
Select 3
--查询结果会报错,但会返回Select 1的结果

Select * from 不存在的表
Select 1
Select 3
--查询结果会报错,且不会返回任何查询的结果

Select 1
Select * from 不存在的表
Selec 3
--查询结果会报错,且不会返回任何查询的结果,因为第三条查询语法错误;

Select 1
Select * from 不存在的表
GO
Select 3
GO
--查询结果会报错,但会返回Select 1 和Select 3的查询结果

Select * from 不存在的表
GO
Select 1
Select 3
GO
--查询结果会报错,但会返回Select 1 和Select 3的查询结果

Select 1
Select * from 不存在的表
GO
Selec 3
GO
--查询结果会报错,但会返回Select 1的结果

////////////////////////////////////////////

1 注释

单行注释:--

多行注释:

2 结束T-sql语句

在每个命令后用分号“;”表示结束,但是分号是可选择的,不要也可以

不要在try end 后面添加分号

不要在 if 后面添加分号

必须在get 之前添加分号

3游标
概念:游标实际上是用户在系统中开设的一个数据缓冲区,存放SQL语句的执行结果。
游标的使用:游标中存放查询结果的一组记录,用户可以通过移动游标指针逐一访问记录,
            并赋给主变量,交由主语言进行进一步处理。
使用游标的五个步骤:
1,声明游标
2,打开游标
3,利用游标读取、修改或删除所取的行
4,关闭游标
5,释放游标

4 字符串连接符+
SELECT 'WQJFF'+'88KK'

--while 语句
declare @i int
set @i = 1
 while @i <= 10
begin
 print @i
 set @i=@i + 1
end

5 waitfor
waitfor  delay '00:00:01'
print '哈哈,现在是10点41'

waitfor time '10:41'
print '哈哈,现在是10点41'

SELECT * FROM SYS.MESSAGES

6 CHARINDEX
CHARINDEX ( char1 ,string1 [ , start_location ] )
char1  一个表达式,其中包含要查找的字符的序列。
string1  一个表达式,通常是一个为指定序列搜索的列。string1 属于字符串数据类别。
start_location  开始在 string1 中搜索 char1 时的字符位置。
如果 start_location 未被指定、是一个负数或零,则将从 string1 的开头开始搜索。start_location 可以是 bigint 类型。
 string1 中包含 char1 时返回字符位置
 string1 中不包含 char1 时返回0

SELECT CHARINDEX('Q','WQFDF')
返回2
SELECT CHARINDEX('WQFDF','Q')
返回0

如果 char1 或 string1 之一为 NULL,并且数据库兼容级别为 70 或更高,则 CHARINDEX 将返回 NULL。如果数据库兼容级别为 65 或更低,则 CHARINDEX 将仅在 char1 和 string1 都为 NULL 时才返回 NULL 值。
SELECT CHARINDEX(NULL,'12345')
返回NULL

转至http://blog.sina.com.cn/s/blog_5623cddb0100ybbx.html

T-sql语句中GO的作用及语法【转】的更多相关文章

  1. sql语句中having的作用是?

    HAVING对由sum或其它集合函数运算结果的输出进行限制.比如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息,这时我们就需要使用HAVING从句. ...

  2. sql语句中as的用法和作用

    最近做项目中,偶然发现在SQL语句中出现了as这个词,一直以来没怎么关注是什么意思,毕竟影响不大,今天有空,就在网上查了一些资料,大概有了一些的了解 我们的Sql语句在很多数据库中都是通用的,比如像M ...

  3. SQL语句中 ` 的作用

    SQL语句中 ` 的作用 做攻防世界WEB区 supersqli 题目,在构建SQL语句时,遇到SQL语句中有 ` 时可以解析,没有则不能. 查阅资料得知,` 通常用来说明其中的内容是数据库名.表名. ...

  4. 解析sql语句中left_join、inner_join中的on与where的区别

    以下是对在sql语句中left_join.inner_join中的on与where的区别进行了详细的分析介绍,需要的朋友可以参考下 table a(id, type):id     type ---- ...

  5. SQL语句中count(1)count(*)count(字段)用法的区别

    SQL语句中count(1)count(*)count(字段)用法的区别 在SQL语句中count函数是最常用的函数之一,count函数是用来统计表中记录数的一个函数, 一. count(1)和cou ...

  6. (转)select 1 from ... sql语句中的1代表什么意思? .

    select  1 from ..., sql语句中的1代表什么意思?查出来是个什么结果?         select 1 from table;与select anycol(目的表集合中的任意一行 ...

  7. SQL点滴35—SQL语句中的exists

    原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...

  8. SQL语句中 INNER JOIN的用法!

    一.SQL语句中  INNER JOIN的用法? 1.INNER JOIN的作用? 可以在两个或者更多的表中获取结果,得出一张新表. [隐式内连接] 表一 car  购物车 表二 user 用户 发现 ...

  9. Sql语句中两个比较迷糊的概念:“连接查询” 与 “外键约束”

    Sql语句中两个比较迷糊的概念:“连接查询” 与 “外键约束 Sql 中的连接查询:就是为了避免笛卡尔积,因为涉及到多表查询的化,不使用连接查询,会先将多个互相乘,求出笛卡尔积,然后在在里面查询符合的 ...

随机推荐

  1. MVC中@Html.DisPlayFor(model=>model.newsName)和 @Model.newsName的区别

    MVC中,在Controllers查询到数据,返回一个实体给View并显示,可以用@Html.DisPlayFor(model=>model.newsName)和 @Model.newsName ...

  2. 关于actionscript中新建一个sprite,设置大小(宽高)的问题。

    有一定as3开发经验的童鞋应该知道,新建一个sprite,是无法设置大小的,即时设置了,也不会生效,宽高还是为0,据说反而有副作用(http://www.cnblogs.com/yjmyzz/arch ...

  3. [收藏夹整理]VC部分

    c++多线程(一) C++11 多线程 鸡啄米:C++编程入门系列之十二(类与对象:面向对象设计的基本思想和特点) 鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员) [笔记]VS ...

  4. ComparatorChain、BeanComparator用法示例(枚举类型排序转)

    工作中遇到按照类的某个属性排列,这个属性是个枚举类型,按照要求的优先级排列. 可以使用ComparatorChain.BeanComparator.FixedOrderComparator实现. 举一 ...

  5. [BS-10] 统一设置app所有页面的“返回”按钮样式

    统一设置app所有页面的“返回”按钮样式 如果想统一设置app所有页面的“返回”按钮样式,首先自定义WZNavigationController类继承UINavigationController类,然 ...

  6. Failed to load JavaHL Library解决方法

    进来的看官使用的是win7吧?!是64位的吧!?安装了eclipse的subclipse插件了吧!每次用到SVN插件时都会弹出如下的对话框,虽然不影响使用但是很不爽是不是啊?LZ也是一个有丁点儿强迫症 ...

  7. IIS+WebMatrix 做 PHP 遇到的问题总结

    1. URL Binding Failure Webmatrix 解决办法: 用管理员权限运行 WebMatrix 并且 改 Port. 我反正是随便输入了一个 Port 就成功了, 默认的是 610 ...

  8. Go prepare statment超过mysql最大数

    mysql_stmt_prepare failed! error(1461)Can't create more than max_prepared_stmt_count statements (cur ...

  9. IIS URL Rewrite redirect from one Domain to another

    IIS URL Rewrite enables Web administrators to create powerful rules to implement URLs that are easie ...

  10. android studio ,Gradle DSL method not found: 'compile()'

    用gradle构建android工程出现  Gradle DSL method not found: 'compile()' 错误 检查你外层的build.gradle文件中是不是用了compile方 ...