一般一条语句用 go和分号都一样执行 多条也一样 那么他们有没有 区别
除了 go是批处理的标志 和 分号是每条语句执行的标志 还有别的吗 谢谢指教

解决方案 »

  1.   

    ;是语法约束里的东东,大部分时候用来辅助表示语句结束。
    GO是SSMS里默认的标记语句开始执行的东东,可以用别的词语替代的
      

  2.   

    GO 不是 Transact-SQL 语句,SQL ServerGO 解释为应该向 SQL Server 实例发送当前批 Transact-SQL 语句的信号
      

  3.   

    go 标志上一批语句的结束,例如go前面所定义的一些变量,go后面是不可访问的
      

  4.   


    --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必须以;开头)
    --但为了意义明确、可读性、兼容性,还是养成好习惯在语句末尾添上;吧
      

  5.   

    有区别。
    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段代码,系统执行成功,这就是区别。
      

  6.   

    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查询如下:
      

  7.   

    go:
    Signals the end of a batch of Transact-SQL statements to the SQL Server utilities.