CREATE TABLE - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CREATE TABLE

Crea una nuova tabella nel database corrente. Definire un elenco di colonne, ognuna delle quali contiene dati di un tipo distinto. Il proprietario della tabella è l'emittente del CREATE TABLE comando.

Privilegi richiesti

Di seguito sono riportati i privilegi richiesti per: CREATE TABLE

  • Superuser

  • Utenti con il privilegio CREATE TABLE

Sintassi

CREATE [ [LOCAL ] { TEMPORARY | TEMP } ] TABLE [ IF NOT EXISTS ] table_name ( { column_name data_type [column_attributes] [ column_constraints ] | table_constraints | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] ) [ BACKUP { YES | NO } ] [table_attributes] where column_attributes are: [ DEFAULT default_expr ] [ IDENTITY ( seed, step ) ] [ GENERATED BY DEFAULT AS IDENTITY ( seed, step ) ] [ ENCODE encoding ] [ DISTKEY ] [ SORTKEY ] [ COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE ] and column_constraints are: [ { NOT NULL | NULL } ] [ { UNIQUE | PRIMARY KEY } ] [ REFERENCES reftable [ ( refcolumn ) ] ] and table_constraints are: [ UNIQUE ( column_name [, ... ] ) ] [ PRIMARY KEY ( column_name [, ... ] ) ] [ FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ] and table_attributes are: [ DISTSTYLE { AUTO | EVEN | KEY | ALL } ] [ DISTKEY ( column_name ) ] [ [COMPOUND | INTERLEAVED ] SORTKEY ( column_name [,...]) | [ SORTKEY AUTO ] ] [ ENCODE AUTO ]

Parametri

LOCAL

Facoltativo. Sebbene questa parola chiave sia accettata nell'istruzione, non ha alcun effetto in Amazon Redshift.

TEMPORARY | TEMP

Parola chiave che crea una tabella temporanea visibile solo all'interno della sessione corrente. La tabella viene automaticamente eliminata alla fine della sessione in cui è stata creata. La tabella temporanea può avere lo stesso nome di una tabella permanente. La tabella temporanea viene creata in uno schema separato, specifico per la sessione. Non puoi specificare un nome per questo schema. Questo schema temporaneo diventa il primo schema nel percorso di ricerca, quindi la tabella temporanea ha la precedenza sulla tabella permanente a meno che non si qualifichi il nome della tabella con il nome dello schema per accedere alla tabella permanente. Per ulteriori informazioni sugli schemi e sulla precedenza, consultare search_path.

Nota

Per impostazione predefinita, gli utenti del database sono autorizzati a creare tabelle temporanee mediante la loro appartenenza automatica al PUBLIC gruppo. Per negare questo privilegio a un utente, revocate il TEMP privilegio al PUBLIC gruppo e quindi concedetelo esplicitamente solo a utenti o gruppi di utenti specifici. TEMP

SE NOT EXISTS

Clausola che indica che se la tabella specificata esiste già, il comando non deve apportare modifiche e deve restituire un messaggio che indica che la tabella esiste, piuttosto che terminare con un errore. Tenere presente che la tabella esistente potrebbe non essere come quella che sarebbe stata creata, per il confronto viene utilizzato solo il nome della tabella.

Questa clausola è utile per la creazione di script, quindi lo script non ha esito negativo se CREATE TABLE tenta di creare una tabella già esistente.

table_name

Nome della tabella da creare.

Importante

Se specifichi un nome di tabella che inizia con "#", la tabella viene creata come tabella temporanea. Di seguito è riportato un esempio:

create table #newtable (id int);

È anche possibile fare riferimento alla tabella con il carattere '# '. Per esempio:

select * from #newtable;

La lunghezza massima per il nome della tabella è 127 byte; i nomi più lunghi vengono troncati a 127 byte. È possibile utilizzare UTF -8 caratteri multibyte fino a un massimo di quattro byte. Amazon Redshift applica una quota del numero di tabelle per cluster per tipo di nodo, comprese le tabelle temporanee definite dall'utente e le tabelle temporanee create da Amazon Redshift durante l'elaborazione delle query o la manutenzione del sistema. Facoltativamente, puoi qualificare il nome della tabella con il nome dello schema e del database. Nell'esempio seguente, il nome del database è tickit, il nome dello schema è public e il nome della tabella è test.

