GO er som slutningen på et script.
Du kan have flere CREATE TABLE-udsagn adskilt af GO. Det er en måde at isolere en del af scriptet fra en anden, men indsende det hele i én blok.
BEGIN og END er ligesom { og } i C/++/#, Java osv.
De bandt en logisk kodeblok. Jeg har en tendens til at bruge BEGIN og END i starten og slutningen af en lagret procedure, men det er ikke strengt nødvendigt der. Hvor det ER nødvendigt er for loops, og IF-sætninger osv., hvor du har brug for mere end et trin...
IF EXISTS (SELECT * FROM my_table WHERE id = @id)
BEGIN
INSERT INTO Log SELECT @id, 'deleted'
DELETE my_table WHERE id = @id
END