Riepilogo :in questo tutorial imparerai come creare nuove tabelle usando SQLite CREATE TABLE
dichiarazione utilizzando varie opzioni.
Introduzione a SQLite CREATE TABLE
dichiarazione
Per creare una nuova tabella in SQLite, usa CREATE TABLE
istruzione utilizzando la seguente sintassi:
CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
column_1 data_type PRIMARY KEY,
column_2 data_type NOT NULL,
column_3 data_type DEFAULT 0,
table_constraints
) [WITHOUT ROWID];
Code language: SQL (Structured Query Language) (sql)
In questa sintassi:
- In primo luogo, specifica il nome della tabella che desideri creare dopo il
CREATE TABLE
parole chiave. Il nome della tabella non può iniziare consqlite_
perché è riservato all'uso interno di SQLite. - In secondo luogo, usa
IF NOT EXISTS
opzione per creare una nuova tabella se non esiste. Tentativo di creare una tabella che esiste già senza utilizzareIF NOT EXISTS
opzione risulterà in un errore. - Terzo, specifica facoltativamente il
schema_name
a cui appartiene la nuova tabella. Lo schema può essere il database principale,temp
database o qualsiasi database allegato. - Quarto, specifica l'elenco delle colonne della tabella. Ogni colonna ha un nome, un tipo di dati e il vincolo di colonna. SQLite supporta
PRIMARY KEY
,UNIQUE
,NOT NULL
eCHECK
vincoli di colonna. - Quinto, specifica i vincoli della tabella come
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
eCHECK
vincoli. - Infine, utilizza facoltativamente il
WITHOUT ROWID
opzione. Per impostazione predefinita, una riga in una tabella ha una colonna implicita, denominatarowid
,oid
o_rowid_
colonna. Ilrowid
colonna memorizza una chiave intera con segno a 64 bit che identifica in modo univoco la riga all'interno della tabella. Se non vuoi SQLite crea ilrowid
colonna, specifichi ilWITHOUT ROWID
opzione. Una tabella che contiene ilrowid
è nota comerowid
tavolo. Nota che ilWITHOUT ROWID
l'opzione è disponibile solo in SQLite 3.8.2 o versioni successive.
Tieni presente che la chiave primaria di una tabella è una colonna o un gruppo di colonne che identificano in modo univoco ogni riga della tabella.
SQLite CREATE TABLE
esempi
Supponiamo di dover gestire i contatti utilizzando SQLite.
Ogni contatto ha le seguenti informazioni:
- Nome
- Cognome
- Telefono
Il requisito è che l'e-mail e il telefono debbano essere univoci. Inoltre, ogni contatto appartiene a uno o più gruppi e ogni gruppo può avere zero o più contatti.
Sulla base di questi requisiti, abbiamo creato tre tabelle:
- I
contacts
tabella che memorizza le informazioni di contatto. - I
groups
tabella che memorizza le informazioni sul gruppo. - I
contact_groups
tabella che memorizza la relazione tra contatti e gruppi.
Il seguente diagramma del database illustra le tabelle:contacts
groups
e contact_groups.
La seguente istruzione crea i contacts
tabella.
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Provalo
Il contact_id
è la chiave primaria dei contacts
tabella.
Poiché la chiave primaria è costituita da una colonna, puoi utilizzare il vincolo di colonna.
Il first_name
e last_name
le colonne hanno TEXT
classe di archiviazione e queste colonne sono NOT NULL
. Significa che devi fornire valori quando inserisci o aggiorni righe nei contacts
tabella.
L'e-mail e il telefono sono univoci quindi utilizziamo il UNIQUE
vincolo per ogni colonna.
La seguente istruzione crea i groups
tabella:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Provalo
I groups
table è abbastanza semplice con due colonne:group_id
e first_name
. Il group_id
colonna è la colonna della chiave primaria.
La seguente istruzione crea contact_groups
tabella:
CREATE TABLE contact_groups(
contact_id INTEGER,
group_id INTEGER,
PRIMARY KEY (contact_id, group_id),
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
Code language: SQL (Structured Query Language) (sql)
Provalo
I contact_groups
table ha una chiave primaria composta da due colonne:contact_id
e group_id
.
Per aggiungere il vincolo della chiave primaria della tabella, utilizza questa sintassi:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
Inoltre, il contact_id
e group_id
sono le chiavi esterne. Pertanto, usi FOREIGN KEY
vincolo per definire una chiave esterna per ogni colonna.
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
Nota che ne parleremo nella FOREIGN KEY
vincolo in dettaglio nel tutorial successivo.
In questo tutorial, hai imparato come creare una nuova tabella con varie opzioni usando SQLite CREATE TABLE
dichiarazione.