create table tickit.public.test (c1 int);

Se il database o lo schema non esiste, la tabella non viene creata e l'istruzione restituisce un errore. Non è possibile creare tabelle o viste nei database di sistema template0, template1, padb_harvest o sys:internal.

Se viene specificato un nome dello schema, la nuova tabella viene creata in quello schema (presupponendo che il creatore abbia accesso allo schema). Il nome della tabella deve essere un nome univoco per lo schema. Se non viene specificato alcuno schema, la tabella viene creata utilizzando lo schema del database corrente. Se stai creando una tabella temporanea, non puoi specificare un nome schema perché le tabelle temporanee esistono in uno schema speciale.

Più tabelle temporanee con lo stesso nome possono esistere contemporaneamente nello stesso database se vengono create in sessioni separate perché le tabelle sono assegnate a schemi diversi. Per ulteriori informazioni sui nomi validi, consultare Nomi e identificatori.

column_name

Nome di una colonna da creare nella nuova tabella. La lunghezza massima per il nome della colonna è 127 byte; i nomi più lunghi vengono troncati a 127 byte. È possibile utilizzare UTF -8 caratteri multibyte fino a un massimo di quattro byte. Il numero massimo di colonne che puoi definire in una singola tabella è 1.600. Per ulteriori informazioni sui nomi validi, consultare Nomi e identificatori.

Nota

Se stai creando una "tabella di grandi dimensioni", assicurati che il tuo elenco di colonne non superi i limiti della larghezza delle righe per i risultati intermedi durante i carichi e l'elaborazione delle query. Per ulteriori informazioni, consulta Note per l'utilizzo.

data_type

Tipo dei dati della colonna da creare. Per CHAR e VARCHAR colonne, è possibile utilizzare la MAX parola chiave anziché dichiarare una lunghezza massima. MAXimposta la lunghezza massima su 4.096 byte per CHAR o 65535 byte per. VARCHAR La dimensione massima di un oggetto è 1.048.447 byte. GEOMETRY

Per informazioni sui tipi di dati supportati da Amazon Redshift, consultare Tipi di dati.

DEFAULTdefault_expr

Clausola che assegna un valore di dati predefinito per la colonna. Il tipo di dati di default_expr deve corrispondere al tipo di dati della colonna. Il DEFAULT valore deve essere un'espressione priva di variabili. Le sottoquery, i riferimenti incrociati ad altre colonne della tabella corrente e le funzioni definite dall'utente non sono consentiti.

L'espressione default_expr viene utilizzata in qualsiasi INSERT operazione che non specifica un valore per la colonna. Se non viene specificato alcun valore predefinito, il valore predefinito per la colonna è null.

Se un'COPYoperazione con un elenco di colonne definito omette una colonna con un valore, il COPY comando inserisce il DEFAULT valore di default_expr.

IDENTITY(seme, passo)

Clausola che specifica che la colonna è una IDENTITY colonna. Una IDENTITY colonna contiene valori univoci generati automaticamente. Il tipo di dati per una IDENTITY colonna deve essere o. INT BIGINT

Quando aggiungi righe utilizzando un'istruzione INSERT o INSERT INTO [tablename] VALUES(), questi valori iniziano con il valore specificato come seed e si incrementano del numero specificato come step.

Quando carichi la tabella utilizzando un'istruzione INSERT INTO [tablename] SELECT * FROM o COPY, i dati vengono caricati in parallelo e distribuiti alle sezioni del nodo. Per essere certi che i valori di identità siano univoci, Amazon Redshift salta un numero di valori al momento della creazione dei valori di identità. I valori di identità sono univoci, ma l'ordine potrebbe non corrispondere a quello nel file sorgente.

GENERATEDBY DEFAULT AS IDENTITY (seed, step)

