Database
 sql >> Baza danych >  >> RDS >> Database

KLUCZ OBCY SQL

W tym artykule dowiemy się o ograniczeniach FOREIGN KEY i jak zdefiniować ograniczenie FOREIGN KEY w celu zbudowania relacji między dwiema tabelami.

W systemie zarządzania relacyjnymi bazami danych (RDBMS) KLUCZ OBCY to pole lub kilka pól, które są używane do budowania relacji między dwiema tabelami lub łączenia dwóch tabel.

  • KLUCZ OBCY jest również znany jako klucz referencyjny w RDBMS
  • Używając ograniczeń FOREIGN KEY między dwiema tabelami, definiujemy relację rodzic-dziecko między dwiema tabelami.
  • To pole definiuje ograniczenia PRIMARY KEY w tabeli znanej jako tabela nadrzędna, podczas gdy to samo pole definiuje ograniczenia FOREIGN KEY w innej tabeli jest znane jako tabela podrzędna.
  • W tabeli może znajdować się tylko jeden KLUCZ PODSTAWOWY, ale nie ma zdefiniowanego limitu KLUCZY OBCEJ. Na stole możemy mieć jeden lub więcej kluczy OBCYCH.
  • Możemy zdefiniować ograniczenia FOREIGN KEY podczas tworzenia tabeli lub zdefiniować ograniczenia FOREIGN KEY na już istniejącej tabeli.

Weźmy przykład, aby zrozumieć i poznać ograniczenia dotyczące KLUCZY OBCEGO.

Przykład:

Tutaj mamy dwie tabele, jedna to tabela Kurs, a druga to tabela Uczeń:

Studenci wybierają kursy. Poniższy przykład ograniczeń KLUCZA OBCEGO jest zdefiniowany w jednym polu.

Stół numer jeden:stół ucznia

Identyfikator studenta Imię Nazwisko Identyfikator adresu e-mail Miasto
101 Kareena Powiedział przykł[email protected] Hyderabad
102 Anmol Temani przykł[email protected] Jalgaon
103 Harszałek Patel przykł[email protected] Bombaj
104 Sakshi Kaptur przykł[email protected] Pune
105 Pewnie Kohli przykł[email protected] Hyderabad

Tabela numer dwa:Tabela kursów

Identyfikator kursu Nazwa_kursu Identyfikator studenta
C101 Jawa 101
C102 SQL 102
C103 SOA Numer
C104 SAP 104
C105 MuleSoft 103
C101 Jawa 105

W tabeli Student pole Student_Id jest KLUCZEM PODSTAWOWYM, a w tabeli Kurs Student_Id jest KLUCZEM OBCYM.

FOREIGN KEY ograniczenie zapobiega wstawianiu nieprawidłowych danych do kolumny klucza obcego, ponieważ musi to być jedna z wartości zawartych w tabeli nadrzędnej.

Zdefiniuj ograniczenia KLUCZA OBCEGO w UTWÓRZ TABELĘ

Poniższy przykład definiuje KLUCZ OBCY w tabeli Kurs.

Najpierw utworzyliśmy tabelę Student z następującymi polami:

CREATE TABLE Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50),  City varchar(20) NOT NULL, PRIMARY KEY(Student_Id));

Poniższy przykład pokazuje, jak zdefiniować ograniczenia KLUCZA OBCEGO w drugiej tabeli.

Kurs nazw tabel:

CREATE TABLE Course( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));

W tabeli Kurs nie zdefiniowaliśmy żadnego KLUCZA PODSTAWOWEGO. Po prostu zdefiniuj ograniczenia KLUCZA OBCEGO na identyfikatorze Student_Id.

Poniższy przykład ograniczeń KLUCZA OBCEGO jest zdefiniowany na wielu polach.

Załóżmy, że mamy trzy tabele, jedna to tabela Package, druga to tabela Data, a trzecia to tabela Talk_time:

Tabela 1:Pakiet:

Identyfikator pakietu Identyfikator danych Talktime_Id
P1001 D1003 T1001
P1002 D1001 T1002
P1003 D1002 T1003
P1004 D1003 T1004
P1005 D1004 T1005

Tabela 2:Dane:

Identyfikator danych Limit_danych Cena_danych
D1001 5 120
D1002 3 75
D1003 6 150
D1004 10 240
D1005 15 320

Tabela 3:Czas_rozmowy:

Talk_Time_Id Talk_Time _Limit Talk_Time _Cena
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

W tabeli Talk_Time Talk_Time_Id jest KLUCZEM PODSTAWOWYM.

W tabeli Dane Data_Id jest KLUCZEM PODSTAWOWYM.

Natomiast w tabeli Package Talk_Time_Id i Data_Id są kluczami OBCYMI

Tabela numer jeden:Dane:

CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));

Tabela numer dwa:Czas_rozmowy:

CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));

Tabela numer trzy:Pakiet:

CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Data(Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk_Time_Id));

Ograniczenia KLUCZA OBCEGO przy użyciu ALTER TABLE:

Załóżmy, że utworzyliśmy już tabelę i chcemy zdefiniować ograniczenia KLUCZA OBCEGO w tym polu. W takim przypadku użyjemy zapytania ALTER TABLE, aby dodać ograniczenia FOREIGN KEY.

Następujące zapytanie służy do dodawania ograniczeń FOREIGN KEY w polu Student_Id.

ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);

Słowo kluczowe ADD jest używane po nazwie tabeli, aby dodać ograniczenia FOREIGN KEY do już istniejącej tabeli.

UPUŚĆ ograniczenie klucza obcego z tabeli

Użyj następującego zapytania, aby usunąć ograniczenie FOREIGN KEY z tabeli.

ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;

Słowo kluczowe Drop służy do usuwania ograniczeń FOREIGN KEY z pola Student_Id.

course_ibfk_1 to nazwa ograniczenia klucza obcego.

Możemy mieć wartości null w polu ograniczeń FOREIGN KEY. Możemy mieć zduplikowane wartości w polu ograniczeń FOREIGN KEY.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Śledzenie zmian w bazie danych za pomocą kontroli źródła folderu roboczego

  2. Klucz podstawowy SQL

  3. Błąd ogólny:niezgodność wersji systemu operacyjnego

  4. T-SQL Wtorek #33 :Trick Shots :Schemat Switch-A-Roo

  5. Trendy sprzętowe serwera baz danych