In SQL Server, go separates query packets. It can be used in most cases.
In earlier versions of SQL Server, you had to go after modifying the table, for example:
alter table MyTable add MyColumn int go select MyColumn from MyTable
If you have not done so, SQL Server will analyze the query package and complain that MyColumn does not exist. See MSDN :
SQL Server utilities interpret GO as a signal that they need the current batch of Transact-SQL statements in an instance of SQL Server. The current batch of statements consists of all statements entered since the last GO, or from the beginning of the session or script, if this is the first GO.
source share