Creare o modificare tabelle o indici utilizzando una query di definizione dei dati

Importante :  Il presente articolo è stato tradotto automaticamente, vedere la dichiarazione di non responsabilità. Per visualizzare la versione inglese dell'articolo, fare clic qui.

In Microsoft Office Access 2007, è facile per creare e modificare tabelle, vincoli e indici in visualizzazione struttura e creare relazioni utilizzando finestra Relazioni. In alternativa, è possibile creare e modificare le stesse entità scrivendo le query di definizione dei dati in visualizzazione SQL.

In questo articolo vengono descritte le query di definizione dei dati e viene illustrato come utilizzare queste query per creare tabelle, indici, vincoli e relazioni. Il contenuto di questo articolo può inoltre risultare utile per stabilire quando utilizzare una query di definizione dei dati.

Per saperne di più

Determinare quando utilizzare una query di definizione dei dati

Creare o modificare una tabella

Creazione di un indice

Creare un vincolo o una relazione

Determinare quando utilizzare una query di definizione dei dati

A differenza di altre query, una query di definizione dei dati non consente di recuperare dati. Per la maggior parte delle query viene utilizzato il linguaggio DML (Data Manipulation Language), che comprende i comandi SQL (Structured Query Language) per specificare come vengono combinati e modificati i dati dagli oggetti di database esistenti per produrre i risultati relativi ai dati desiderati. Nelle query di definizione dei dati viene utilizzato il linguaggio DDL (Data Definition Language), che comprende i comandi SQL per specificare la definizione degli oggetti di database in cui sono archiviati o indicizzati i dati, oltre ai comandi SQL per controllare l'accesso utente agli oggetti di database. In Office Access 2007 una query di definizione dei dati consente di definire o modificare la definizione di un oggetto di database.

In generale per creare tabelle, vincoli, indici e relazioni è opportuno utilizzare le interfacce grafiche di progettazione disponibili in Office Access 2007, ad esempio la visualizzazione Struttura e la finestra Relazioni. Se tuttavia alcune tabelle vengono eliminate e ricreate regolarmente, l'utilizzo di queste interfacce potrebbe risultare dispersivo in termini di tempo. Con una query di definizione dei dati, invece, è possibile scrivere una query una volta ed eseguirla di nuovo secondo le esigenze. Si consiglia di utilizzare una query di definizione dei dati solo se si ha familiarità con le istruzioni SQL e se si prevede di eliminare e ricreare regolarmente tabelle, vincoli o indici particolari.

Importante : L'utilizzo di query di definizione dei dati per modificare oggetti di database può essere rischioso, in quanto le azioni non sono accompagnate da finestre di dialogo di conferma. In caso di errori, si potrebbero perdere dati o modificare inavvertitamente la struttura di una tabella. È quindi opportuno prestare attenzione quando si utilizza una query di definizione dei dati per modificare oggetti contenuti nel database. Se non si è responsabili della gestione del database in uso, prima di utilizzare una query di definizione dei dati si consiglia di consultare l'amministratore del database. È inoltre buona norma eseguire una copia di backup di tutte le tabelle su cui verrà eseguita una query di questo tipo.

Inizio pagina

Creare o modificare una tabella

Per creare una tabella, utilizzare il comando CREATE TABLE la cui sintassi è riportata di seguito:

CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1]
[, field2 type [(size)] [NOT NULL] [index2]
[, ...][, CONSTRAINT constraint1 [, ...]])

I soli elementi obbligatori del comando CREATE TABLE è lo stesso comando CREATE TABLE, il nome della tabella, almeno un campo e il tipo di dati di ogni campo. Di seguito verrà esaminato un semplice esempio.

Si supponga di voler creare una tabella in cui archiviare il nome, l'anno e il prezzo relativi ad auto usate di cui si sta considerando l'acquisto. Si desidera consentire un massimo di 30 caratteri per il nome e 4 cifre per l'anno. Per utilizzare una query di definizione dei dati per creare la tabella, procedere come segue:

