logo

Com afegir una clau estrangera a SQL

En aquest article, aprendrem a afegir una clau estrangera a la columna de la taula de la nostra base de dades SQL.

El CLAU ESTRANGERA en SQL s'utilitza per unir el registre de dues taules a la base de dades. La columna definida com a CLAU ESTRANGERA en una taula ha de ser la CLAU PRIMÀRIA en una altra taula de la mateixa base de dades.

Podem afegir fàcilment la clau estrangera a la columna de les dues maneres següents:

  1. Afegiu una clau estrangera mitjançant la instrucció Crea una taula
  2. Afegiu una clau estrangera mitjançant la instrucció Alter Table

Si voleu afegir una CLAU ESTRANGERA a la columna de la taula SQL, heu de seguir els passos següents en la seqüència donada:

  1. Creeu la base de dades al sistema.
  2. Creeu dues taules a la mateixa base de dades.
  3. Veure l'estructura de la taula abans d'afegir la clau estrangera.
  4. Afegiu una clau estrangera a la taula.
  5. Veure l'estructura de la taula.

Ara, explicarem els passos anteriors amb un exemple:

Pas 1: creeu una base de dades

En el llenguatge de consulta estructurat, la creació d'una base de dades és el primer pas per emmagatzemar les taules estructurades a la base de dades.

Utilitzeu la sintaxi SQL següent per crear una base de dades:

 CREATE DATABASE Database_Name; 

Suposem que voleu crear el Vehicles base de dades. Per a això, heu d'escriure la següent comanda en llenguatge de consulta estructurat:

 CREATE DATABASE Vehicles; 

Pas 2: creeu dues taules a la base de dades

Ara, heu d'utilitzar la següent sintaxi SQL per crear les taules a la vostra base de dades:

 CREATE TABLE table_name ( column_Name_1 data type (size of the column_1), column_Name_2 data type (size of the column_2), column_Name_3 data type (size of the column_3), ... column_Name_N data type (size of the column_1) ); 

La consulta SQL següent crea el Cotxes_Detalls taula a la Vehicles base de dades.

 CREATE TABLE Cars_Details ( Car_Number INT AUTO_INCREMENT PRIMARY KEY, Model INT, Cars_Name VARCHAR (20), Colour VARCHAR (20), ); 

Es crea la següent consulta Detalls_preu_cotxes taula a la Vehicles base de dades:

 CREATE TABLE Cars_Price_Details ( Model INT NOT NULL PRIMARY KEY, Cars_Price INT NOT NULL ); 

Pas 3: visualitzeu l'estructura de la taula abans de l'addició de clau estrangera

Després de la creació de la taula i la inserció de dades, podeu veure l'estructura d'ambdues taules escrivint la consulta següent a la vostra aplicació SQL:

 DESC Cars or DESCRIBE Cars ; 

Camp Tipus NUL clau Per defecte Extra
Número_cotxe INT NO AT NUL increment_automàtic
Model INT - NUL -
Nom_cotxe Varchar (20) - NUL
Color Varchar (20) - NUL -

 DESC Cars_Price_Details; 

Camp Tipus NUL clau Per defecte Extra
Model_cotxe INT No AT NUL -
Preu_cotxe INT No - NUL

Pas 4: afegiu una clau estrangera a la columna de la taula

Si voleu afegir la clau estrangera en el moment de la creació de la taula, heu d'utilitzar la següent sintaxi CREATE TABLE a SQL:

 CREATE TABLE table_name1 ( Column_Name_1 data type (size of the column_1), Column_Name_2 data type (size of the column_2), ......, Column_Name_N data type (size of the column_N) FOREIGN KEY REFERENCES Table_Name2 (Column_Name) ) ; 

Exemple

La consulta següent afegeix la CLAU EXTRANJERA a la columna 'Model' de la taula Cars_Details:

 CREATE TABLE Cars_Details ( Car_Number INT AUTO_INCREMENT, Model INT FOREIGN KEY REFERENCES Cars_Price_Details (Car_Model), Cars_Name VARCHAR (20), Color VARCHAR (20) UNIQUE, Price INT NOT NULL ) ; 

Aquesta consulta en SQL s'uneix els Cotxes_Detalls taula amb el Detalls_preu_cotxes taula amb l'ajuda d'una clau estrangera.

Pas 5: visualitzeu l'estructura de la taula després de l'addició de clau estrangera

Per comprovar el resultat de la consulta executada a el 4thpas, heu d'escriure la següent comanda DESC a SQL:

 DESC Cars_Details; 

Camp Tipus NUL clau Per defecte Extra
Número_cotxe INT PRIMÀRIA NUL increment_automàtic
Model INT No ESTRANGER NUL -
Nom_cotxe Varchar (20) - NUL -
Color Varchar (20) - NUL -
Preu INT NO - NUL -
Mitjana INT NO - 0 -

Com es mostra a la sortida anterior, la columna Model es crea com a clau estrangera.

Afegiu la clau estrangera a la taula existent

Si voleu afegir la clau estrangera a la taula existent, heu d'utilitzar la següent sintaxi ALTER a SQL:

 ALTER TABLE Table_Name1 ADD CONSTRAINT ForeignKey_Name FOREIGN KEY (Column_Name) REFERENCES Table_Name2 (Column_Name); 

La consulta següent afegeix una CLAU FORA a la columna Model quan la taula Cars_Details ja existeix al sistema de base de dades:

 ALTER TABLE Cars_Details ADD CONSTRAINT FK_Cars_Details FOREIGN KEY (Model) REFERENCES Cars_Price_Details (Car_Model); 

Aquesta consulta ALTER en SQL s'uneix els Cotxes_Detalls taula amb el Detalls_preu_cotxes taula amb l'ajuda d'una clau estrangera.

Suprimeix la clau estrangera de la taula

Si voleu eliminar la clau estrangera de la columna de la taula, heu d'utilitzar el següent ALTERA sintaxi en SQL:

 ALTER TABLE Table_Name DROP FOREIGN KEY Foreign_Key_Name; 

La consulta següent suprimeix la CLAU ESTRANGERA creada de la columna Model de la taula Cars_Details:

 ALTER TABLE Cars DROP FOREIGN KEY FK_Cars_Details;