检索08- SQL语句中的go与use用法
- 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用法的更多相关文章
- SQL语句中exists/not exists的用法分析
作者:Dsw 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT ...
- Sql语句中IN等方面的用法
select * from txt1 select * from txt2 select * from txt1 where name in (select name from txt2 where ...
- SQL点滴35—SQL语句中的exists
原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...
- SQL语句中日期的计算方法大全
sql语句中的日期处理一.日期處理函數1.日期增減函數 dateadd(datepart,number,dtae) datepart:是規定應向日期的哪一部分返回新值的參數.下列是sql server ...
- sql语句中----删除表数据drop、truncate和delete的用法
sql语句中----删除表数据drop.truncate和delete的用法 --drop drop table tb --tb表示数据表的名字,下同 删除内容和定义,释放空间.简单来说就是把整 ...
- sql语句中获取datetime的日期部分或时间部分
sql语句中获取datetime的日期部分 sql语句中 经常操作操作datetime类型数据.今天在写一个存储过程的时候需要将 一个datetime的值的 日期部分提取出来.网上有许多这方面的介绍. ...
- 解析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 ...
- MyBatis Sql语句中的转义字符
1.在xml的sql语句中,不能直接用大于号.小于号要用转义字符 如果用小于号会报错误如下: org.apache.ibatis.builder.BuilderException: Error cre ...
- 在sql语句中添加php变量
在sql语句中使用{}将php变量扩起来,php就会解析{}中的内容. //案件统计 function getCount($dsql,$tableName,$year){ //诉讼案件总数,总金额 $ ...
随机推荐
- ACCESS数据库改名asp或asa
到把mdb改为asp或asa ACCESS数据库:把数据库后缀名改成ASP是防止ACCESS数据库被下载
- Java Web学习总结(3)——Servlet详解
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- 新版本的AutoCAD2018 怎样删除 A360 Drive盘符
通常的做法,如下: (1)点击开始菜单的“运行”(Win+R或者Win+X快捷选择运行),在弹出的对话框输入“regedit”,回车,进入注册表编辑器. (2)找到HKEY_LOCAL_MACHINE ...
- Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值
Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值 题外话:一个问题研究到最后,那边记录文档的前半部分基本上都是没用的,甚至是错误的. 重点在最后,前边不过一些假想猜測. ht ...
- 【习题 3-12 UVA - 11809】Floating-Point Numbers
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] \(A*10^B = temp[M]*2^{2^E-1}\) 两边取一下对数 得到 \(lg_A+B = lg_{temp[M]} ...
- TransE论文剩余部分
4.3链接预測 表3:链接预測结果.不同方法的性能. 整体结果 表3显示了全部数据集全部方法的比較. 与预期结果一致,经过过滤设置的结果具有较低的平均排名和较高的hits@10,相信在链接预測方面对各 ...
- php课程 10-34 目录遍历中的注意事项是什么
php课程 10-34 目录遍历中的注意事项是什么 一.总结 一句话总结:用scandir,会把目录和文件放到一个数组中. 1.移动文件怎么实现,php里面没有移动文件这个函数? 先复制,再删除 2 ...
- php模拟顺序栈基本操作
php模拟顺序栈基本操作 一.总结 写函数什么永远记住边界情况:比如 echo "栈已满!<br/>" ; 栈已空这种,那就能多考虑几种情况,代码就很正宗了 1.对象 ...
- swift开发网络篇—利用NSURLConnection GET请求和POST请求
一.GET请求和POST请求简单说明 @IBOutlet weakvar userName:UITextField! @IBOutletweakvar userPwd:UITextField! @IB ...
- PostgreSQL 序列
PostgreSQL 中的序列是一个数据库对象,本质上是一个自增器.因此,序列在其他同类型数据库软件中以 autoincrment 值的形式存在.在一张表需要非随机,唯一标实符的场景下,Sequenc ...