Nota : Per consentire l'esecuzione di una query di definizione dei dati è innanzitutto necessario attivare il contenuto del database.

  1. Sulla barra dei messaggi fare clic su Opzioni, quindi selezionare Attiva il contenuto.

  2. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  3. Chiudere la finestra di dialogo Mostra tabella.

  4. Nel gruppo Tipo di query della scheda Struttura fare clic su Definizione dati.

    La griglia di struttura viene nascosta e viene visualizzata la scheda a oggetti Visualizzazione SQL.

  5. Digitare la seguente istruzione SQL:

    CREATE TABLE Auto (Nome TEXT(30), Anno TEXT(4), Prezzo CURRENCY)

  6. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Modificare una tabella

Per modificare una tabella, utilizzare il comando ALTER TABLE. Questo comando consente di aggiungere, modificare o eliminare (rimuovere) colonne o vincoli. Di seguito è riportata la sintassi del comando ALTER TABLE:

ALTER TABLE table_name predicate

dove predicate può essere uno dei seguenti valori:

ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Si supponga di voler aggiungere un campo di testo di 10 caratteri per l'archiviazione di informazioni relative alla condizione di ogni auto. È possibile procedere come segue:

  1. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di query della scheda Struttura fare clic su Definizione dati.

    La griglia di struttura viene nascosta e viene visualizzata la scheda a oggetti Visualizzazione SQL.

  4. Digitare la seguente istruzione SQL:

    ALTER TABLE Auto ADD COLUMN Condizione TEXT(10)

  5. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Inizio pagina

Creare un indice

Per creare un indice per una tabella esistente, utilizzare il comando CREATE INDEX la cui sintassi è riportata di seguito:

CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...])
[WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]

I soli elementi obbligatori sono il comando CREATE INDEX, il nome dell'indice, l'argomento ON, il nome della tabella contenente i campi che si desidera indicizzare e l'elenco dei campi da includere nell'indice.

  • L'argomento DESC consente di creare l'indice in ordine decrescente e ciò può risultare utile se si eseguono spesso query che effettuano la ricerca dei primi valori del campo indicizzato o che elencano il contenuto del campo indicizzato in ordine decrescente. Per impostazione predefinita, l'indice viene creato in ordine crescente.

  • L'argomento WITH PRIMARY consente di definire il campo o i campi indicizzati come chiave primaria della tabella.

  • L'argomento WITH DISALLOW NULL consente di impostare la richiesta di immissione di un valore per il campo indicizzato, vale a dire che non sono consentiti valori null.

Si supponga di utilizzare una tabella denominata Auto contenente campi in cui sono archiviati il nome, l'anno, il prezzo e la condizione relativi ad auto usate di cui si sta considerando l'acquisto. Si supponga inoltre che la tabella sia diventata di dimensioni estese e che nelle query si includa spesso il campo relativo all'anno. Per fare in modo che le query restituiscano più velocemente i risultati, è possibile creare un indice in base al campo Anno attenendosi alla seguente procedura:

  1. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di query della scheda Struttura fare clic su Definizione dati.

    La griglia di struttura viene nascosta e viene visualizzata la scheda a oggetti Visualizzazione SQL.

  4. Digitare la seguente istruzione SQL:

    CREATE INDEX YearIndex ON Auto (Anno)

  5. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Inizio pagina

Creare un vincolo o una relazione

Un vincolo stabilisce una condizione logica che un campo o una combinazione di campi deve soddisfare quando si inseriscono dei valori. Ad esempio, un vincolo UNIQUE impedisce al campo vincolato di accettare un valore che duplicherebbe un valore esistente per quel campo.

Una relazione è un tipo di vincolo che fa riferimento ai valori di un campo o una combinazione di campi in un'altra tabella per determinare se nel campo o nella combinazione di campi vincolati è possibile inserire un valore.

Per creare un vincolo si utilizza una clausola CONSTRAINT in un comando CREATE TABLE o ALTER TABLE. Sono disponibili due tipi di clausole CONSTRAINT: una per creare un vincolo per un solo campo e un'altra per creare un vincolo per più campi.

Vincoli a campo singolo

Una clausola CONSTRAINT a campo singolo segue immediatamente la definizione del campo che contiene e utilizza la seguente sintassi:

CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)]
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