Clausola che specifica che la colonna è una IDENTITY colonna predefinita e consente di assegnare automaticamente un valore univoco alla colonna. Il tipo di dati per una IDENTITY colonna deve essere o. INT BIGINT Quando aggiungi righe senza valori, questi valori iniziano con il valore specificato come seed e si incrementano del numero specificato come step. Per informazioni su come i valori vengono generati, consulta IDENTITY.

Inoltre, durante INSERTUPDATE, oppure COPY puoi fornire un valore senza EXPLICIT _IDS. Amazon Redshift utilizza tale valore per inserirlo nella colonna di identità invece di utilizzare il valore generato dal sistema. Il valore può essere un duplicato, un valore minore del seed o un valore compreso tra valori di step. Amazon Redshift non controlla l'univocità dei valori nella colonna. A condizione che il valore non influenzi il prossimo valore generato dal sistema.

Nota

Se è richiesta l'univocità nella colonna, non aggiungere un valore duplicato. Aggiungere, invece, un valore univoco che è minore del seed o compreso tra valori di step.

Tenere presente quanto segue riguardo le colonne di identità predefinite:

  • Le colonne di identità predefinite sono NOTNULL. NULLnon possono essere inserite.

  • Per inserire un valore generato in una colonna di identità predefinita, utilizzare la parola chiave DEFAULT.

    INSERT INTO tablename (identity-column-name) VALUES (DEFAULT);
  • I valori di sostituzione di una colonna di identità predefinita non influenzano il successivo valore generato.

  • Non è possibile aggiungere una colonna di identità predefinita con l'ALTERTABLEADDCOLUMNistruzione.

  • È possibile aggiungere una colonna di identità predefinita all'ALTERTABLEAPPENDistruzione.

ENCODEcodifica

La codifica della compressione per una colonna. ENCODEAUTOè l'impostazione predefinita per le tabelle. Amazon Redshift gestisce automaticamente la codifica di compressione per tutte le colonne della tabella. Se si specifica la codifica di compressione per qualsiasi colonna della tabella, la tabella non è più impostata su. ENCODE AUTO Amazon Redshift non gestisce più automaticamente la codifica di compressione per tutte le colonne della tabella. Puoi specificare l'ENCODEAUTOopzione per la tabella per consentire ad Amazon Redshift di gestire automaticamente la codifica di compressione per tutte le colonne della tabella.

Amazon Redshift assegna automaticamente una codifica di compressione iniziale alle colonne per le quali la codifica di compressione non si specifica come segue:

  • Per impostazione predefinita, a tutte le colonne delle tabelle temporanee viene assegnata RAW la compressione.

  • Alle colonne definite come chiavi di ordinamento viene assegnata RAW la compressione.

  • Alle colonne definite comeBOOLEAN,REAL, DOUBLE PRECISIONGEOMETRY, o tipo di GEOGRAPHY dati viene assegnata RAW la compressione.

  • Le colonne definite comeSMALLINT,,,INTEGER,BIGINT,DECIMAL,DATE, TIME TIMETZTIMESTAMP, o a TIMESTAMPTZ cui è assegnata AZ64 la compressione.

  • Colonne definite come o CHAR VARBYTE a VARCHAR cui è assegnata LZO la compressione.

Nota

Se non vuoi che una colonna venga compressa, specifica RAW esplicitamente la codifica.

Sono supportate le seguenti compression encodings:

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW(nessuna compressione)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

DISTKEY

Parola chiave che specifica che la colonna è la chiave di distribuzione per la tabella. Solo una colonna in una tabella può essere la chiave di distribuzione. È possibile utilizzare la DISTKEY parola chiave dopo il nome di una colonna o come parte della definizione della tabella utilizzando la sintassi DISTKEY (column_name). Entrambi i metodi hanno lo stesso effetto. Per ulteriori informazioni, consultate il DISTSTYLE parametro più avanti in questo argomento.

Il tipo di dati di una colonna chiave di distribuzione può essere: BOOLEAN REAL DOUBLE PRECISIONSMALLINT,INTEGER,BIGINT,DECIMAL,DATE,TIME,TIMETZ,TIMESTAMP, oTIMESTAMPTZ,CHAR, oVARCHAR.

SORTKEY

