MSDE Altre istruzioni per l'uso (parte 4) - Creare/Eliminare Tabelle in un Database
a cura di Sabrina Cosolo (requisiti: Livello intemedio di conoscenza generale)

Creare una Tabella in un Database Via Codice SQL
La creazione di una Tabella su SQL Server è un comando SQL che fa parte di quello che viene chiamato DDL (Data Definition Language). Deve essere lanciata collegandosi a SQL Server con un utente che abbia diritti di amministrazione sul database in cui si vuole generare la tabella; è consigliabile utilizzare sempre l'utente SA o un utente Windows del gruppo Builtin\Administrator per questo tipo di istruzioni, in quanto la gestione utente di SQL Server permette delle "sottili" implementazioni relative ai ruoli degli utenti le quali potrebbero generare comportamenti apparentemente anomali per un utente inesperto; ad esempio potrebbe succedere che, una volta creata la tabella col proprio utente, gli altri utenti non la possano vedere o modificare. Ne accenno solo come "Avviso ai naviganti", in quanto la trattazione dell'argomento utenti, sicurezza e amministrazione del server costituisce argomento di un corso Microsoft di 5 giorni, non certo di questi articoli.

Di seguito il codice SQL per la creazione delle tabelle nel database di esempio già utilizzato nella prima serie di articoli:

  CREATE TABLE [dbo].[tbBrani]
  ( [idBrano] [int] 
      IDENTITY (1, 1) NOT NULL
  , [numBrano] [int] NULL 
  , [TitoloBrano] [nvarchar] (128) NULL 
  , [idCd] [int] NULL 
  , [idInterprete] [int] NULL 
  , [idRitmo] [int] NULL 
  , [idCatMuscale] [int] NULL 
  ) ON [PRIMARY]
 
  CREATE TABLE [dbo].[tbCaseDisc] 
  ( [idCasaDisc] [int] 
      IDENTITY (1, 1) NOT NULL 
  , [Nome] [nvarchar] (128) NULL 
  ) ON [PRIMARY]
 
  CREATE TABLE [dbo].[tbCatMusicali] 
  ( [idCatMusicale] [int] 
      IDENTITY (1, 1) NOT NULL
  , [Nome] [nvarchar] (50) NULL 
  ) ON [PRIMARY]
 
  CREATE TABLE [dbo].[tbCate] 
  ( [idCate] [int] 
      IDENTITY (1, 1) NOT NULL 
  , [Nome] [nvarchar] (50) NULL 
  ) ON [PRIMARY]
  
  CREATE TABLE [dbo].[tbCd] 
  ( [idcd] [int] 
      IDENTITY (1, 1) NOT NULL 
  , [Titolo] [nvarchar] (128) 
  , [idInterprete] [int] NULL 
  , [anno] [int] NULL 
  , [idCasadisc] [int] NULL 
  , [idCate] [int] NULL 
  , [idCdISBN] [nvarchar] (16) NULL 
  , [DataIns] [DateTime] Null 
  ) ON [PRIMARY]
 
  CREATE TABLE [dbo].[tbInterpreti] 
  ( [idInterprete] [int] 
      IDENTITY (1, 1) NOT NULL 
  , [Nome] [nvarchar] (128) NULL 
  , [TiPers] [nvarchar] (1) NULL 
  , [idGruppo] [int] NULL 
  ) ON [PRIMARY]
 
  CREATE TABLE [dbo].[tbRitmi] 
  ( [idRitmo] [int] 
      IDENTITY (1, 1) NOT NULL 
  , [Nome] [nvarchar] (50) NULL 
  ) ON [PRIMARY]

Vediamo ora di dare una sintassi di base del comando e di commentarlo in dettaglio:

  CREATE TABLE [owner].[tablename]
  ( [nomecampo][tipodati](dimensione) [NOT] NULL 
      [IDENTITY (seed,increment)],
    [nomecampo][tipodati](dimensione) [NOT] NULL,
  ) ON [PRIMARY]

Diamo un significato agli elementi usati nella sintassi del comando:

Come avete potuto vedere, nella creazione delle tabelle abbiamo volutamente evitato di inserire le definizioni relative ai vincoli (il più semplice è la chiave primaria) in quanto saranno trattati in un capitolo a sé. Per vostra conoscenza è possibile inserire la creazione di vincoli (Chiavi primarie, chiavi univoche, foreign key etc.) anche direttamente nell'istruzione Create Table. A coloro che volessero progettare una applicazione complessa io consiglierei comunque di costruire script separati per questioni di manutenzione e di chiarezza nel codice.

Eliminare una tabella in un Database via codice SQL
Come sempre eliminare è più facile che creare, quindi ecco il comando per eliminare le tabelle da noi costruite:

  DROP TABLE [dbo].[tbBrani]
  DROP TABLE [dbo].[tbCaseDisc]
  DROP TABLE [dbo].[tbCatMusicali]
  DROP TABLE [dbo].[tbCate]
  DROP TABLE [dbo].[tbCD]
  DROP TABLE [dbo].[tbInterpreti]
  DROP TABLE [dbo].[tbRitmi]

La sintassi di base del comando è:

  DROP TABLE [owner].[tablename]

Dove owner e tablename corrispondono alle definizioni date in precedenza.

Anche per questi comandi SQL si può utilizzare OSQL.EXE (vedi, anche per i parametri).

La sintassi per chiamare un comando SQL usando OSQL è la seguente:

  osql -S Localhost -U SA -P as -i creatbosql.sql

Un possibile file di input da utilizzare per realizzare uno degli esempi creautbosql.sql è un file di testo contenente il comando da eseguire che è leggermente diverso da quello sopra descritto, riporto la sintassi per la creazione della tabella brani:

  USE MusicBox
  GO
 
  CREATE TABLE [dbo].[tbBrani]
  ( [idBrano] [int] 
      IDENTITY (1, 1) NOT NULL
  , [numBrano] [int] NULL 
  , [TitoloBrano] [nvarchar] (128) NULL 
  , [idCd] [int] NULL 
  , [idInterprete] [int] NULL 
  , [idRitmo] [int] NULL 
  , [idCatMuscale] [int] NULL 
  ) ON [PRIMARY]
  GO
 
  QUIT

Il comando USE MUSICBOX serve a dire al server che dobbiamo lavorare sul Database Musicbox (database di esempio creato nel precedente articolo), Il comando GO esegue i comandi richiesti, il comando QUIT esce da OSQL.EXE che altrimenti si comporta come un Interprete comandi e rimane attivo all'interno della finestra console.

La sintassi da usare con OSQL per trasportarvi tutti gli script da noi generati in questa pagina è la seguente:

  USE Musicbox
  GO 
 
  script da eseguire
 
  GO
 
  QUIT
<<< Creare/Eliminare Tipi dati utente, Default e Messaggi di sistema