GO je jako konec skriptu.
Můžete mít více příkazů CREATE TABLE, oddělených GO. Je to způsob, jak izolovat jednu část skriptu od druhé, ale vše odeslat v jednom bloku.
BEGIN a END jsou stejně jako { a } v C/++/#, Javě atd.
Svázali logický blok kódu. Mám tendenci používat BEGIN a END na začátku a konci uložené procedury, ale tam to není nezbytně nutné. Tam, kde je to nezbytné, jsou smyčky a příkazy IF atd., kde potřebujete více než jeden krok...
IF EXISTS (SELECT * FROM my_table WHERE id = @id)
BEGIN
INSERT INTO Log SELECT @id, 'deleted'
DELETE my_table WHERE id = @id
END