Parola chiave che specifica che la colonna è la chiave di ordinamento per la tabella. Quando vengono caricati nella tabella, i dati vengono ordinati in base a una o più colonne designate come chiavi di ordinamento. È possibile utilizzare la SORTKEY parola chiave dopo il nome di una colonna per specificare una chiave di ordinamento a colonna singola oppure specificare una o più colonne come colonne chiave di ordinamento per la tabella utilizzando la sintassi SORTKEY (column_name [,...]). Solo le chiavi di ordinamento composte vengono create con questa sintassi.

È possibile definire un massimo di 400 colonne per tabella. SORTKEY

Il tipo di dati di una colonna chiave di ordinamento può essere: BOOLEAN REAL DOUBLE PRECISIONSMALLINT,INTEGER,BIGINT,DECIMAL,DATE,TIME,TIMETZ,TIMESTAMP,TIMESTAMPTZ, oCHAR, oVARCHAR.

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Una clausola che specifica se la ricerca o il confronto di stringhe nella colonna è CASE _ SENSITIVE o CASE _. INSENSITIVE Il valore di default corrisponde alla stessa configurazione corrente della distinzione tra maiuscole e minuscole del database.

Per informazioni sul confronto di database, utilizzare il comando seguente:

SELECT db_collation(); db_collation ---------------- case_sensitive (1 row)
NOT NULL | NULL

NOTNULLspecifica che la colonna non può contenere valori nulli. NULL, impostazione predefinita, specifica che la colonna accetta valori nulli. IDENTITYle colonne sono dichiarate NOT NULL per impostazione predefinita.

UNIQUE

Parola chiave che specifica che la colonna può contenere solo valori univoci. Il comportamento del vincolo di tabella univoco è uguale a quello dei vincoli di colonna, con la possibilità di estendersi su più colonne. Per definire un vincolo di tabella univoco, utilizzate la sintassi UNIQUE (column_name [,...]).

Importante

I vincoli univoci sono informativi e non vengono applicati dal sistema.

PRIMARY KEY

Parola chiave che specifica che la colonna è la chiave primaria per la tabella. È possibile definire solo una colonna come chiave primaria utilizzando una definizione di colonna. Per definire un vincolo di tabella con una chiave primaria a più colonne, utilizzate la sintassi (column_name [,...]). PRIMARY KEY

L'identificazione di una colonna come chiave primaria fornisce i metadati relativi alla progettazione dello schema. Una chiave primaria implica che altre tabelle possono fare affidamento su questo set di colonne come identificatore univoco per le righe. È possibile specificare una chiave primaria per una tabella, sia come vincolo di colonna sia come vincolo di tabella. Il vincolo di chiave primaria deve nominare un set di colonne diverso da altri set di colonne nominati da qualsiasi vincolo univoco definito per la stessa tabella.

PRIMARYKEYle colonne sono anche definite come. NOT NULL

Importante

I vincoli della chiave primaria sono solo informativi. Non vengono applicati dal sistema, ma vengono utilizzati dal pianificatore.

References reftable [ ( refcolumn ) ]

Clausola che specifica un vincolo di chiave esterna che implica che la colonna deve contenere solo valori che corrispondono ai valori nella colonna di riferimento di alcune righe della tabella di riferimento. Le colonne di riferimento devono essere le colonne di un vincolo di chiave primaria o univoco nella tabella di riferimento.

Importante

I vincoli della chiave esterna sono solo informativi. Non vengono applicati dal sistema, ma vengono utilizzati dal pianificatore.

LIKEtabella_genitore [{INCLUDING|EXCLUDING}] DEFAULTS

Una clausola che specifica una tabella esistente da cui la nuova tabella copia automaticamente i nomi delle colonne, i tipi di dati e i vincoli. NOT NULL La nuova tabella e la tabella padre vengono disassociate e tutte le modifiche apportate alla tabella padre non vengono applicate alla nuova tabella. Le espressioni predefinite per le definizioni delle colonne copiate vengono copiate solo se specificato. INCLUDING DEFAULTS Il comportamento predefinito consiste nell'escludere le espressioni predefinite, in modo che tutte le colonne della nuova tabella abbiano valori predefiniti null.

