Tabella dei vincoli (vincolo) SQL Server forte
- 12-09-2022
- Toanngo92
- 0 Comments
Mục lục
Introduzione dei vincoli (vincoli)
Una delle funzioni importanti in SQL Server è mantenere e rafforzare l’integrità dei dati. Esistono diversi mezzi per raggiungere questo obiettivo, ma uno dei metodi più comunemente usati e preferiti è utilizzare i vincoli. Un vincolo è un attributo assegnato a una colonna o a un insieme di colonne in una tabella per impedire l’immissione di un qualche tipo di valore di dati incoerente. I vincoli vengono utilizzati per applicare le regole della logica aziendale e imporre l’integrità dei dati.
I vincoli possono essere creati durante la creazione della tabella, fanno parte della definizione della tabella, possono essere inclusi nella tabella durante la creazione o inclusi dopo la creazione.I vincoli possono essere classificati come vincoli di colonna e vincoli di tabella:
- Vincoli di tabella: possono essere applicati a più colonne in una tabella ed è dichiarato indipendente dalla definizione di colonna. Il vincolo di tabella deve essere utilizzato quando è presente più di una colonna in un vincolo
- Vincolo di colonna: indicato come parte della definizione di una colonna e si applica solo a quella colonna.
Tipi di vincoli in SQL Server:
- CHIAVE PRIMARIA
- UNICO
- CHIAVE STRANIERA
- DAI UN’OCCHIATA
- NON NULLO
CHIAVE PRIMARIA (Chiave primaria)
una tabella ha in genere una chiave primaria costituita da una colonna univoca o da una combinazione di colonne per identificare in modo univoco ogni riga della tabella. Il vincolo PRIMARY KEY viene utilizzato per generare una chiave primaria allo scopo di garantire l’integrità dell’entità nella tabella.
Nota: in una tabella è possibile creare solo una CHIAVE PRIMARIA.
Due righe in una tabella non possono avere lo stesso valore di chiave primaria e una colonna che è una chiave primaria non può avere un valore NULL . Pertanto, quando un vincolo di chiave primaria viene aggiunto alle colonne della tabella esistenti, SQL Server verifica se vengono seguite le regole per la chiave primaria. Se le colonne esistenti non sono conformi alle regole della chiave primaria, il vincolo non verrà aggiunto e verrà restituito un errore.
Sintassi per aggiungere la chiave primaria alla colonna durante l’aggiunta della tabella:
CREATE TABLE <table_name> (Column_Name datatype PRIMARY KEY [,column_list])
Per esempio:
create database empDB GO use empDB GO create table EmpContactPhone (Employee_ID int primary key, MobileNumber bigint, serviceProvider varchar(30), LandlineNumber bigint)
Dopo aver eseguito correttamente il comando, il database empDB viene creato con la colonna Employee_ID come chiave primaria:
Sintassi per aggiungere la chiave primaria alla colonna durante la modifica della tabella:
ALTER TABLE <table_name> ADD PRIMARY KEY (<column_name>)
Per esempio:
create database empDB GO use empDB GO create table EmpContactPhone (Employee_ID int, MobileNumber bigint, serviceProvider varchar(30), LandlineNumber bigint) use empDB GO alter table EmpContactPhone alter column Employee_ID int not null; GO alter table EmpContactPhone ADD PRIMARY KEY(Employee_ID) ;
UNICO (Unico)
I vincoli univoci vengono utilizzati per garantire che solo i valori univoci vengano inseriti in una colonna o in un insieme di colonne. Consente agli sviluppatori di assicurarsi che non vengano inseriti valori duplicati. Le chiavi primarie sono sempre univoche. Le chiavi UNIQUE impongono l’integrità dell’entità perché una volta applicati i vincoli, nessuna riga nella tabella può avere gli stessi valori per le colonne. Il vincolo UNIQUE consente valori null. Una tabella può avere più di un vincolo UNIQUE.
Sintassi:
create table <table_name> ([column_list,] <column_name> <data_type> UNIQUE [,column_list])
Per esempio:
create table EmpContactPhoneUnique (Employee_ID int, MobileNumber bigint unique, serviceProvider varchar(30), LandlineNumber bigint)
Con la sintassi precedente, quando si inseriscono dati nella colonna MobileNumber se sono presenti duplicati diversi da , SQL riporterà un errore, ad esempio:
insert into EmpContactPhoneUnique values (1,0782222567,'vinaphone','84') insert into EmpContactPhoneUnique values (2,0782222567,'vinaphone','84')
CHIAVE ESTERA (Chiave straniera)
Una chiave esterna in una tabella è una colonna che punta a una chiave primaria oa una colonna univoca in una tabella. I vincoli di chiave esterna vengono utilizzati per imporre l’integrità referenziale. Una chiave esterna può essere intesa come una relazione tra due tabelle per formare uno schema di database relazionale.
Nota: la chiave esterna di questa tabella deve essere associata alla chiave primaria di un’altra tabella, altrimenti l’istruzione di inizializzazione darà un errore
La sintassi per le chiavi esterne è la seguente:
CREATE TABLE <table_name1>([column_list,]) <column_name> <datatype> FOREIGN KEY REFFERENCES <table_name> (<pk_column_name> [,column_list])
Spiegare:
- nome_tabella: il nome della tabella a cui fa riferimento la colonna della chiave primaria
- <pk_column_name>: nome della colonna della chiave primaria della tabella
Per esempio:
create database empDB GO use empDB GO create table EmpContactPhone (Employee_ID int, MobileNumber bigint, serviceProvider varchar(30), LandlineNumber bigint) use empDB GO alter table EmpContactPhone alter column Employee_ID int not null; GO alter table EmpContactPhone ADD PRIMARY KEY(Employee_ID) ; create table EmpPhoneExpenses (Expense_ID int primary key identity, Employee_ID int FOREIGN KEY REFERENCES EmpContactPhone(Employee_ID),Amount bigint)
Nell’esempio precedente, comprendiamo che la colonna Employee_ID della tabella EmpContactPhone ha una chiave esterna e la associamo alla colonna Employee_ID che è la chiave primaria della tabella EmpContactPhone .
DAI UN’OCCHIATA
Questo vincolo viene utilizzato per verificare il limite di valori che possono essere inseriti nella colonna. Il vincolo CHECK impone l’integrità dei dati.
Ad esempio, potrebbe essere introdotto un vincolo di verifica se il valore inserito nella colonna che rappresenta l’età del votante deve essere maggiore o uguale a 18.
Se i dati immessi per la colonna non corrispondono alla condizione, l’inserimento avrà esito negativo.
Il vincolo di controllo funziona specificando una condizione di ricerca, che può restituire VERO, FALSO o non definito. I valori che restituiscono FALSO verranno rifiutati. È possibile specificare più vincoli TEST per una singola colonna. Un singolo vincolo CHECK può essere applicato anche a più colonne creandolo a livello di tabella.
Sintassi:
Per esempio:
create table Employee (ID int primary key identity, Name nvarchar(30), Phone varchar(30), Age int check (Age > 18))
Il passaggio successivo, prova a testare i dati di inserimento nella tabella dei dipendenti con dati che violano il vincolo:
insert into Employee values (N'Toan Ngo Vinh','0911111111',15)
NON NULLO
Il vincolo not null garantisce che il valore di una colonna non possa essere null. Utilizzato per garantire l’integrità e la logica dei dati, in modo simile al vincolo CHECK