GO jest jak koniec skryptu.
Możesz mieć wiele instrukcji CREATE TABLE rozdzielonych znakiem GO. Jest to sposób na oddzielenie jednej części skryptu od drugiej, ale przesłanie wszystkiego w jednym bloku.
BEGIN i END są jak { i } w C/++/#, Javie itp.
Wiążą logiczny blok kodu. Zwykle używam BEGIN i END na początku i na końcu procedury składowanej, ale nie jest to bezwzględnie konieczne. Tam, gdzie jest to konieczne, są pętle, instrukcje IF itp., gdzie potrzebujesz więcej niż jednego kroku...
IF EXISTS (SELECT * FROM my_table WHERE id = @id)
BEGIN
INSERT INTO Log SELECT @id, 'deleted'
DELETE my_table WHERE id = @id
END