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

Kuidas luua SQL-is VÄLISVÕTI
Saame luua a võõrvõti SQL-serveris 2 viisi:
- SQL Serveri haldusstuudio
- 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.
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…
Step 2) Sisestage kahe veeru nimi "Course_ID" ja "Course_strength". Paremklõpsake veerus Course_Id. Nüüd klõpsake nuppu Suhe.
Step 3) In 'Välissuhe,' Klõpsake 'Lisama'
Step 4) Klõpsake jaotises "Tabeli ja veeru spetsifikatsioonid" nuppu '…' ikoon
Step 5) Valige rippmenüüst "Primary Key Table" kui "KURSUS" ja uus tabel, mida praegu luuakse kui "Võõrvõtmete tabel".
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.
Step 7) Klõpsake Lisa.
Step 8) Andke tabeli nimeks "Course_strength" ja klõpsake nuppu OK.
Tulemus: Oleme seadnud vanema-lapse suhte "Kursus" ja Kursuse_tugevus.
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.
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.
Tulemus: Oleme seadnud vanema-lapse suhte "Kursus" ja 'Course_strength_TSQL.'
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üüd lisame alamtabelisse mõne rea: 'Course_strength_TSQL.'
Proovime sisestada kahte tüüpi ridu
- Esimene tüüp, mille jaoks alatabeli Course_Id eksisteerib ülemtabeli Course_Id. st Course_Id = 1 ja 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');
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.
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