SQLite - Vincoli

I vincoli sono le regole applicate su una colonna di dati sulla tabella. Vengono utilizzati per limitare il tipo di dati che possono essere inseriti in una tabella. Ciò garantisce l'accuratezza e l'affidabilità dei dati nel database.

I vincoli possono essere a livello di colonna o di tabella. I vincoli a livello di colonna vengono applicati solo a una colonna, mentre i vincoli a livello di tabella vengono applicati all'intera tabella.

Di seguito sono riportati i vincoli comunemente utilizzati disponibili in SQLite.

  • NOT NULL Constraint - Assicura che una colonna non possa avere un valore NULL.

  • DEFAULT Constraint - Fornisce un valore predefinito per una colonna quando non ne viene specificato nessuno.

  • UNIQUE Constraint - Assicura che tutti i valori in una colonna siano diversi.

  • PRIMARY Key - Identifica in modo univoco ogni riga / record in una tabella di database.

  • CHECK Constraint - Assicura che tutti i valori in una colonna soddisfino determinate condizioni.

NON NULLO Vincolo

Per impostazione predefinita, una colonna può contenere valori NULL. Se non si desidera che una colonna abbia un valore NULL, è necessario definire tale vincolo su questa colonna specificando che NULL non è ora consentito per quella colonna.

Un NULL non è la stessa cosa di nessun dato, piuttosto rappresenta dati sconosciuti.

Esempio

Ad esempio, la seguente istruzione SQLite crea una nuova tabella denominata COMPANY e aggiunge cinque colonne, tre delle quali, ID e NAME e AGE, specificano di non accettare NULL.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Vincolo PREDEFINITO

Il vincolo DEFAULT fornisce un valore predefinito a una colonna quando l'istruzione INSERT INTO non fornisce un valore specifico.

Esempio

Ad esempio, la seguente istruzione SQLite crea una nuova tabella denominata COMPANY e aggiunge cinque colonne. Qui, la colonna SALARY è impostata su 5000.00 per impostazione predefinita, quindi nel caso in cui l'istruzione INSERT INTO non fornisca un valore per questa colonna, quindi per impostazione predefinita, questa colonna sarebbe impostata su 5000.00.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

Vincolo UNICO

Il vincolo UNIQUE impedisce a due record di avere valori identici in una determinata colonna. Nella tabella AZIENDA, ad esempio, potresti voler impedire a due o più persone di avere la stessa età.

Esempio

Ad esempio, la seguente istruzione SQLite crea una nuova tabella denominata COMPANY e aggiunge cinque colonne. Qui, la colonna AGE è impostata su UNIQUE, quindi non puoi avere due record con la stessa età -

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

PRIMARY KEY Vincolo

Il vincolo PRIMARY KEY identifica in modo univoco ogni record in una tabella di database. Possono esserci più colonne UNICHE, ma solo una chiave primaria in una tabella. Le chiavi primarie sono importanti quando si progettano le tabelle del database. Le chiavi primarie sono ID univoci.

Li usiamo per fare riferimento alle righe della tabella. Le chiavi primarie diventano chiavi esterne in altre tabelle, quando si creano relazioni tra tabelle. A causa di una "supervisione di codifica di lunga data", le chiavi primarie possono essere NULL in SQLite. Questo non è il caso di altri database.

Una chiave primaria è un campo in una tabella che identifica in modo univoco ogni riga / record in una tabella di database. Le chiavi primarie devono contenere valori univoci. Una colonna di chiave primaria non può avere valori NULL.

Una tabella può avere una sola chiave primaria, che può essere costituita da uno o più campi. Quando più campi vengono utilizzati come chiave primaria, vengono chiamati acomposite key.

Se una tabella ha una chiave primaria definita su uno o più campi, non puoi avere due record con lo stesso valore di quel campo.

Esempio

Hai già visto vari esempi sopra in cui abbiamo creato la tabella COMPANY con ID come chiave primaria.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

CONTROLLA vincolo

CHECK Constraint abilita una condizione per verificare il valore immesso in un record. Se la condizione restituisce false, il record viola il vincolo e non viene inserito nella tabella.

Esempio

Ad esempio, il seguente SQLite crea una nuova tabella denominata COMPANY e aggiunge cinque colonne. Qui, aggiungiamo una colonna CONTROLLO con STIPENDIO, in modo che tu non possa avere alcun SALARIO Zero.

CREATE TABLE COMPANY3(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    CHECK(SALARY > 0)
);

Vincolo di eliminazione

SQLite supporta un sottoinsieme limitato di ALTER TABLE. Il comando ALTER TABLE in SQLite consente all'utente di rinominare una tabella o aggiungere una nuova colonna a una tabella esistente. Non è possibile rinominare una colonna, rimuovere una colonna o aggiungere o rimuovere vincoli da una tabella.