SQLite
 sql >> Database >  >> RDS >> SQLite

SQLite Crea tabella

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 con sqlite_ 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 utilizzare IF 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 e CHECK vincoli di colonna.
  • Quinto, specifica i vincoli della tabella come PRIMARY KEY , FOREIGN KEY , UNIQUE e CHECK vincoli.
  • Infine, utilizza facoltativamente il WITHOUT ROWID opzione. Per impostazione predefinita, una riga in una tabella ha una colonna implicita, denominata rowid , oid o _rowid_ colonna. Il rowid 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 il rowid colonna, specifichi il WITHOUT ROWID opzione. Una tabella che contiene il rowid è nota come rowid tavolo. Nota che il WITHOUT 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
  • E-mail
  • 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 ACTIONCode language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id) 
    REFERENCES groups (group_id) 
      ON DELETE CASCADE 
      ON UPDATE NO ACTIONCode 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.