Le tabelle create con l'LIKEopzione non ereditano i vincoli di chiave primaria ed esterna. Lo stile di distribuzioneBACKUP, le chiavi di ordinamento e NULL le proprietà vengono ereditati dalle LIKE tabelle, ma non è possibile impostarli esplicitamente nel... CREATE TABLE LIKEdichiarazione.

BACKUP{YES| NO}

Clausola che specifica se la tabella deve essere inclusa negli snapshot di cluster automatizzati e manuali.

Per le tabelle, come le tabelle intermedie, che non contengono dati critici, specifica BACKUP NO per risparmiare tempo di elaborazione durante la creazione di istantanee e il ripristino da istantanee e per ridurre lo spazio di archiviazione su Amazon Simple Storage Service. L'impostazione BACKUP NO non ha alcun effetto sulla replica automatica dei dati su altri nodi all'interno del cluster, quindi le tabelle con BACKUP NO specificato vengono ripristinate in caso di errore del nodo. L'impostazione predefinita è BACKUPYES.

DISTSTYLE { AUTO | EVEN | KEY | ALL }

Parola chiave che definisce lo stile di distribuzione dei dati per l'intera tabella. Amazon Redshift distribuisce le righe di una tabella nei nodi di calcolo a seconda dello stile di distribuzione specificato per la tabella. L'impostazione predefinita èAUTO.

Lo stile di distribuzione selezionato per le tabelle influisce sulle prestazioni generali del database. Per ulteriori informazioni, consulta Utilizzo degli stili di distribuzione dati. Gli stili di distribuzione possibili sono i seguenti:

  • AUTO: Amazon Redshift assegna uno stile di distribuzione ottimale basato sui dati della tabella. Ad esempio, se viene specificato uno stile di AUTO distribuzione, Amazon Redshift assegna inizialmente lo stile di ALL distribuzione a una piccola tabella. Quando la tabella diventa più grande, Amazon Redshift potrebbe cambiare lo stile di distribuzione inKEY, scegliendo la chiave primaria (o una colonna della chiave primaria composita) come. DISTKEY Se la tabella diventa più grande e nessuna delle colonne è adatta a essere laDISTKEY, Amazon Redshift modifica lo stile di distribuzione in. EVEN La modifica dello stile di distribuzione avviene in background con un impatto minimo sulle query degli utenti.

    Per visualizzare lo stile di distribuzione applicato a una tabella, esegui una query nella tabella del catalogo del CLASS sistema PG_. Per ulteriori informazioni, consulta Visualizzazione degli stili di distribuzione.

  • EVEN: I dati nella tabella sono distribuiti uniformemente tra i nodi di un cluster in una distribuzione round-robin. IDsLe righe vengono utilizzate per determinare la distribuzione e su ogni nodo viene distribuito all'incirca lo stesso numero di righe.

  • KEY: i dati vengono distribuiti in base ai valori nella DISTKEY colonna. Quando imposti le colonne di unione delle tabelle di unione come chiavi di distribuzione, le righe di unione di entrambe le tabelle sono collocate nei nodi di calcolo. Quando i dati sono collocati, l'ottimizzatore può eseguire i join in modo più efficiente. Se si specifica DISTSTYLEKEY, è necessario assegnare un nome a una DISTKEY colonna, per la tabella o come parte della definizione della colonna. Per ulteriori informazioni, consultate il DISTKEY parametro riportato all'inizio di questo argomento.

  • ALL: Una copia dell'intera tabella viene distribuita su ogni nodo. Questo stile di distribuzione garantisce che tutte le righe richieste per ogni join siano disponibili su ogni nodo, ma moltiplica i requisiti di storage e aumenta i tempi di caricamento e manutenzione per la tabella. ALLla distribuzione può migliorare i tempi di esecuzione se utilizzata con determinate tabelle di dimensioni in cui KEY la distribuzione non è appropriata, ma i miglioramenti delle prestazioni devono essere valutati rispetto ai costi di manutenzione.

DISTKEY(nome_colonna)

