SQL VÄLISVÕTI: kuidas luua näitega SQL Serveris

Mis on VÄLISVÕTI?

A võõrvõti pakub viisi viiteterviklikkuse jõustamiseks SQL Serveris. Lihtsamalt öeldes tagab võõrvõti, et ühes tabelis olevad väärtused peavad olema teises tabelis.

VÄLISVÕTME reeglid

  • NULL on SQL-i välisvõtmes lubatud.
  • Viidatud tabelit nimetatakse ematabeliks
  • Võõrvõtmega tabelit SQL-is nimetatakse alamtabeliks.
  • SQL-i välisvõti alamtabelis viitab põhitabeli primaarvõtmele.
  • See vanema ja lapse suhe rakendab reeglit, mida tuntakse kui „viiteid Integrity. "

Allpool olev SQL-i võõrvõtme näide koos diagrammiga võtab kokku kõik ülaltoodud punktid VÕIMALIK VÕTI jaoks

SQL-i VÄLISVÕTME reeglid
Kuidas võõrvõti töötab

Kuidas luua SQL-is VÄLISVÕTI

Saame luua a võõrvõti SQL-serveris 2 viisi:

  1. SQL Serveri haldusstuudio
  2. T-SQL

SQL Serveri haldusstuudio

Vanemtabel: Oletagem, et meil on olemasolev ülemate tabel "Kursus". Course_ID ja Course_name on kaks veergu, mille põhivõtmeks on Course_Id.

Looge SQL-is VÄLISVÕTI

Lapse tabel: Peame looma teise tabeli alamtabelina. 'Course_ID' ja 'Course_strength' on kaks veergu. Siiski peab 'Course_ID' olema võõrvõti.

Step 1) Paremklõpsake valikul Tabelid> Uus> Tabel…

Looge SQL-is VÄLISVÕTI

Step 2) Sisestage kahe veeru nimi "Course_ID" ja "Course_strength". Paremklõpsake veerus Course_Id. Nüüd klõpsake nuppu Suhe.

Looge SQL-is VÄLISVÕTI

Step 3) In 'Välissuhe,' Klõpsake 'Lisama'

Looge SQL-is VÄLISVÕTI

Step 4) Klõpsake jaotises "Tabeli ja veeru spetsifikatsioonid" nuppu '…' ikoon

Looge SQL-is VÄLISVÕTI

Step 5) Valige rippmenüüst "Primary Key Table" kui "KURSUS" ja uus tabel, mida praegu luuakse kui "Võõrvõtmete tabel".

Looge SQL-is VÄLISVÕTI

Step 6) „Primary Key Table” – valige veeruks „Primary Key tabel” veerg „Course_Id”.

„Võõrvõtmete tabel” – valige veeruks „Võõrvõtmete tabel” veerg „Course_Id”. Klõpsake nuppu OK.

Looge SQL-is VÄLISVÕTI

Step 7) Klõpsake Lisa.

Looge SQL-is VÄLISVÕTI

Step 8) Andke tabeli nimeks "Course_strength" ja klõpsake nuppu OK.

Looge SQL-is VÄLISVÕTI

Tulemus: Oleme seadnud vanema-lapse suhte "Kursus" ja Kursuse_tugevus.

Looge SQL-is VÄLISVÕTI

T-SQL: looge T-SQL-i abil vanem-alatabel

Vanemtabel: Mõelge uuesti, meil on olemasolev ülemtabel, mille tabeli nimi on "Kursus".

Course_ID ja Course_name on kaks veergu, mille põhivõtmeks on Course_Id.

Looge T-SQL-i abil vanem-laps tabel

Lapse tabel: Peame looma teise tabeli alamtabelina nimega Course_Strength_TSQL.

'Course_ID' ja 'Course_strength' on kaks veergu alamtabeli Course_strength_TSQL jaoks.' Siiski peab 'Course_ID' olema võõrvõti.

Allpool on toodud süntaks FORIGN KEY-ga tabeli loomiseks

süntaksit:

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 } ] 
);

