English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
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 );
Quando l'istruzione INSERT INTO non fornisce un valore specifico, la vincolazione DEFAULT fornirà un valore di default per la colonna.
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 );
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à.
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 );
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.
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 );
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.
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) );
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.