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

Nota:  Riteniamo importante fornire il contenuto della Guida più recente non appena possibile, nella lingua dell'utente. Questa pagina è stata tradotta automaticamente e potrebbe contenere errori di grammatica o imprecisioni. L'intento è quello di rendere fruibile il contenuto. Nella parte inferiore della pagina è possibile indicare se le informazioni sono risultate utili. Questo è l' articolo in lingua inglese per riferimento.

È possibile creare e modificare tabelle, vincoli, indici e relazioni di Access mediante la scrittura di query di definizione dati in visualizzazione SQL. In questo articolo illustra le query di definizione dei dati e usarle per creare tabelle, vincoli, indici e relazioni. In questo articolo consentono inoltre decidere quando usare una query di definizione dati.

In questo articolo

Panoramica

Creare o modificare una tabella

Creare un indice

Creare un vincolo o una relazione

Panoramica

A differenza di altre query di Access, una query di definizione dei dati non recupera i dati. Una query di definizione dati utilizza invece Data Definition Language per creare, modificare o eliminare oggetti di database.

Nota: Lingua DDL (Data Definition) fa parte del linguaggio SQL (Structured Query).

Query di definizione dati può risultare molto utile. Regolarmente, è possibile eliminare e ricreare le parti dello schema del database semplicemente eseguendo alcune query. È possibile utilizzare una query di definizione dati se si ha familiarità con le istruzioni SQL e si desidera eliminare e ricreare tabelle particolare, vincoli, indici o relazioni.

Avviso: Utilizzo delle query di definizione dei dati per la modifica degli oggetti di database può essere rischiosa, perché le azioni non sono accompagnate da finestre di dialogo di conferma. Se si commette un errore, è possibile perdita di dati o inavvertitamente modificare la struttura di una tabella. Prestare attenzione quando si utilizza una query di definizione dei dati per modificare gli oggetti nel database. Se non si è responsabile della gestione del database che si sta utilizzando, è consigliabile consultare l'amministratore del database prima di eseguire una query di definizione dati.

Importante: Creare una copia di backup di tutte le tabelle coinvolte prima di eseguire una query di definizione dati.

Parole chiave DDL

Parola chiave

Usare

CREATE

Creare un indice o la tabella che non esiste già.

ALTER

Modificare una tabella esistente o una colonna.

DROP

Eliminare una tabella esistente, colonna o vincolo.

ADD

Aggiungere una colonna o un vincolo a una tabella.

COLUMN

Usare con l'opzione Aggiungi, modifica, o rilasciare

CONSTRAINT

Usare con l'opzione Aggiungi, modifica, o rilasciare

INDEX

Usare con l'opzione Crea

TABLE

Usare con ALTER, creare, o eliminare

Torna all'inizio

Creare o modificare una tabella

Per creare una tabella, utilizzare un comando CREATE TABLE. Un comando CREATE TABLE presenta la sintassi seguente:

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

È necessario solo gli elementi di un comando CREATE TABLE sono il comando Crea tabella Items e il nome della tabella, ma in genere è possibile definire alcuni campi o altri aspetti della tabella. Valutare la possibilità di questo semplice esempio.

Si supponga che si desidera creare una tabella per memorizzare il nome, anno e il prezzo di auto comuni che si intende per l'acquisto. Si desidera consentire fino a 30 caratteri per il nome e 4 caratteri per l'anno. Per utilizzare una query di definizione dei dati per creare la tabella, eseguire le operazioni seguenti:

Nota: Potrebbe essere prima di tutto necessario abilitare il contenuto del database nell'ordine di eseguire una query di definizione dati:

  • Sulla barra dei messaggi, fare clic su Abilita contenuto.

Creare una tabella

  1. Nel gruppo macro e codice della scheda Crea fare clic su Struttura Query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di Query della scheda Progettazione fare clic su Definizione dei dati.

    Griglia di struttura è nascosta e viene visualizzata la scheda di oggetto visualizzazione SQL.

  4. Digitare l'istruzione SQL seguente:

    Crea tabella auto (nome TEXT(30), anno TEXT(4), prezzo valuta)

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

