PostgreSQL Vincoli: Tipi con Esempio
Cos'è il vincolo?
I tipi di dati vengono utilizzati per limitare il tipo di informazioni che possono essere archiviate in una tabella. Ma ci sono 2 problemi con questo approccio.
- 1 Problema: Le limitazioni imposte dai tipi di dati non sono adeguate per alcune applicazioni. Ad esempio, una colonna contenente il prezzo di un articolo dovrebbe accettare solo valori positivi. Tuttavia, non esiste un tipo di dati specifico che accetti solo il numero positivo.
- problema 2: potresti voler limitare le informazioni nei dati di una riga/colonna in relazione ad altre colonne o righe. Ad esempio, una tabella contenente informazioni sull'articolo deve avere solo una riga per ogni vincolo di colonna univoco.
Per superare tali problemi e definire queste regole, è possibile utilizzare costriziones in PostgreSQL. In termini semplici, i vincoli sono regole che i tuoi dati devono seguire. L'aggiunta di vincoli alla tabella consente al sistema di database di garantire l'integrità dei dati.
Pertanto, se un utente tenta di archiviare dati in una colonna che viola un vincolo definito, dovrebbe essere visualizzato un messaggio di errore.
Tipo di PostgreSQL vincoli
Diamo un'occhiata a vari tipi di PostgreSQL vincolo che puoi creare per garantire la correttezza dei dati:
- Unico
- Non nullo
- Controlla Vincolo
- Chiave primaria
- chiave esterna
- Vincolo di esecuzione
1) PostgreSQL Vincolo unico
I vincoli univoci ti aiutano a garantire che i dati contenuti in una colonna o in un gruppo di vincoli di colonna siano univoci.
Esempio
CREATE TABLE Item( Item_no integer UNIQUE, Name text, );
2) NON Vincoli nulli
Un vincolo non nullo definisce che una colonna non deve mai avere un valore nullo. Questo tipo di vincolo è molto simile alla creazione di un vincolo check. Tuttavia, PostgreSQL crea un vincolo non nullo, che è più efficiente. Il problema con questo metodo è che non è possibile assegnare nomi espliciti a vincoli non nulli.
Il vincolo non nullo non è predefinito PostgreSQL standard e non dovrebbe essere utilizzato in applicazioni portatili. È stato aggiunto in seguito in PostgreSQL per renderlo compatibile con qualche altro Sistemi DBMS. Molti lo usano perché semplifica la commutazione del vincolo in un file di script.
Sintassi:
CREATE TABLE Item ( product no integer NULL, Item_name text NULL, Itm_price numeric NULL );
3) PostgreSQL Controlla vincoli
Un vincolo check ti aiuta a specificare che il valore in alcune colonne deve essere un'espressione booleana.
. PostgreSQL Il vincolo check è costituito dalla parola chiave CHECK, seguita da un'espressione tra parentesi. Il vincolo di controllo Postgres dovrebbe coinvolgere la colonna che dovrebbe essere vincolata altrimenti non ha alcun senso.
Sintassi:
CREATE TABLE Item( Item_id INTEGER PRIMARY KEY, name VARCHAR(20), Item_price NUMERIC CHECK(price>0) );
Esempio:
CREATE TABLE Emp( ID INTEGER primary key, First_name VARCHAR(20), Last_name VARCHAR(20), Gender CHAR(l) check(gender gender='M'), Salary INTEGER NOT NULL, Dept_Num INTEGER );
CREATE TABLE ITEM( Id INTEGER PRIMARY KEY, name VARCHAR(15), price numeric CHECK (price > 0) );
4) Vincoli di chiave primaria
Un vincolo di chiave primaria consente di utilizzare una colonna o un gruppo di colonne come identificatore univoco per le righe nella tabella. Per definire i vincoli della chiave primaria, i valori dichiarati dovrebbero essere univoci e non nulli. Ciò consente a due definizioni di tabella di accettare gli stessi dati.
Sintassi:
Create Table Item( Item_no, integer PRIMARY KEY, Item_name text, Item_Price numeric );
Esempio 1:
CREATE TABLE Employee( ID INTEGER PRIMARY KEY Fname VARCHAR(20), Lname VARCHAR(20), Gender CHAR(l), Salary INTEGER NOT NULL, Dept INTEGER, UNIQUE(FNAME, LNAME) );
Esempio 2:
CREATE TABLE first( A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl) ); Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER. );
Esempio 3:
CREATE TABLE Items ( Item_no integer UNIQUE NOT NULL, name text, price numeric CREATE TABLE Items ( Items_no no integer PRIMARY KEY, name text, price numeric
5) Vincoli di chiave esterna
Un vincolo di chiave esterna specifica che i valori in una colonna o in un gruppo di colonne devono corrispondere ai valori che appaiono in qualche riga di un'altra tabella. Ciò consente di stabilire l'integrità referenziale tra due tabelle associate.
Supponiamo che tu abbia una tabella che memorizza gli ordini per prodotti diversi. Vuoi assicurarti che la tabella contenga ordini di prodotti esistenti. Quindi, in questo caso è necessario definire un vincolo di chiave esterna nella tabella degli ordini che faccia riferimento alla tabella dei prodotti.
Sintassi:
CREATE TABLE ( id INTEGER PRIMARY KEY. name VARCHAR(IO) >; CREATE TABLE testable Id INTEGER PRIMARY KEY read INTEGER REFERENCES (id) );
Esempio 2:
CREATE TABLE Student ( Std_ID INTEGER primary key, First_name VARCHAR(20), Last_name VARCHAR(20), Gender CHAR(l), Steam, VARCHAR(20), Dept_NUM INTEGER REFERENCES Department );
6) Vincoli di esclusione
I vincoli di esclusione ti aiutano ad assicurarti che se due righe qualsiasi vengono confrontate tra loro sulle colonne o espressioni specificate con operatori specificati, almeno uno di questi confronti di operatori restituirà un valore nullo o falso. Aggiungendo questo PostgreSQL il vincolo creerà automaticamente un indice del tipo specificato nella dichiarazione del vincolo.
Esempio:
Ad esempio, il seguente PostgreSQL crea una nuova tabella denominata School e aggiunge cinque colonne.
CREATE TABLE SCHOOL6( STDID INT PRIMARY KEY NOT NULL, STDNAME TEXT NOT NULL, STDAGE INT NOT NULL, FEEDBACK CHAR(50), STANDARD INT NOT NULL,
Ad esempio, il seguente PostgreSQL crea una nuova tabella denominata Branch, che aggiunge tre colonne. La colonna STD_ID è la chiave esterna e fa riferimento al campo ID della tabella SCHOOL6.
CREATE TABLE BRANCH ( BRANCHCODE INT PRIMARY KEY NOT NULL, BRAMCHNAME CHAR(50) NOT NULL, STD_ID INT references SCHOOL6(ID) );