Siin on ülaltoodud parameetrite kirjeldus:

  • childTable on loodava tabeli nimi.
  • veerg_1, veerg_2- tabelisse lisatavad veerud.
  • fkey_name – loodava võõrvõtme piirangu nimi.
  • lapse_veerg1, lapse_veerg2… lapse_veerg_n- ChidTable veergude nimed, mis viitavad vanematetabeli primaarvõtmele.
  • parentTable- ülemtabeli nimi, mille võtmele alamtabelis viidatakse.
  • vanem_veerg1, vanem_veerg2, … vanem_veerg3- veerud, mis moodustavad ematabeli primaarvõtme.
  • KUSTUTAMISEL. Valikuline parameeter. See määrab, mis juhtub alamandmetega pärast vanemaandmete kustutamist. Mõned selle parameetri väärtused hõlmavad NO ACTION, SET NULL, CASCADE või SET DEFAULT.
  • ON UPDATE – valikuline parameeter. See määrab, mis juhtub alamandmetega pärast vanemaandmete värskendamist. Mõned selle parameetri väärtused hõlmavad NO ACTION, SET NULL, CASCADE või SET DEFAULT.
  • MITTE TEGEVUST – kasutatakse koos funktsioonidega ON DELETE ja ON UPDATE. See tähendab, et pärast vanemaandmete värskendamist või kustutamist ei juhtu alamandmetega midagi.
  • CASCADE- kasutatakse koos funktsioonidega ON DELETE ja ON UPDATE. Lapseandmed kas kustutatakse või värskendatakse pärast vanemaandmete kustutamist või värskendamist.
  • SET NULL- kasutatakse koos funktsioonidega ON DELETE ja ON UPDATE. Pärast vanemaandmete värskendamist või kustutamist määratakse laps nulliks.
  • SET DEFAULT – kasutatakse koos funktsioonidega ON DELETE ja ON UPDATE. Alamandmetele seatakse pärast lähteandmete värskendamist või kustutamist vaikeväärtused.

Vaatame SQL-i võõrvõtme näidet, et luua tabel, kus on üks veerg VÄLISVÕTMENA:

Võõrvõti SQL-i näites

Päring:

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

Step 1) Käivitage päring, klõpsates käsul Käivita.

Võõrvõti SQL-is

Tulemus: Oleme seadnud vanema-lapse suhte "Kursus" ja 'Course_strength_TSQL.'

Võõrvõti SQL-is

Kasutades ALTER TABLE

Nüüd õpime, kuidas kasutada SQL-is võõrvõtit ja lisada SQL-serveris võõrvõtit lause ALTER TABLE abil, kasutame allpool toodud süntaksit:

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);

Siin on ülaltoodud parameetrite kirjeldus:

  • childTable on loodava tabeli nimi.
  • veerg_1, veerg_2- tabelisse lisatavad veerud.
  • fkey_name – loodava võõrvõtme piirangu nimi.
  • lapse_veerg1, lapse_veerg2… lapse_veerg_n- ChidTable veergude nimed, mis viitavad vanematetabeli primaarvõtmele.
  • parentTable- ülemtabeli nimi, mille võtmele alamtabelis viidatakse.
  • vanem_veerg1, vanem_veerg2, … vanem_veerg3- veerud, mis moodustavad ematabeli primaarvõtme.

Tabeli muutmise võõrvõtme lisamise näide:

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

Oleme loonud osakonna tabelis võõrvõtme nimega fkey_student_admission. See võõrvõti viitab õpilaste tabeli vastuvõtuveerule.

Näidispäring VÄLISVÕTI

Esiteks vaatame meie vanemate tabeli andmeid, KURSUS.

Päring:

SELECT * from COURSE;

Näidispäring VÄLISVÕTI

Nüüd lisame alamtabelisse mõne rea: 'Course_strength_TSQL.'

Proovime sisestada kahte tüüpi ridu

  1. Esimene tüüp, mille jaoks alatabeli Course_Id eksisteerib ülemtabeli Course_Id. st Course_Id = 1 ja 2
  2. Teine tüüp, mille puhul Kursuse_ID alamtabelis ei eksisteeri tabelis Parent Course_Id. st Course_Id = 5

Päring:

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

Näidispäring VÄLISVÕTI

Tulemus: Käivitame koos päringu, et näha meie vanema ja lapse tabelit

Rida Course_ID 1 ja 2-ga on tabelis Course_strength olemas. Kusjuures Course_ID 5 on erand.

Näidispäring VÄLISVÕTI

kokkuvõte

  • Iga võõrvõtme väärtus peab olema osa Esmane võti teistest tabelitest.
  • . MySQL Võõrvõti võib viidata sama tabeli teisele veerule. Seda viidet tuntakse eneseviitena.
  • SQL-i välisvõtme piirang : kasutatakse tabelite ja kehtetute andmete vaheliste linkide turvamiseks, mis lisatakse veergu võõrvõti.
  • Võõrvõtme saate luua kasutades Loo tabel, Muuda tabelit või SQL Serveri haldusstuudio.
  • Siin on erinevus esmase võtme ja võõrvõtme vahel: Kliki siia