Modificare una tabella

Per modificare una tabella, si utilizza un comando ALTER TABLE. Per aggiungere, modificare o eliminare colonne (rimuovere) o i vincoli, è possibile utilizzare un comando ALTER TABLE. Un comando ALTER TABLE presenta la sintassi seguente:

ALTER TABLE table_name predicate

predicato nel punto in cui può essere una delle operazioni seguenti:

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 che si desidera aggiungere un campo di testo di 10 caratteri per memorizzare le informazioni relative alla condizione di ogni un'auto. È possibile eseguire le operazioni seguenti:

  1. Nel gruppo macro e codice della scheda Crea fare clic su Struttura Query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di Query della scheda Progettazione fare clic su Definizione dei dati.

    Griglia di struttura è nascosta e viene visualizzata la scheda di oggetto visualizzazione SQL.

  4. Digitare l'istruzione SQL seguente:

    Modifica tabella Auto Aggiungi colonna condizione TEXT(10)

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

Torna all'inizio

Creazione di un indice

Per creare un indice per una tabella esistente, utilizzare un comando CREATE INDEX. Un comando CREATE INDEX presenta la sintassi seguente:

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

Solo gli elementi necessari sono il comando CREATE INDEX, il nome dell'indice, l'argomento via, il nome della tabella contenente i campi che si desidera indice e l'elenco dei campi da includere nell'indice analitico.

  • Le cause argomento DESC l'indice per essere creati in ordine decrescente, che può essere utile se è necessario eseguire spesso query che cercare primi valori per il campo indicizzato oppure ordinare il campo indicizzato in ordine decrescente. Per impostazione predefinita, viene creato un indice in ordine crescente.

  • L'argomento con primaria consente di impostare i campi indicizzati come chiave primaria della tabella.

  • L'argomento con DISABILITARE NULL, l'indice richiedere l'immissione di un valore per il campo indicizzato, vale a dire non sono consentiti valori null.

Si supponga di disporre di una tabella denominata auto con campi in cui memorizzare il nome, anno, prezzo e una condizione di auto comuni che si intende per l'acquisto. Si supponga inoltre che la tabella è diventato grande e spesso includono il campo year nelle query. È possibile creare un indice in base al campo anno per le query restituiscono i risultati in modo più rapido tramite la procedura seguente:

  1. Nel gruppo macro e codice della scheda Crea fare clic su Struttura Query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di Query della scheda Progettazione fare clic su Definizione dei dati.

    Griglia di struttura è nascosta e viene visualizzata la scheda di oggetto visualizzazione SQL.

  4. Digitare l'istruzione SQL seguente:

    CREARE l'indice YearIndex via auto (anno)

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

Torna all'inizio

Creare un vincolo o una relazione

Un vincolo stabilisce una condizione logica che un campo o una combinazione di campi deve soddisfare quando vengono inseriti i valori. Ad esempio, un vincolo univoco impedisce di accettare un valore da duplicare un valore per il campo esistente nel campo limitato.

Una relazione è un tipo di vincolo che fa riferimento a valori di un campo o una combinazione di campi in un'altra tabella per determinare se un valore può essere inserito nel campo limitata o combinazione di campi. Non si esegue una parola chiave speciale per indicare che un vincolo è una relazione.

Per creare un vincolo, utilizzare una clausola CONSTRAINT un comando CREATE TABLE o ALTER TABLE. Esistono due tipi di clausola CONSTRAINT: uno per la creazione di un vincolo su un singolo campo e un altro per la creazione di un vincolo in più campi.

Vincoli a campo singolo

