GO 不是 Transact-SQL 语句,SQL ServerGO 解释为应该向 SQL Server 实例发送当前批 Transact-SQL 语句的信号
go 标志上一批语句的结束,例如go前面所定义的一些变量,go后面是不可访问的
--go的意思是将go前一批语句提交给SQL Server执行,定义的变量在批内有效 --SQL Server 对语句的执行是以批为单位的,即使你把多个批写在同一个脚本文件中 --如变量的作用域 declare @i int set @i = 100 print @i go--结果 /* 100 */ --在批后引用上一批定义的变量出错 declare @i int set @i = 100 print @i --100 go print @i--必须声明标量变量 "@i"。--结果 /* 100 消息 137,级别 15,状态 2,第 1 行 必须声明标量变量 "@i"。 */--;的作用只是标识一条语句的完毕,用来区分前一条语句和后一条语句 --不添加;亦可(不过2005 的CTE必须以;开头) --但为了意义明确、可读性、兼容性,还是养成好习惯在语句末尾添上;吧
有区别。 CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME) INSERT [tb] SELECT '1','jay','20010101' UNION ALL SELECT '2','jay','20020203' UNION ALL SELECT '3','tony','20020203' UNION ALL SELECT '4','tony','20010101'--1. IF NOT OBJECT_ID('[tb]') IS NULL DROP TABLE [tb]CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME) INSERT [tb] SELECT '1','jay','20010101' UNION ALL SELECT '2','jay','20020203' UNION ALL SELECT '3','tony','20020203' UNION ALL SELECT '4','tony','20010101'--2. IF NOT OBJECT_ID('[tb]') IS NULL DROP TABLE [tb] GO CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME) INSERT [tb] SELECT '1','jay','20010101' UNION ALL SELECT '2','jay','20020203' UNION ALL SELECT '3','tony','20020203' UNION ALL SELECT '4','tony','20010101' GO --SELECT * FROM [tb]如上代码,先创建一个TB表,然后执行第1段代码,系统就给出错误提示。执行第2段代码,系统执行成功,这就是区别。
CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME,COL INT) --------------------刚才漏了个字段 INSERT [tb] SELECT '1','jay','20010101' UNION ALL SELECT '2','jay','20020203' UNION ALL SELECT '3','tony','20020203' UNION ALL SELECT '4','tony','20010101'--1. IF NOT OBJECT_ID('[tb]') IS NULL DROP TABLE [tb]CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME) INSERT [tb] SELECT '1','jay','20010101' UNION ALL SELECT '2','jay','20020203' UNION ALL SELECT '3','tony','20020203' UNION ALL SELECT '4','tony','20010101' --2.IF NOT OBJECT_ID('[tb]') IS NULL DROP TABLE [tb] GO CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME) INSERT [tb] SELECT '1','jay','20010101' UNION ALL SELECT '2','jay','20020203' UNION ALL SELECT '3','tony','20020203' UNION ALL SELECT '4','tony','20010101' GO --SELECT * FROM [tb]-->SQL查询如下:
go: Signals the end of a batch of Transact-SQL statements to the SQL Server utilities.
GO是SSMS里默认的标记语句开始执行的东东,可以用别的词语替代的
--go的意思是将go前一批语句提交给SQL Server执行,定义的变量在批内有效
--SQL Server 对语句的执行是以批为单位的,即使你把多个批写在同一个脚本文件中
--如变量的作用域
declare @i int
set @i = 100
print @i
go--结果
/*
100
*/
--在批后引用上一批定义的变量出错
declare @i int
set @i = 100
print @i --100
go
print @i--必须声明标量变量 "@i"。--结果
/*
100
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@i"。
*/--;的作用只是标识一条语句的完毕,用来区分前一条语句和后一条语句
--不添加;亦可(不过2005 的CTE必须以;开头)
--但为了意义明确、可读性、兼容性,还是养成好习惯在语句末尾添上;吧
CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME)
INSERT [tb]
SELECT '1','jay','20010101' UNION ALL
SELECT '2','jay','20020203' UNION ALL
SELECT '3','tony','20020203' UNION ALL
SELECT '4','tony','20010101'--1.
IF NOT OBJECT_ID('[tb]') IS NULL DROP TABLE [tb]CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME)
INSERT [tb]
SELECT '1','jay','20010101' UNION ALL
SELECT '2','jay','20020203' UNION ALL
SELECT '3','tony','20020203' UNION ALL
SELECT '4','tony','20010101'--2.
IF NOT OBJECT_ID('[tb]') IS NULL DROP TABLE [tb]
GO
CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME)
INSERT [tb]
SELECT '1','jay','20010101' UNION ALL
SELECT '2','jay','20020203' UNION ALL
SELECT '3','tony','20020203' UNION ALL
SELECT '4','tony','20010101'
GO
--SELECT * FROM [tb]如上代码,先创建一个TB表,然后执行第1段代码,系统就给出错误提示。执行第2段代码,系统执行成功,这就是区别。
--------------------刚才漏了个字段
INSERT [tb]
SELECT '1','jay','20010101' UNION ALL
SELECT '2','jay','20020203' UNION ALL
SELECT '3','tony','20020203' UNION ALL
SELECT '4','tony','20010101'--1.
IF NOT OBJECT_ID('[tb]') IS NULL DROP TABLE [tb]CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME)
INSERT [tb]
SELECT '1','jay','20010101' UNION ALL
SELECT '2','jay','20020203' UNION ALL
SELECT '3','tony','20020203' UNION ALL
SELECT '4','tony','20010101'
--2.IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([id] NVARCHAR(10),[name] NVARCHAR(10),[date] DATETIME)
INSERT [tb]
SELECT '1','jay','20010101' UNION ALL
SELECT '2','jay','20020203' UNION ALL
SELECT '3','tony','20020203' UNION ALL
SELECT '4','tony','20010101'
GO
--SELECT * FROM [tb]-->SQL查询如下:
Signals the end of a batch of Transact-SQL statements to the SQL Server utilities.