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. hdu1241 Oil Deposits

    Oil Deposits                                                 Time Limit: 2000/1000 MS (Java/Others)  ...

  2. xcode7的那些坑-“Your binary is not optimized for iPhone 5” (ITMS-90096) when submitting

    用Xcode7向App Store提交二进制文件是,提示ERROR ITMS-90096:"You binary is not optimized for iPhone 5...." ...

  3. JS控制flash的播放

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  4. linux spi 设备节点 读写

    本文记录spi设备节点的操作方法. SPI总线设备文件名通常为/dev/spidevN.P(N=0.1.2--,P=0.1.2--), 其中N表示第几路SPI总线,而P表示在该路SPI总线中使用哪个C ...

  5. python深复制和浅复制

    深复制:一个更改后不会影响到其他的变量,另一个变量B赋值给变量A时,虽然A和B的内存空间仍然相同,但当A的值发生变化时,会重新给A分配空间,A和B的地址变得不再相同 浅复制:改变一个就会引起另一个的改 ...

  6. Jenkins定时构建项目

    我们是不是可以自动的来构建项目那么此时我们需要使用Poll SCM和Build periodically,我们在构建触发中选择这两项即可,其实他们两个就是一个自动任务 触发远程构建:触发远程构建Bui ...

  7. ucenter 客户端里的自动方法

    <?php /** * UCenter 应用程序开发 Example * * UCenter 简易应用程序,应用程序有自己的用户表 * 使用到的接口函数: * uc_authcode() 可选, ...

  8. WPF--Blend制作Button控件模板--问题补充

    补充记录Button控件模板 控件模板制作过程中出现下图问题:动画对象不能用于动画属性"Fill” 并且这类问题Blend4中包括VS2010中仍然可以运行,但是只有VS2010中会报错:如 ...

  9. Java 静态类 static

    静态的方法是非虚方法(Java中的非虚方法有private,final,static,构造器,非虚方法无需根据具体的对象遍历方法区的方法表,决定调用关系) 也就是说,对于静态类型方法的调用,是其声明类 ...

  10. OSG绘制几何图形

    在OSGMFC程序基础上修改OSG_MFC类的方法,如下: void cOSG::InitSceneGraph(void) { // Init the main Root Node/Group mRo ...