SQL FORIGN KEY: Luominen SQL Serverissä esimerkin avulla

Mikä on ULKOINEN AVAIN?

A viiteavain tarjoaa tavan valvoa viittauksen eheyttä SQL Serverissä. Yksinkertaisesti sanottuna vierasavain varmistaa, että yhden taulukon arvot ovat toisessa taulukossa.

Säännöt ULKOMAAN AVAIN

  • NULL on sallittu vieraassa SQL-avaimessa.
  • Taulukkoa, johon viitataan, kutsutaan päätaulukoksi
  • Taulukkoa, jossa on vierasavain SQL:ssä, kutsutaan lapsitaulukoksi.
  • Alitaulukon SQL-vierasavain viittaa päätaulukon ensisijaiseen avaimeen.
  • Tämä vanhemman ja lapsen välinen suhde panee täytäntöön säännön, joka tunnetaan nimellä "viittaus". Integrity"

Alla oleva vierasavain SQL:ssä kaaviolla tiivistää kaikki edellä mainitut kohdat FORIGN KEY:lle

Säännöt FORIGN KEY:lle SQL:ssä
Kuinka vieras avain toimii

Kuinka luoda ULKOAvain SQL:ssä

Voimme luoda a viiteavain SQL-palvelimessa 2 tapaa:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

Vanhemman taulukko: Oletetaan, että meillä on olemassa oleva ylätason taulukko nimellä "Kurssi". Course_ID ja Course_name ovat kaksi saraketta, joiden ensisijaisena avaimena on Course_Id.

Luo FORIGN KEY SQL:ssä

Lapsipöytä: Meidän on luotava toinen taulukko lapsitaulukoksi. 'Course_ID' ja 'Course_strength' kahtena sarakkeena. Kuitenkin 'Course_ID' on vieras avain.

Vaihe 1) Napsauta hiiren kakkospainikkeella Taulukot> Uusi> Taulukko…

Luo FORIGN KEY SQL:ssä

Vaihe 2) Anna kaksi sarakkeen nimeä 'Course_ID' ja 'Course_strength'. Napsauta hiiren kakkospainikkeella Course_Id-saraketta. Napsauta nyt Suhde.

Luo FORIGN KEY SQL:ssä

Vaihe 3) In "Ulkomaan avainsuhde,' Klikkaus 'Lisätä'

Luo FORIGN KEY SQL:ssä

Vaihe 4) Napsauta "Taulukon ja sarakkeen tiedot" -kohdassa '…'-kuvaketta

Luo FORIGN KEY SQL:ssä

Vaihe 5) Valitse avattavasta valikosta "Primary Key Table" "KURSI" ja uusi taulukko, jota ollaan luomassa nimellä "Foreign Key Table".

Luo FORIGN KEY SQL:ssä

Vaihe 6) "Primary Key Table" – Valitse "Primary Key table" -sarakkeeksi Course_Id-sarake.

"Foreign Key Table" - Valitse "Course_Id" -sarake "Foreign Key table" -sarakkeeksi. Napsauta OK.

Luo FORIGN KEY SQL:ssä

Vaihe 7) Valitse Lisää.

Luo FORIGN KEY SQL:ssä

Vaihe 8) Anna taulukon nimeksi 'Course_strength' ja napsauta OK.

Luo FORIGN KEY SQL:ssä

Tulos: Olemme asettaneet vanhemman ja lapsen välisen suhteen 'kurssi' ja 'Curse_strength.'

Luo FORIGN KEY SQL:ssä

T-SQL: Luo emo-lapsitaulukko T-SQL:n avulla

Vanhemman taulukko: Harkitse uudelleen, meillä on olemassa ylätason taulukko, jonka taulukon nimi on "Kurssi".

Course_ID ja Course_name ovat kaksi saraketta, joiden ensisijaisena avaimena on Course_Id.

Luo vanhempi-lapsitaulukko T-SQL:n avulla

Lapsipöytä: Meidän on luotava toinen taulukko alitaulukoksi, jonka nimi on "Course_strength_TSQL".

'Course_ID' ja 'Course_strength' kahtena sarakkeena alatason taulukolle Course_strength_TSQL. Kuitenkin 'Course_ID' on vieras avain.

Alla on syntaksi taulukon luomiseksi FOREIGN KEY:llä

Syntaksi:

CREATE TABLE childTable
(
  column_1 datatype [ NULL |NOT NULL ],
  column_2 datatype [ NULL |NOT NULL ],
  ...

  CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n)
    [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ]
    [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] 
);

