请教关于SQL SERVER中GO的用法

请问关于SQL SERVER中GO的用法
use TestDB    -- 使用TestDB数据库
select * from table



use TestDB  
go
select * from table

执行起来没区别啊,都是从上往下执行的,不需要GO啊,为何很多人写GO ?

实在不理解
------解决方案--------------------
CREATE PROCEDURE sp_X
AS
SELECT ...
GO

DELETE ...
INSET ...
UPDATE ...

EXEC sp_X

如果不加这个 GO,sp_X 的内容包含哪些语句?
------解决方案--------------------
引用:
好吧,我把问题 换个问法,大家看看如何。

SQL语句1
SQL语句2
SQL语句3

执行顺序应该就是  先执行  SQL语句1,然后执行 SQL语句2,最后执行 SQL语句3。
请问,是不是这样的?
如果是这样的,那么何必用GO呢?

--举个简单的例子,这种情况,在查询分析器里面,中间如果不加go就会报语法错误
select * from tb
go
with cte
as
(
select * from tb

)
select * from cte