Clausola CONSTRAINT a campo singolo subito dopo la definizione del campo che limita e presenta la sintassi seguente:

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 disporre di una tabella denominata auto con campi in cui memorizzare il nome, anno, prezzo e una condizione di auto comuni che si intende per l'acquisto. Si supponga inoltre spesso dimenticare di immettere un valore per la condizione di auto e che si desidera sempre registrare queste informazioni. È possibile creare un vincolo nel campo condizione che non è possibile lasciare il campo vuoto, utilizzando la procedura seguente:

  1. Nel gruppo macro e codice della scheda Crea fare clic su Struttura Query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di Query della scheda Progettazione fare clic su Definizione dei dati.

    Griglia di struttura è nascosta e viene visualizzata la scheda di oggetto visualizzazione SQL.

  4. Digitare l'istruzione SQL seguente:

    Modifica tabella Auto ALTER colonna condizione testo vincolo ConditionRequired non NULL

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

Si supponga che, dopo un certo periodo, si saranno presenti molti valori simili nel campo condizione che deve essere uguale. Ad esempio, alcune di auto presente un valore condizione di scarsa e gli altri utenti hanno un valore non valido.

Nota: Se si desidera seguire le procedure rimanenti, aggiungere alcuni dati falsi alla tabella auto che è stato creato in passaggi precedenti.

Dopo la pulizia dei valori in modo che siano più uniforme, è possibile creare una tabella, denominata CarCondition, con un campo denominato condizione, che contiene tutti i valori che si desidera utilizzare per la condizione di auto:

  1. Nel gruppo macro e codice della scheda Crea fare clic su Struttura Query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di Query della scheda Progettazione fare clic su Definizione dei dati.

    Griglia di struttura è nascosta e viene visualizzata la scheda di oggetto visualizzazione SQL.

  4. Digitare l'istruzione SQL seguente:

    Crea tabella CarCondition (condizione TEXT(10))

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

  6. Creare una chiave primaria della tabella utilizzando un'istruzione ALTER TABLE:

    Modifica tabella CarCondition ALTER colonna condizione testo vincolo CarConditionPK chiave primaria

  7. Per inserire la nuova tabella CarCondition i valori dal campo condizione della tabella Auto, digitare il codice SQL seguente nella scheda a oggetti visualizzazione SQL:

    INSERIMENTO in CarCondition SELECT DISTINCT condizione da Auto;

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

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

Creare una relazione utilizzando un vincolo

Per richiedere che qualsiasi nuovo valore inserito nel campo condizione della tabella Auto corrisponde a un valore del campo condizione nella tabella CarCondition, quindi è possibile creare una relazione tra CarCondition e Auto sul campo denominato condizione, utilizzando le operazioni seguenti Procedura:

  1. Nel gruppo macro e codice della scheda Crea fare clic su Struttura Query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di Query della scheda Progettazione fare clic su Definizione dei dati.

    Griglia di struttura è nascosta e viene visualizzata la scheda di oggetto visualizzazione SQL.

  4. Digitare l'istruzione SQL seguente:

    Modifica tabella Auto ALTER colonna condizione testo vincolo FKeyCondition riferimenti CarCondition (condizione)

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

Vincoli multicampo

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

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}]}

In questo esempio viene usata la tabella di auto. Si supponga che si desidera assicurarsi che non sono ammessi record nella tabella Auto abbiano lo stesso set di valori per nome, anno, condizioni e prezzi. È possibile creare un vincolo univoco che si applica a questi campi, utilizzando la procedura seguente:

  1. Nel gruppo macro e codice della scheda Crea fare clic su Struttura Query.

  2. Chiudere la finestra di dialogo Mostra tabella.

  3. Nel gruppo Tipo di Query della scheda Progettazione fare clic su Definizione dei dati.

    Griglia di struttura è nascosta e viene visualizzata la scheda di oggetto visualizzazione SQL.

  4. Digitare l'istruzione SQL seguente:

    Modifica tabella Auto aggiungere vincolo NoDupes UNIVOCI (nome, anno, condizioni, prezzo)

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

Torna all'inizio

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

Queste informazioni sono risultate utili?

Grazie per il feedback!

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

×