Tässä on kuvaus yllä olevista parametreista:

  • childTable on luotavan taulukon nimi.
  • sarake_1, sarake_2- taulukkoon lisättävät sarakkeet.
  • fkey_name- luotavan vierasavainrajoitteen nimi.
  • lapsi_sarake1, lapsi_sarake2…lapsi_sarake_n- ChidTable-sarakkeiden nimi, jotka viittaavat ensisijaiseen avaimeen vanhempitaulukossa.
  • parentTable- päätaulukon nimi, jonka avaimeen viitataan alitaulukossa.
  • vanhempi_sarake1, vanhempi_sarake2, … vanhempi_sarake3- sarakkeet, jotka muodostavat päätaulukon ensisijaisen avaimen.
  • POISTAA. Valinnainen parametri. Se määrittää, mitä lapsitiedoille tapahtuu ylätason tietojen poistamisen jälkeen. Joitakin tämän parametrin arvoja ovat NO ACTION, SET NULL, CASCADE tai SET DEFAULT.
  • PÄIVITYS - Valinnainen parametri. Se määrittää, mitä lapsitiedoille tapahtuu ylätason tietojen päivityksen jälkeen. Joitakin tämän parametrin arvoja ovat NO ACTION, SET NULL, CASCADE tai SET DEFAULT.
  • EI TOIMIA - käytetään yhdessä ON DELETE ja ON UPDATE kanssa. Se tarkoittaa, että lapsitiedoille ei tapahdu mitään ylätason tietojen päivityksen tai poistamisen jälkeen.
  • CASCADE- käytetään yhdessä ON DELETE ja ON UPDATE kanssa. Lapsitiedot joko poistetaan tai päivitetään, kun vanhemman tiedot on poistettu tai päivitetty.
  • SET NULL - käytetään yhdessä ON DELETE ja ON UPDATE kanssa. Lapsi asetetaan tyhjäksi, kun ylätason tiedot on päivitetty tai poistettu.
  • SET DEFAULT - käytetään yhdessä ON DELETE ja ON UPDATE kanssa. Alatason tiedot asetetaan oletusarvoihin ylätason tietojen päivityksen tai poistamisen jälkeen.

Katsotaanpa SQL-esimerkkiä vierasavaimesta taulukon luomiseksi, jossa on yksi sarake vieraan avaimena:

Vieras avain SQL-esimerkissä

kysely:

CREATE TABLE Course_Strength_TSQL
(
Course_ID Int,
Course_Strength Varchar(20) 
CONSTRAINT FK FOREIGN KEY (Course_ID)
REFERENCES COURSE (Course_ID)	
)

Vaihe 1) Suorita kysely napsauttamalla suorita.

Vieras avain SQL:ssä

Tulos: Olemme asettaneet vanhemman ja lapsen välisen suhteen 'kurssi' ja 'Course_strength_TSQL.'

Vieras avain SQL:ssä

Käyttämällä ALTER TABLE

Nyt opimme käyttämään vierasavainta SQL:ssä ja lisäämään vierasavain SQL-palvelimeen ALTER TABLE -käskyn avulla, käytämme alla olevaa syntaksia:

ALTER TABLE childTable
ADD CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);

Tässä on kuvaus yllä käytetyistä parametreista:

  • childTable on luotavan taulukon nimi.
  • sarake_1, sarake_2- taulukkoon lisättävät sarakkeet.
  • fkey_name- luotavan vierasavainrajoitteen nimi.
  • lapsi_sarake1, lapsi_sarake2…lapsi_sarake_n- ChidTable-sarakkeiden nimi, jotka viittaavat ensisijaiseen avaimeen vanhempitaulukossa.
  • parentTable- päätaulukon nimi, jonka avaimeen viitataan alitaulukossa.
  • vanhempi_sarake1, vanhempi_sarake2, … vanhempi_sarake3- sarakkeet, jotka muodostavat päätaulukon ensisijaisen avaimen.

Muuta taulukkoa lisää vieras avain -esimerkki:

ALTER TABLE department
ADD CONSTRAINT fkey_student_admission
    FOREIGN KEY (admission)
    REFERENCES students (admission);

Olemme luoneet osastotaulukkoon vierasavaimen nimeltä fkey_student_admission. Tämä vieras avain viittaa opiskelijataulukon pääsysarakkeeseen.

Esimerkki kysely FORIGN KEY

Katsotaanpa ensin vanhempien taulukkotietomme, COURSE.

kysely:

SELECT * from COURSE;

Esimerkki kysely FORIGN KEY

Lisätään nyt joku rivi lapsitaulukkoon: 'Course_strength_TSQL.'

Yritämme lisätä kahden tyyppisiä rivejä

  1. Ensimmäinen tyyppi, jolle alataulukon Course_Id on ylätason taulukon Course_Id. eli Course_Id = 1 ja 2
  2. Toinen tyyppi, jolle alataulukon Course_Id ei ole ylätason taulukossa Course_Id. eli kurssin_tunnus = 5

kysely:

Insert into COURSE_STRENGTH values (1,'SQL');
Insert into COURSE_STRENGTH values (2,'Python');
Insert into COURSE_STRENGTH values (5,'PERL');

Esimerkki kysely FORIGN KEY

Tulos: Suoritetaan kysely yhdessä nähdäksesi vanhemman ja lapsen taulukon

Course_strength-taulukossa on rivi, jolla on Course_ID 1 ja 2. Sen sijaan Course_ID 5 on poikkeus.

Esimerkki kysely FORIGN KEY

Yhteenveto

  • Jokaisen vierasavaimen arvon on oltava osa Pääavain muista pöydistä.
  • - MySQL Vieras avain voi viitata toiseen sarakkeeseen samassa taulukossa. Tämä viittaus tunnetaan itseviittauksena.
  • SQL-vieraan avaimen rajoitus: käytetään suojaamaan taulukoiden ja virheellisten tietojen väliset linkit lisättäväksi Vierasavain-sarakkeeseen.
  • Voit luoda vieraan avaimen käyttämällä Luo taulukko, Muuta taulukko tai SQL Server Management Studio.
  • Tässä on ero ensisijaisen avaimen ja vieraan avaimen välillä: Klikkaa tästä