T-sql语句中GO的作用及语法【转】
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的作用及语法【转】的更多相关文章
- sql语句中having的作用是?
HAVING对由sum或其它集合函数运算结果的输出进行限制.比如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息,这时我们就需要使用HAVING从句. ...
- sql语句中as的用法和作用
最近做项目中,偶然发现在SQL语句中出现了as这个词,一直以来没怎么关注是什么意思,毕竟影响不大,今天有空,就在网上查了一些资料,大概有了一些的了解 我们的Sql语句在很多数据库中都是通用的,比如像M ...
- SQL语句中 ` 的作用
SQL语句中 ` 的作用 做攻防世界WEB区 supersqli 题目,在构建SQL语句时,遇到SQL语句中有 ` 时可以解析,没有则不能. 查阅资料得知,` 通常用来说明其中的内容是数据库名.表名. ...
- 解析sql语句中left_join、inner_join中的on与where的区别
以下是对在sql语句中left_join.inner_join中的on与where的区别进行了详细的分析介绍,需要的朋友可以参考下 table a(id, type):id type ---- ...
- SQL语句中count(1)count(*)count(字段)用法的区别
SQL语句中count(1)count(*)count(字段)用法的区别 在SQL语句中count函数是最常用的函数之一,count函数是用来统计表中记录数的一个函数, 一. count(1)和cou ...
- (转)select 1 from ... sql语句中的1代表什么意思? .
select 1 from ..., sql语句中的1代表什么意思?查出来是个什么结果? select 1 from table;与select anycol(目的表集合中的任意一行 ...
- SQL点滴35—SQL语句中的exists
原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...
- SQL语句中 INNER JOIN的用法!
一.SQL语句中 INNER JOIN的用法? 1.INNER JOIN的作用? 可以在两个或者更多的表中获取结果,得出一张新表. [隐式内连接] 表一 car 购物车 表二 user 用户 发现 ...
- Sql语句中两个比较迷糊的概念:“连接查询” 与 “外键约束”
Sql语句中两个比较迷糊的概念:“连接查询” 与 “外键约束 Sql 中的连接查询:就是为了避免笛卡尔积,因为涉及到多表查询的化,不使用连接查询,会先将多个互相乘,求出笛卡尔积,然后在在里面查询符合的 ...
随机推荐
- Linux系统产生随机数的3种方法
Linux系统产生随机数的3种方法 方法一:生成8位随机数 [root@localhost ~]# echo "$RANDOM$(date +%N%t)" | md5sum | c ...
- A股中为什么有涨幅超过10%的
在A股规定涨跌幅10%的正常交易日中,某些股票的涨跌幅却超出或没达到10%的,原因是因为A股的交易中最小的价格“申报单位为0.01元”,就是说某些股票不管什么价格都不会刚刚好是10%,它只能“取最近于 ...
- JavaScript:复选框事件的处理
复选框事件的处理 复选框本身也是多个组件的名字相同.所以在定义复选框的同事依然要使用document.all()取得全部的内容. 范例:操作复选框,要求是可以一个个去选择选项,也可以直接全选,全选按钮 ...
- tomecat 配置修改 及启动配置
a.如果tomcat是以bat方式启动的,则如下设置: 修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALIN ...
- 第三篇 SQL Server代理警报和操作员
本篇文章是SQL Server代理系列的第三篇,详细内容请参考原文. 正如这一系列的上一篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行,除了步骤中执行的工 ...
- 第一篇 Replication:复制简介
本篇文章是SQL Server Replication系列的第一篇,详细内容请参考原文. 复制这个词来自拉丁语中的"replicare",意味着重复.Replication des ...
- Java FX中TreeView节点选中和双击事件监听
TreeItem<String> treeRoot = new TreeItem<String>("Root"); treeRoot.setExpanded ...
- 《30天自制操作系统》03_day_学习笔记
harib00a: 添加的部分从P46开始,制作IPL准备开始从磁盘装载程序了 笔者讲解了软盘的驱动的构造,以及汇编语言读取软盘的方法 MOV AX,0x0820 MOV ES,AX ; 柱面0 ; ...
- Java I/O解读与使用实例
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲解了Java I/O解读与使用实例. 一.I/O基本概念 I/O全称是Inpu ...
- JAVA-封装-静态属性
1.使用 1.static 2.用来修饰属性.方法.内部类.代码块 3.称为类属性,静态属性,类方法,静态方法 3.不需要实例化,直接用类名或静态成员名调用 2.特点 1.静态属性对于类的所有实例是共 ...