Si supponga di utilizzare una tabella denominata Auto contenente campi in cui sono archiviati il nome, l'anno, il prezzo e la condizione relativi ad auto usate di cui si sta considerando l'acquisto. Si supponga inoltre di dimenticare spesso di immettere un valore per la condizione dell'auto, mentre si desidera registrare sempre queste informazioni. Per creare un vincolo per il campo Condizione che impedisca di lasciare il campo vuoto, attenersi alla procedura riportata di seguito:

  1. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di query della scheda Struttura fare clic su Definizione dati.

    La griglia di struttura viene nascosta e viene visualizzata la scheda a oggetti Visualizzazione SQL.

  4. Digitare la seguente istruzione SQL:

    ALTER TABLE Auto ALTER COLUMN Condizione TEXT CONSTRAINT ConditionRequired NOT NULL

  5. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Si supponga ora di notare, dopo un certo periodo di tempo, che nel campo Condizione sono presenti molti valori simili che dovrebbero essere uguali. Ad esempio, per alcune auto nel campo Condizione è presente il valore scadente e per altre il valore mediocre. Dopo avere provveduto alla pulizia dei valori in modo che siano più coerenti, si potrà creare una tabella con nome CondizioneAuto con un campo Condizione contenente tutti i valori che si desidera utilizzare per la condizione delle auto:

  1. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di query della scheda Struttura fare clic su Definizione dati.

    La griglia di struttura viene nascosta e viene visualizzata la scheda a oggetti Visualizzazione SQL.

  4. Digitare la seguente istruzione SQL:

    CREATE TABLE CondizioneAuto (Condizione TEXT(10))

  5. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

  6. Per inserire i valori dal campo Condizione della tabella Auto nella nuova tabella CondizioneAuto, digitare il seguente codice SQL nella scheda a oggetti Visualizzazione SQL:

    INSERT INTO Condizione auto SELECT DISTINCT Condizione FROM Auto;

    Nota : L'istruzione SQL in questo passaggio è una query di accodamento che, a differenza di una query di definizione dei dati, termina con un punto e virgola.

  7. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Per fare in modo che qualsiasi nuovo valore inserito nel campo Condizione della tabella Auto corrisponda a un valore del campo Condizione nella tabella CondizioneAuto, è quindi possibile creare una relazione tra CondizioneAuto e Auto in corrispondenza del campo Condizione utilizzando la procedura riportata di seguito:

  1. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di query della scheda Struttura fare clic su Definizione dati.

    La griglia di struttura viene nascosta e viene visualizzata la scheda a oggetti Visualizzazione SQL.

  4. Digitare la seguente istruzione SQL:

    ALTER TABLE Auto ALTER COLUMN Condizione TEXT CONSTRAINT FKeyCondition REFERENCES CondizioneAuto (Condizione)

  5. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Vincoli multicampo

Una clausola CONSTRAINT multicampo può essere utilizzata solo all'esterno di una clausola di definizione del campo e utilizza la seguente sintassi:

CONSTRAINT constraint_name 
{PRIMARY KEY (pk_field1[, pk_field2[, ...]]) |
UNIQUE (unique1[, unique2[, ...]]) |
NOT NULL (notnull1[, notnull2[, ...]]) |
FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]])
REFERENCES foreign_table
[(fk_field1[, fk_field2[, ...]])] |
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

Di seguito è riportato un altro esempio basato sull'utilizzo della tabella Auto. Si supponga di voler avere la certezza che nella tabella Auto non siano presenti due record con lo stesso set di valori relativi a nome, anno, condizione e prezzo. In questo caso è possibile creare un vincolo UNIQUE per questi campi utilizzando la procedura riportata di seguito:

  1. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di query della scheda Struttura fare clic su Definizione dati.

    La griglia di struttura viene nascosta e viene visualizzata la scheda a oggetti Visualizzazione SQL.

  4. Digitare la seguente istruzione SQL:

    ALTER TABLE Auto ADD CONSTRAINT NoDupes UNIQUE (nome, anno, condizione, prezzo)

  5. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Inizio pagina

Nota : Dichiarazione di non responsabilità per la traduzione automatica: Il presente articolo è stato tradotto tramite un software di traduzione automatica e non da una persona. Microsoft offre le traduzioni automatiche per consentire a coloro che non conoscono la lingua inglese di leggere gli articoli sui prodotti, sui servizi e sulle tecnologie Microsoft. Dal momento che l'articolo è stato tradotto automaticamente, potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli.

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per i tuoi commenti e suggerimenti

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×