Vincolo che specifica che la colonna da usare come chiave di distribuzione per la tabella. È possibile utilizzare la DISTKEY parola chiave dopo il nome di una colonna o come parte della definizione della tabella, utilizzando la sintassi DISTKEY (column_name). Entrambi i metodi hanno lo stesso effetto. Per ulteriori informazioni, consultate il DISTSTYLE parametro riportato più avanti in questo argomento.

[COMPOUND|INTERLEAVED] SORTKEY (nome_colonna [,...]) | [] SORTKEY AUTO

Specifica una o più chiavi di ordinamento per la tabella. Quando vengono caricati nella tabella, i dati vengono ordinati in base alle colonne designate come chiavi di ordinamento. È possibile utilizzare la SORTKEY parola chiave dopo il nome di una colonna per specificare una chiave di ordinamento a colonna singola oppure specificare una o più colonne come colonne chiave di ordinamento per la tabella utilizzando la sintassi. SORTKEY (column_name [ , ... ] )

Facoltativamente, è possibile specificare COMPOUND o INTERLEAVED ordinare lo stile. Se si specifica SORTKEY con colonne, l'impostazione predefinita èCOMPOUND. Per ulteriori informazioni, consulta Utilizzo delle chiavi di ordinamento.

Se non specificate alcuna opzione relativa alle chiavi di ordinamento, l'impostazione predefinita èAUTO.

È possibile definire un massimo di 400 COMPOUND SORTKEY colonne o 8 INTERLEAVED SORTKEY colonne per tabella.

AUTO

Specifica che Amazon Redshift assegna una chiave di ordinamento ottimale basata sui dati della tabella. Ad esempio, se viene specificata AUTO una chiave di ordinamento, Amazon Redshift inizialmente non assegna alcuna chiave di ordinamento a una tabella. Se Amazon Redshift determina che una chiave di ordinamento migliorerà le prestazioni delle query, Amazon Redshift potrebbe modificare la chiave di ordinamento della tabella. L'ordinamento effettivo della tabella viene eseguito dall'ordinamento automatico della tabella. Per ulteriori informazioni, consulta Ordinamento automatico delle tabelle.

Amazon Redshift non modifica le tabelle con chiavi di ordinamento o di distribuzione esistenti. Con un'eccezione, se una tabella ha una chiave di distribuzione che non è mai stata utilizzata in aJOIN, la chiave potrebbe essere modificata se Amazon Redshift determina che esiste una chiave migliore.

Per visualizzare la chiave di ordinamento di una tabella, interroga la vista del catalogo di INFO sistema SVV TABLE _ _. Per ulteriori informazioni, consulta SVV_TABLE_INFO. Per visualizzare i consigli di Amazon Redshift Advisor per le tabelle, esegui una query nella vista del catalogo di RECOMMENDATIONS sistema SVV ALTER TABLE _ _ _. Per ulteriori informazioni, consulta SVV_ALTER_TABLE_RECOMMENDATIONS. Per visualizzare le azioni intraprese da Amazon Redshift, esegui una query nella vista del catalogo di ACTION sistema SVL AUTO WORKER _ _ _. Per ulteriori informazioni, consulta SVL_AUTO_WORKER_ACTION.

COMPOUND

Specifica che i dati sono ordinati utilizzando una chiave composta costituita da tutte le colonne elencate, nell'ordine in cui sono elencate. Una chiave di ordinamento composta è più utile quando una query esegue la scansione delle righe in base all'ordine delle colonne di ordinamento. I vantaggi in termini di prestazioni dell'ordinamento con una chiave composta diminuiscono quando le query si basano su colonne di ordinamento secondarie. Puoi definire un massimo di 400 COMPOUND SORTKEY colonne per tabella.

INTERLEAVED

Specifica che i dati sono ordinati utilizzando una chiave di ordinamento "interlacciato". È possibile specificare un massimo di otto colonne per una chiave di ordinamento "interlacciato".

L'ordinamento "interlacciato" fornisce uguale peso a ciascuna colonna, o sottoinsieme di colonne, nella chiave di ordinamento, quindi le query non dipendono dall'ordine delle colonne nella chiave di ordinamento. Quando una query utilizza una o più colonne di ordinamento secondarie, l'ordinamento "interlacciato" migliora in modo significativo le prestazioni delle query. L'ordinamento "interlacciato" comporta un piccolo costo generale per il caricamento dei dati e le operazioni di vacuum.

