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

Kuinka luoda ULKOAvain SQL:ssä
Voimme luoda a viiteavain SQL-palvelimessa 2 tapaa:
- SQL Server Management Studio
- 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.
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…
Vaihe 2) Anna kaksi sarakkeen nimeä 'Course_ID' ja 'Course_strength'. Napsauta hiiren kakkospainikkeella Course_Id-saraketta. Napsauta nyt Suhde.
Vaihe 3) In "Ulkomaan avainsuhde,' Klikkaus 'Lisätä'
Vaihe 4) Napsauta "Taulukon ja sarakkeen tiedot" -kohdassa '…'-kuvaketta
Vaihe 5) Valitse avattavasta valikosta "Primary Key Table" "KURSI" ja uusi taulukko, jota ollaan luomassa nimellä "Foreign Key Table".
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.
Vaihe 7) Valitse Lisää.
Vaihe 8) Anna taulukon nimeksi 'Course_strength' ja napsauta OK.
Tulos: Olemme asettaneet vanhemman ja lapsen välisen suhteen 'kurssi' ja 'Curse_strength.'
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.
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.
Tulos: Olemme asettaneet vanhemman ja lapsen välisen suhteen 'kurssi' ja 'Course_strength_TSQL.'
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;
Lisätään nyt joku rivi lapsitaulukkoon: 'Course_strength_TSQL.'
Yritämme lisätä kahden tyyppisiä rivejä
- Ensimmäinen tyyppi, jolle alataulukon Course_Id on ylätason taulukon Course_Id. eli Course_Id = 1 ja 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');
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.
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ä