English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come utilizzare le restrizioni SQL.
Le restrizioni sono limitazioni per una o più colonne di una tabella per limitare il tipo di valori che possono essere memorizzati nella colonna. Le restrizioni forniscono un meccanismo standard per mantenere l'accuratezza e l'integrità dei dati all'interno delle tabelle del database.
In SQL ci sono diversi tipi di restrizioni, tra cui:
Ora, discutiamo in dettaglio di ogni restrizione.
La restrizione NOT NULL specifica che la colonna non accetta valori NULL.
Questo significa che se la restrizione NOT NULL viene applicata alla colonna, allora è necessario inserire una nuova riga nella tabella senza aggiungere un valore non NULL a quella colonna.
Le seguenti istruzioni SQL creano una tabella chiamataperson'sLa tabella, che ha quattro colonne, tra cui tre colonneid,nameephoneNon accetta valori NULL.
CREATE TABLE persons ( id INT NOT NULL, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL );
Attenzione:Valori vuoti o NULL sono diversi da zero, spazi bianchi o stringhe di lunghezza zero, ad esempio ''. NULL indica che non è stato inserito alcun valore.
La restrizione PRIMARY KEY identifica la colonna o il set che ha un valore identificativo unico per ogni riga della tabella. Nessuna due righe nella tabella possono avere lo stesso valore della chiave primaria. Allo stesso modo, non è possibile inserire valori NULL nella colonna della chiave primaria.
Le seguenti istruzioni SQL creano una tabella chiamatapersonsdella tabella, eidLa colonna specificata come chiave primaria. Questo significa che il campo non consente valori NULL o duplicati.
CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL );
Suggerimento:La chiave primaria è solitamente costituita da una colonna di una tabella, ma può essere costituita da più colonne, ad esempio, l'indirizzo email o il numero di identificazione assegnato è la chiave logica della tabella dei dipendenti.
La restrizione UNIQUE limita una o più colonne a contenere valori unici nella tabella.
Anche se le restrizioni UNIQUE e PRIMARY KEY forzano l'unicità, UNIQUE ma PRIMARY KEY quando si desidera forzare l'unicità di una colonna o combinazione di colonne (non la chiave primaria), utilizzare la restrizione anziché la restrizione.
Le seguenti istruzioni SQL creano una tabella chiamatapersonsdella tabella, ephoneLa colonna specificata come unique. Questo significa che il campo non consente valori ripetuti.
CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );
Attenzione:È possibile definire più constraint UNIQUE su una tabella, ma solo una constraint PRIMARY KEY su una tabella. Inoltre, a differenza della constraint PRIMARY KEY, la constraint UNIQUE permette valori NULL.
La constraint DEFAULT specifica il valore predefinito della colonna.
Il valore predefinito della colonna è il valore quandoINSERTSe l'istruzione non assegna esplicitamente un valore specifico alla colonna, il motore del database inserirà un valore in questa colonna.
Le seguenti istruzioni SQL per Paese/Regionecreare una colonna con un valore predefinito.
CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE, country VARCHAR(30) NOT NULL DEFAULT 'Australia' );
Attenzione:Se si definisce una colonna come NOT NULL ma si assegna un valore predefinito a questa colonna, non è necessario assegnare esplicitamente un valore a questa colonna nell'istruzione INSERT per inserire una nuova riga nella tabella.
Una foreign key (FK) è una colonna o combinazione di colonne utilizzata per stabilire e rafforzare la relazione tra i dati di due tabelle.
Questo mostradipendenti (employees)etabella dei dipartimenti(departmentsdi esempio tra la tabella eemployeesdella tabelladept_idcolonna edepartmentscon la colonna primaria della tabella corrispondente. Pertanto,dept_iddella colonnaun dipendentela foreign key della tabellatabella dei dipartimentitabella.
In MySQL, è possibile creare una foreign key durante la creazione della tabella definendo la constraint. Le seguenti istruzioni nelemployeesdella tabelladept_idcreare una foreign key, che si riferisce adepartmentsdella tabelladept_idcolonna.
CREATE TABLE employees ( emp_id INT NOT NULL PRIMARY KEY, emp_name VARCHAR(55) NOT NULL, hire_date DATE NOT NULL, salary INT, dept_id INT, FOREIGN KEY (dept_id) REFERENCES departments(dept_id) );
La constraint CHECK si utilizza per limitare i valori che possono essere inseriti in una colonna.
Ad esempio, è possibile creare una constraint CHECK per limitare l'intervallo di valori della colonna stipendio, che consente solo valori tra 3,000 e 10,000. Questo può prevenire l'inserimento di stipendi al di fuori dell'intervallo di stipendi normali. Ecco un esempio:
CREATE TABLE employees ( emp_id INT NOT NULL PRIMARY KEY, emp_name VARCHAR(55) NOT NULL, hire_date DATE NOT NULL, salary INT NOT NULL CHECK (salary >= 3000 AND salary <= 10000), dept_id INT, FOREIGN KEY (dept_id) REFERENCES departments(dept_id) );
Attenzione: MySQL non supporta le restrizioni di controllo SQL. Tuttavia, tutti i motori di archiviazione di MySQL interpretano la clausola CHECK, ma la ignorano.