Importante

Non utilizzare una chiave di ordinamento "interlacciato" su colonne con attributi monotonicamente crescenti, come colonne di identità, date o timestamp.

ENCODE AUTO

Consente ad Amazon Redshift di regolare automaticamente il tipo di codifica per tutte le colonne della tabella per ottimizzare le prestazioni delle query. ENCODEAUTOconserva i tipi di codifica iniziali specificati durante la creazione della tabella. Quindi, se Amazon Redshift determina che un nuovo tipo di codifica può migliorare le prestazioni delle query, Amazon Redshift può modificare il tipo di codifica delle colonne della tabella. ENCODEAUTOè l'impostazione predefinita se non si specifica un tipo di codifica su nessuna colonna della tabella.

UNIQUE(nome_colonna [,...])

Vincolo che specifica che un gruppo di una o più colonne di una tabella può contenere solo valori univoci. Il comportamento del vincolo di tabella univoco è uguale a quello dei vincoli di colonna, con la possibilità di estendersi su più colonne. Nel contesto dei vincoli univoci, i valori null non sono considerati uguali. Ogni vincolo di tabella univoco deve denominare un insieme di colonne diverso dal set di colonne denominato da qualsiasi altro vincolo di chiave univoco o primario definito per la tabella.

Importante

I vincoli univoci sono informativi e non vengono applicati dal sistema.

PRIMARYKEY(nome_colonna [,...])

Vincolo che specifica che una colonna o un numero di colonne di una tabella può contenere solo valori non null univoci (non duplicati). L'identificazione di un set di colonne come chiave primaria fornisce anche i metadati relativi alla progettazione dello schema. Una chiave primaria implica che altre tabelle possono fare affidamento su questo set di colonne come identificatore univoco per le righe. È possibile specificare una chiave primaria per una tabella, sia come vincolo di una singola colonna sia come vincolo di tabella. Il vincolo di chiave primaria deve nominare un set di colonne diverso da altri set di colonne nominati da qualsiasi vincolo univoco definito per la stessa tabella.

Importante

I vincoli della chiave primaria sono solo informativi. Non vengono applicati dal sistema, ma vengono utilizzati dal pianificatore.

FOREIGNKEY(nome_colonna [,...]) reftable [(refcolumn)REFERENCES]

Vincolo che specifica un vincolo di chiave esterna, che richiede che un gruppo di una o più colonne della nuova tabella contenga solo valori che corrispondono a quelli nelle colonne di riferimento di alcune righe della tabella di riferimento. Se refcolumn viene omesso, viene usata la chiave primaria di reftable. Le colonne di riferimento devono essere le colonne di un vincolo di chiave primaria o univoco nella tabella di riferimento.

Importante

I vincoli della chiave esterna sono solo informativi. Non vengono applicati dal sistema, ma vengono utilizzati dal pianificatore.

Note per l'utilizzo

In modo univoco, le limitazioni della chiave esterna e della chiave primaria sono solo a livello informativo e non vengono applicate da Amazon Redshift quando si popola una tabella. Ad esempio, se si inseriscono dati in una tabella con dipendenze, l'inserimento può avere esito positivo anche se viola il vincolo. Tuttavia, le chiavi primarie e le chiavi esterne vengono utilizzate come suggerimenti di pianificazione e devono essere dichiarate se il ETL processo o qualche altro processo dell'applicazione ne garantisce l'integrità. Per informazioni su come eliminare una tabella con dipendenze, consultare DROP TABLE.

Limiti e quote

Quando crei una tabella, considera i seguenti limiti.

  • Esiste un limite per il numero massimo di tabelle in un cluster per tipo di nodo. Per ulteriori informazioni, consulta Limiti nella Guida alla gestione di Amazon Redshift.

  • Il numero massimo di caratteri per un nome di tabella è 127.

  • Il numero massimo di colonne che puoi definire in una singola tabella è 1.600.

  • Il numero massimo di SORTKEY colonne che è possibile definire in una singola tabella è 400.

