SQLite Crea, modifica, elimina tabella con esempi

โšก Riepilogo intelligente

SQLite La gestione delle tabelle si basa su tre comandi di definizione dei dati: CREATE TABLE per definire una tabella, ALTER TABLE per rinominarla o aggiungere e modificare colonne e DROP TABLE per rimuoverla completamente dal database.

  • ๐Ÿ“ Crea tabelle: L'istruzione CREATE TABLE definisce il nome di una tabella e le sue colonne, e ogni colonna necessita di un nome e di un tipo di dati.
  • ๐Ÿ›ก๏ธ Evitare errori: L'aggiunta di IF NOT EXISTS a CREATE TABLE, o di IF EXISTS a DROP TABLE, previene errori quando una tabella esiste giร  o non รจ presente.
  • ๏ธ Altare i tavoli: ALTER TABLE rinomina una tabella, aggiunge una colonna e in moderno SQLite Rinomina o elimina una singola colonna.
  • ๐Ÿ—‘๏ธ Tabelle a discesa: Il comando DROP TABLE rimuove definitivamente una tabella, insieme a tutte le righe e gli indici ad essa associati.
  • ๐Ÿ“‘ Copia tabelle: L'istruzione CREATE TABLE AS SELECT crea una nuova tabella a partire dalle colonne e dalle righe restituite da una query.
  • ๐Ÿค– Assistenza AI: Gli assistenti di intelligenza artificiale per la conversione da testo a SQL e GitHub Copilot generano istruzioni CREATE, ALTER e DROP a partire da semplici input in linguaggio naturale.

SQLite Crea tabella di modifica

Le sezioni seguenti mostrano come creare tabelle, modificarne la struttura e trascinare le tabelle in SQLite3 con esempi, che illustrano i comandi CREATE TABLE, ALTER TABLE e DROP TABLE.

SQLite Crea una tabella

Sintassi

Di seguito รจ riportata la sintassi dell'istruzione CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Per creare una tabella, รจ necessario utilizzare la query "CREATE TABLE" come segue:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

All'interno delle due parentesi dopo il nome della tabella, si definiscono le colonne della tabella; ogni colonna deve avere le seguenti proprietร :

  • Un nome, il nome della colonna dovrebbe essere univoco tra le colonne della tabella.
  • Un tipo di dati โ€“ il tipo di dati della colonna.
  • Vincoli opzionali per le colonne, come spiegheremo nelle sezioni successive di questo tutorial.

SQLite CREA LA TABELLA SE NON ESISTE

Quando uno script viene eseguito piรน di una volta, una semplice istruzione CREATE TABLE fallisce se la tabella esiste giร  e si interrompe con un errore. SQLite Questo problema viene risolto con la clausola opzionale IF NOT EXISTS, che crea la tabella solo se mancante e non fa nulla se รจ giร  presente.

CREATE TABLE IF NOT EXISTS guru99 (
  Id Int,
  Name Varchar
);

L'istruzione di cui sopra non genera mai l'errore "la tabella esiste giร ", il che la rende sicura da mantenere all'inizio di uno script di configurazione o di migrazione.

Lo stesso principio funziona anche al contrario quando si elimina una tabella. Aggiungendo IF EXISTS a DROP TABLE si evita un errore quando la tabella รจ giร  stata eliminata:

DROP TABLE IF EXISTS guru99;

Entrambe le clausole sono comuni negli script automatizzati, perchรฉ consentono l'esecuzione ripetuta dello stesso file senza necessitร  di pulizia manuale tra un'esecuzione e l'altra.

tavola a caduta

Per eliminare una tabella, utilizzare il comando "DROP TABLE" seguito dal nome della tabella, come segue:

DROP TABLE guru99;

Modifica tabella

รˆ possibile utilizzare il comando "ALTER TABLE" per rinominare una tabella nel modo seguente:

ALTER TABLE guru99 RENAME TO guru100;

Per verificare che il nome della tabella sia stato modificato, รจ possibile utilizzare il comando ".tables" per visualizzare l'elenco delle tabelle; il nome della tabella dovrebbe ora essere modificato come segue:

SQLite Output del comando .tables che mostra la tabella rinominata da guru99 a guru100

Come puoi vedere, il nome della tabella "guru99" viene modificato in "guru100" dopo il comando "alter table".

SQLite aggiungi colonne: utilizzando il comando ALTER TABLE

รˆ possibile utilizzare anche il comando "ALTER TABLE" per aggiungere colonne:

ALTER TABLE guru100 ADD COLUMN Age INT;

Questo modificherร  la tabella "guru100" e aggiungerร  una nuova colonna denominata Etร .

Se non viene visualizzato alcun output, significa che l'istruzione รจ stata eseguita correttamente e la colonna รจ stata aggiunta. Nessun output significa che il cursore verrร  posizionato dopo "sqlite>" senza alcun testo successivo, in questo modo:

SQLite riga di comando che non mostra alcun output dopo un ALTER TABLE ADD COLUMN riuscito

Tuttavia, per verificare che la colonna sia stata aggiunta, possiamo usare il comando ".schema guru100". Questo ti mostrerร  la definizione della tabella e dovresti vedere la nuova colonna che abbiamo appena aggiunto:

SQLite Output dello schema guru100 che mostra la nuova colonna Etร  aggiunta alla tabella

SQLite ALTER TABLE: Rinominare ed eliminare una colonna

Oltre ad aggiungere una colonna, le versioni moderne di SQLite รจ anche possibile rinominare una singola colonna e rimuoverne una. La ridenominazione di una colonna รจ disponibile da SQLite 3.25, e aggiorna il nome all'interno della definizione della tabella, nonchรฉ in ogni indice, trigger e vista che fa riferimento alla colonna.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Per rimuovere una colonna, SQLite 3.35 e versioni successive supportano una clausola DROP COLUMN diretta:

