English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Vincoli di SQLite

Le vincolazioni sono le regole imposte sui dati delle colonne della tabella. Queste vengono utilizzate per limitare i tipi di dati che possono essere inseriti nella tabella. Questo garantisce l'accuratezza e la affidabilità dei dati nel database.

Le vincolazioni possono essere a livello di colonna o a livello di tabella. Le vincolazioni a livello di colonna si applicano solo a una colonna, mentre le vincolazioni a livello di tabella si applicano a tutta la tabella.

Ecco le vincolazioni comuni disponibili in SQLite.

  • NOT NULL Vincolazione - Assicura che la colonna non possa avere valori NULL.

  • DEFAULT Vincolazione - Fornisce un valore di default per la colonna se non specificato.

  • UNIQUE Vincolazione - Assicura che tutti i valori nella colonna siano diversi.

  • PRIMARY Key − Identifica unicamente ogni riga/record nella tabella del database.

  • CHECK Vincolazione - Assicura che tutti i valori nella colonna soddisfino determinate condizioni.

Vincolazione NOT NULL

Per default, una colonna può salvare valori NULL. Se non si desidera che una colonna abbia valori NULL, è necessario definire tale vincolazione su questa colonna per specificare che questa colonna non accetta NULL.

NULL rappresenta la mancanza di dati, rappresenta dati sconosciuti.

Esempio

Ad esempio, la seguente istruzione SQLite crea una nuova tabella chiamata COMPANY e aggiunge cinque colonne, tra cui tre (ID, NAME e AGE) specificano che non accettano NULL.

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

Vincolazione DEFAULT

Quando l'istruzione INSERT INTO non fornisce un valore specifico, la vincolazione DEFAULT fornirà un valore di default per la colonna.

Esempio

Ad esempio, la seguente istruzione SQLite crea una nuova tabella chiamata COMPANY e aggiunge cinque colonne. In questo caso, la colonna SALARY è impostata per default a 5000.00, quindi se l'istruzione INSERT INTO non fornisce un valore per questa colonna, per default questa colonna sarà impostata a 5000.00.

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

Restrizione UNIQUE

La restrizione UNIQUE impedisce a due record di avere lo stesso valore in una colonna specifica. Ad esempio, nella tabella COMPANY, potresti voler impedire a due o più persone di avere la stessa età.

Esempio

Ad esempio, nel seguente esempio SQLite crea una nuova tabella chiamata COMPANY e aggiunge cinque colonne. In questo caso, la colonna AGE è impostata come UNIQUE, quindi non è possibile avere due record con la stessa età-

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

Restrizione PRIMARY Key

La restrizione PRIMARY KEY identifica unicamente ogni record del database nella tabella. Possono esserci più colonne UNIQUE, ma nella tabella c'è solo una chiave primaria. È molto importante progettare la tabella del database con una chiave primaria. La chiave primaria è un ID unico.

Le usiamo per riferirci alle righe della tabella. Quando si creano relazioni tra tabelle, la chiave primaria diventa una chiave esterna nell'altra tabella. A causa del 'supervisione a lungo termine del codice', nella SQLite la chiave primaria può essere NULL. Altri database non sono nel caso.

La chiave primaria è un campo nella tabella che identifica unicamente ogni riga/record del database. La chiave primaria deve contenere valori unici. La colonna della chiave primaria non può avere valori NULL.

Una tabella può avere solo una chiave primaria, che può essere composta da un singolo o più campi. Quando più campi vengono utilizzati come chiave primaria, si chiamanochiave composta.

Non è possibile avere due record con lo stesso valore field(s) se la tabella definisce un campo(s) primario su un'altra tabella.

Esempio

Hai già visto molti esempi, nei quali abbiamo creato la tabella COMPANY con ID come chiave primaria.

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

Restrizione CHECK

La restrizione CHECK permette di verificare i valori inseriti nei record. Se il calcolo della condizione restituisce false, il record viola la restrizione e non viene inserito nella tabella.

Esempio

Ad esempio, nel seguente esempio SQLite crea una nuova tabella chiamata COMPANY e aggiunge cinque colonne. In questo caso, abbiamo aggiunto una colonna CHECK con SALARY, quindi non è possibile avere alcun SALARY 0.

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

Eliminazione di vincoli

SQLite supporta un sottoinsieme limitato di ALTER TABLE. Il comando ALTER TABLE di SQLite consente agli utenti di rinominare tabelle o aggiungere nuove colonne a tabelle esistenti. Non è possibile rinominare colonne, eliminare colonne o aggiungere o eliminare vincoli nella tabella.