• 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的结果


  • USE

USE

改变当前操作数据库

用法:
USE 数据库名

例:
CREATE DATABASE XX1 --创建XX1数据库
………………
GO
CREATE DATABASE XX2 --创建XX2数据库
………………
GO
USE XX1 --转到XX1数据库
GO
………… --对XX1数据库的操作
GO
USE XX2 --转到XX2数据库
GO
………… --对XX2数据库的操作
GO

USE在存储过程中不能直接使用
但可以这样用:  
  create proc test  
  as  
  exec('use pubs select * from jobs')  --或者exec(use pubs) exec sp_adduser 'xxxx'
  go

--使用Exec(ute)语句配合USE来改变当前数据库,但数据库环境的更改只在Execute语句结束前有效,所以必须把后面的语句和Execute放到一起

(转自 http://blog.sina.com.cn/s/blog_5623cddb0100ybbx.html  http://blog.csdn.net/nphyez/article/details/41939915  )

检索08- SQL语句中的go与use用法的更多相关文章

  1. SQL语句中exists/not exists的用法分析

    作者:Dsw 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT ...

  2. Sql语句中IN等方面的用法

    select * from txt1 select * from txt2 select * from txt1 where name in (select name from txt2 where ...

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

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

  4. SQL语句中日期的计算方法大全

    sql语句中的日期处理一.日期處理函數1.日期增減函數 dateadd(datepart,number,dtae) datepart:是規定應向日期的哪一部分返回新值的參數.下列是sql server ...

  5. sql语句中----删除表数据drop、truncate和delete的用法

    sql语句中----删除表数据drop.truncate和delete的用法 --drop drop table  tb   --tb表示数据表的名字,下同 删除内容和定义,释放空间.简单来说就是把整 ...

  6. sql语句中获取datetime的日期部分或时间部分

    sql语句中获取datetime的日期部分 sql语句中 经常操作操作datetime类型数据.今天在写一个存储过程的时候需要将 一个datetime的值的 日期部分提取出来.网上有许多这方面的介绍. ...

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

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

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

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

  9. MyBatis Sql语句中的转义字符

    1.在xml的sql语句中,不能直接用大于号.小于号要用转义字符 如果用小于号会报错误如下: org.apache.ibatis.builder.BuilderException: Error cre ...

  10. 在sql语句中添加php变量

    在sql语句中使用{}将php变量扩起来,php就会解析{}中的内容. //案件统计 function getCount($dsql,$tableName,$year){ //诉讼案件总数,总金额 $ ...

随机推荐

  1. 推荐一个iOS应用UI界面设计站点

    Patterns是一个分享ios应用UI界面的站点,专注于分享iOS应用UI界面的细节.依照设计元素进行分类,依照iOS经常使用功能对各类UI进行分类展示. 链接:url=http%3A%2F%2Fw ...

  2. noi25 最长最短单词(为什么会出现运行时错误)

    noi25 最长最短单词(为什么会出现运行时错误) 一.总结 一句话总结:比如除以零,数组越界,指针越界,使用已经释放的空间,数组开得太大,超出了栈的范围,造成栈溢出 1.c++报runtime er ...

  3. amazeui学习笔记--css(常用组件6)--图标Icon

    amazeui学习笔记--css(常用组件6)--图标Icon 一.总结 1.关注用法即可:在 HTML 上添加添加 am-icon-{图标名称} class. <span class=&quo ...

  4. 芯片SA58672(功放芯片)

    1::下面的中文图可能不准: 针对上面的图,数据手册中有一些参数的推导:      这个式子是电压增益的   这个式子是关于截止频率的  典型原理图: 需要电源去耦,能够提高效率. PVDD引脚处的电 ...

  5. C++的模板template

    模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 因此,使用模板的目 ...

  6. ViewPage第二课为ViewPage加入标题

    在第一课 学前准备:掌握ViewPage第一课http://blog.csdn.net/wei_chong_chong/article/details/50468832 为ViewPage加入标题: ...

  7. linux终端下一些“风骚”的按键操作及Linux终端命令

    linux终端下一些"风骚"的按键操作 <backspace>  删除 <ctrl-l>     清空屏幕, 相当于clear tab            ...

  8. ZOJ 2421 Recaman's Sequence

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1421 题目大意: 定义a^m为 a^m = a^(m-1) - m  如果a^ ...

  9. bootstrap课程1 bootstrap为什么这么火

    bootstrap课程1 bootstrap为什么这么火 一.总结 一句话总结:响应式,样式多,功能多. 1.bootstrap通过什么药实现响应式? 响应式web布局是让用户通过不同尺寸的浏览器都可 ...

  10. 一、Github博客搭建之jekyll安装

    注意:以下步骤是FQ后操作的,需要了解FQ的可以移步 -> 枫叶主机 一.安装jekyll需要Ruby-2.1.0以上版本,本人是mac pro系统版本10.12.5(macOS Sierra) ...