Riepilogo delle impostazioni a livello di colonna e delle impostazioni a livello di tabella

Diversi attributi e impostazioni possono essere impostati a livello di colonna o a livello di tabella. In alcuni casi, l'impostazione di un attributo o vincolo a livello di colonna o a livello di tabella ha lo stesso effetto. In altri casi, producono risultati diversi.

Il seguente elenco riepiloga le impostazioni a livello di colonna e a livello di tabella:

DISTKEY

Non vi è alcuna differenza in termini di effetti se impostati a livello di colonna o a livello di tabella.

Se DISTKEY è impostato, a livello di colonna o a livello di tabella, DISTSTYLE deve essere impostato su KEY o non impostato affatto. DISTSTYLEpuò essere impostato solo a livello di tabella.

SORTKEY

Se impostato a livello di colonna, SORTKEY deve essere una singola colonna. Se SORTKEY è impostata a livello di tabella, una o più colonne possono costituire una chiave di ordinamento composita composta o interlacciata.

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Amazon Redshift non supporta la modifica della configurazione della distinzione tra maiuscole e minuscole per una colonna. Quando si aggiunge una nuova colonna alla tabella, Amazon Redshift utilizza il valore predefinito per la distinzione tra maiuscole e minuscole. Amazon Redshift non supporta la parola COLLATE chiave quando si aggiunge una nuova colonna.

Per informazioni su come creare i database mediante il confronto di database, consultare CREATE DATABASE.

Per informazioni sulla COLLATE funzione, consulta. COLLATEfunzione

UNIQUE

A livello di colonna, è possibile impostare una o più chiavi suUNIQUE; il UNIQUE vincolo si applica a ciascuna colonna singolarmente. Se UNIQUE è impostato a livello di tabella, una o più colonne possono costituire un vincolo compositoUNIQUE.

PRIMARY KEY

Se impostato a livello di colonna, PRIMARY KEY deve essere una singola colonna. Se PRIMARY KEY è impostato a livello di tabella, una o più colonne possono costituire una chiave primaria composita.

FOREIGN KEY

Non vi è alcuna differenza in effetti se FOREIGN KEY è impostato a livello di colonna o a livello di tabella. A livello di colonna, la sintassi è semplicemente REFERENCES reftable [ ( refcolumn )].

Distribuzione dei dati in arrivo

Quando lo schema di distribuzione dell'hash dei dati in arrivo corrisponde a quello della tabella di destinazione, non è necessaria alcuna distribuzione fisica dei dati quando i dati vengono caricati. Ad esempio, se una chiave di distribuzione è impostata per la nuova tabella e i dati vengono inseriti da un'altra tabella che viene distribuita sulla stessa colonna chiave, i dati vengono caricati in posizione, utilizzando gli stessi nodi e sezioni. Tuttavia, se la tabella di origine e quella di destinazione sono entrambe impostate sulla EVEN distribuzione, i dati vengono ridistribuiti nella tabella di destinazione.

Tabelle estese

Potresti essere in grado di creare una tabella molto ampia ma non essere in grado di eseguire l'elaborazione delle query, ad esempio SELECT le istruzioni INSERT or, sulla tabella. La larghezza massima di una tabella con colonne a larghezza fissa, ad esempioCHAR, è 64 KB - 1 (o 65535 byte). Se una tabella include VARCHAR colonne, la tabella può avere una larghezza dichiarata maggiore senza restituire un errore, poiché VARCHARS le colonne non contribuiscono con l'intera larghezza dichiarata al limite calcolato di elaborazione delle query. Il limite effettivo di elaborazione delle query con VARCHAR colonne varierà in base a una serie di fattori.

Se una tabella è troppo ampia per l'inserimento o la selezione, ricevi il seguente errore.

ERROR: 8001 DETAIL: The combined length of columns processed in the SQL statement exceeded the query-processing limit of 65535 characters (pid:7627)

Esempi

Per esempi che mostrano come utilizzare il CREATE TABLE comando, consultate l'Esempiargomento.