sql语句中use与go的用法

一、USE的用法 ? ———— 决定后面的语句对哪个数据库进行操作

use的用法很简单,就是选择使用哪个数据库,一般安装完数据库后会有几个默认的数据库比如master、model、msdb、northwind、pubs,其中只有northwind与pubs是系统自带的事例数据库,如果你要学习sql的话,可以拿这两个数据库做实验,其他的应该都是系统数据库不要随便乱动哦!

假如要使用pubs数据库,先用数据库管理软件连接上数据库(可以使用sql查询分析器,或者其他第三方sql管理工具),然后使用如下命令

use pubs ? ? ?--这是第一句,选择数据库pubs, 后面的语句都将对pubs数据库进行操作

select * from authors ? --查找pubs数据库中authors表的所有内容

UPDATE authors ? ? ? ?----- ?更新表
SET au_lname = 'White' ? ?--------
WHERE au_id = '172-32-1176' ?----------

use northwind ? ?---如果要选择使用其他表,再使用use+数据库名 ?就行了

select * from orders --执行sql语句

从上面可以看出使用use 可以在同一个查询分析器里面多次使用,每次使用use语句后紧接着的sql语句操作都是对上面use的数据库进行操作的。

二、sql中go的用法 ? ———— 一步一整体,互不影响,一步一操作

GO不是 Transact-SQL 语句,?但它是 sqlcmd 和 osql 实用工具以及 SQL Server Management Studio 代码编辑器可以识别的命令,它类似于sql中的批处理。一般情况下一个sql语句过长的话,就会使用go语句,go相当于对它前面的数个sql语句进行打包操作,然后运行。

use northwind

UPDATE jobs
SET job_desc = 'New Hire - Job not specified'
WHERE job_id = 1
GO

UPDATE jobs
SET job_desc = 'Publisher'
WHERE job_id = 5
GO

 

每个go语句都是独立的,一个go错误不会影响另一个go语句的执行。

use pubs 

SELECT * FROM sss
GO 

SELECT * FROM pub_info
go

像上面,第一个go之前的语句会报错因为表sss不存在,但是这并不影响第二个go执行并返回结果。但是同一个go里面如果有某句错误(非语法错误),则sql会一直执行到错误的那行后报错,之后的sql也将不执行。

use pubs 

SELECT * FROM sss
GO 

SELECT * FROM publishers 
SELECT * FROM pub_info00
SELECT * FROM pub_info
go

执行上面语句后,会返回 第一句SELECT * FROM publishers 的结果,由于第二句找不到对象会报错,第三句也不会返回结果。如果go中有语法错误,这个go整个都不会执行,但是这不影响另一个go的执行!如果还不清楚,试试这个语句:

use pubs 

SELECT * FROM stores
GO

SELECT * FROM publishers 
SELEC * FROM pub_info00   --这里select拼写错误
SELECT * FROM pub_info
go

SELECT * FROM stores
GO

第一个和第三个go可以正常返回结果!

在go中,创建数据库或者更该表属性后不能直接使用新创建的数据库或更新的表。局部(用户定义)变量的作用域应该限制在同一个go中,不可在 GO 命令后单独引用,go必须单独占用一行。现在看看百度上面的一个提问就不难理解了:

select top 10 * into #b from A
go
alter table #b add  aa int      --对#b表进行了属性操作
update  #b set aa=1           --对#b表进行操作
select * from #b where aa=1
drop table  #b
go
--这样会报错  出来的结果是
--(10 行受影响)
--消息 207,级别 16,状态 1,第 4 行
--列名 'aa' 无效。

我们可以看出在第二个go语句中先使用alter对表进行的属性操作,然后紧接着又使用update对刚才更改的表进行操作,肯定会报错,只需要将alter table #b add aa intupdate #b set aa=1 两句放在不同的go语句中就行了!

使用go可对批处理中的sql语句进行重复操作,在某些情况下使用很有效率,比如insert

use pubs 
INSERT INTO jobs(min_lvl,max_lvl) SELECT 99,RAND()*100 
GO 4

在数据库pubs的jobs表中一次性插入4行内容。

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/sql语句中use与go的用法/

赞赏

微信赞赏支付宝赞赏

发表评论