ALTER TABLE guru100 DROP COLUMN Age;

Una colonna non puรฒ essere eliminata quando fa parte di una chiave primaria, di un vincolo di unicitร  o di un indice. Su versioni precedenti SQLite Nelle versioni prive dell'opzione DROP COLUMN, la soluzione classica consiste nel creare una nuova tabella con le colonne desiderate, copiare le righe, eliminare la vecchia tabella e infine rinominare quella nuova.

Come copiare una tabella in SQLite Utilizzo di CREATE TABLE AS SELECT

A volte รจ necessario avere una copia di una tabella, sia come backup prima di una modifica rischiosa, sia come punto di partenza per una nuova tabella. SQLite Questo viene creato in un unico passaggio con CREATE TABLE AS SELECT, che crea una nuova tabella le cui colonne provengono da una query e la popola con le righe restituite da tale query.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

La nuova tabella "guru100_backup" riceve le stesse colonne e tutte le righe da "guru100". Per copiare solo alcune righe, aggiungi una clausola WHERE alla SELECT:

CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;

Un aspetto importante da ricordare รจ che CREATE TABLE AS SELECT copia i nomi delle colonne, i tipi e i dati, ma non le chiavi primarie, gli altri vincoli o gli indici. รˆ necessario aggiungerli manualmente alla nuova tabella se la copia deve rispettare le stesse regole dell'originale.

SQLite Inserisci un valore in una tabella

Per inserire valori in una tabella, utilizziamo l'istruzione "INSERT INTO" come segue:

INSERT INTO Tablename(colname1, colname2, โ€ฆ.) VALUES(valu1, value2, โ€ฆ.);

Puoi omettere i nomi delle colonne dopo il nome della tabella e scriverli come segue:

INSERT INTO Tablename VALUES(value1, value2, โ€ฆ.);

In tal caso, quando si omettono i nomi delle colonne dalle tabelle, il numero di valori inseriti deve essere esattamente lo stesso numero di colonne della tabella. Quindi ogni valore verrร  inserito nella colonna corrispondente. Ad esempio, per la seguente istruzione insert:

INSERT INTO guru100 VALUES(1, 'Mike', 25);

Il risultato di questa affermazione sarร  il seguente:

SQLite Istruzione INSERT INTO che aggiunge una riga di valori alla tabella guru100

  • Il valore 1 verrร  inserito nella colonna "id".
  • Il valore 'Mike' verrร  inserito nella colonna "Nome" e
  • Il valore 25 verrร  inserito nella colonna โ€œEtร โ€.

Istruzione INSERT... DEFAULT VALUES

รˆ possibile popolare la tabella con i valori predefiniti per le colonne contemporaneamente come segue:

INSERT INTO Tablename DEFAULT VALUES;

Se una colonna non consente nรฉ un valore nullo nรฉ un valore predefinito, verrร  visualizzato un errore del tipo "Condizione NOT NULL non rispettata" per quella colonna. Come mostrato di seguito:

SQLite Errore di violazione del vincolo NOT NULL durante l'inserimento dei valori predefiniti.

DOMANDE FREQUENTI

No. SQLite Non esiste un comando TRUNCATE TABLE. Per svuotare una tabella, eseguire DELETE FROM nome_tabella senza una clausola WHERE, quindi utilizzare VACUUM per recuperare lo spazio su disco liberato. La struttura della tabella e le relative colonne rimangono invariate.

DELETE elimina le righe da una tabella, ma mantiene la tabella, le sue colonne e la sua struttura pronte per nuovi dati. DROP TABLE elimina l'intera tabella, inclusi la sua definizione, gli indici e i trigger, quindi la tabella non esiste piรน nel database.

Al SQLite Da riga di comando, il comando .tables visualizza il nome di tutte le tabelle. Da SQL, รจ possibile interrogare la tabella dello schema predefinita con SELECT name FROM sqlite_master WHERE type = 'table'; che funziona anche da qualsiasi applicazione connessa al database.

Una tabella temporanea viene creata con CREATE TEMP TABLE o CREATE TEMPORARY TABLE. รˆ visibile solo alla connessione al database che l'ha creata e viene eliminata automaticamente alla chiusura di tale connessione, il che la rende utile per memorizzare i risultati intermedi delle query.

Sรฌ. Una chiave primaria รจ facoltativa in SQLite. Quando ne ometti uno, SQLite Mantiene comunque un rowid nascosto a 64 bit che identifica ogni riga. I vincoli di colonna come PRIMARY KEY, UNIQUE e NOT NULL sono tutti opzionali quando si definisce una tabella.

Di default no. SQLite utilizza tipi dinamiciping con affinitร  di tipo, quindi una colonna accetta valori di quasi tutti i tipi indipendentemente dal tipo dichiarato. Per imporre un controllo rigoroso, creare la tabella come tabella STRICT, aggiunta in SQLite 3.37

Sรฌ. Gli assistenti di intelligenza artificiale per la conversione da testo a SQL trasformano una descrizione in linguaggio naturale dei dati in istruzioni CREATE TABLE con colonne, tipi di dati e chiavi. La precisione migliora quando si fornisce al modello lo schema esistente, poichรฉ in tal caso riutilizza i nomi reali di tabelle e colonne.

Sรฌ. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub suggerisce ALTER TABLE, DROP TABLE e altri SQLite dichiarazioni in linea in editor come VS CodeLegge i file di migrazione e le query esistenti, in modo che i suggerimenti di completamento corrispondano ai nomi reali di tabelle e colonne.

Riassumi questo post con: