Elsődleges kulcsok létrehozása. Kényszer PRIMARY KEY Elsődleges kulcs szintaxisa

Ebben a cikkben megpróbálunk mindent megvizsgálni, ami a kulcsokkal kapcsolatos SQL: mire való a kulcsok létrehozása és korlátozása? Általában: unalmas lesz 😉

A mai terv a következő:

A relációs adatbázis elméletben - kulcsok Ezek bizonyos entitások, amelyeket bizonyos korlátozások létrehozására hoztak létre, amelyek fenntartják az adatbázistáblákban lévő adatok integritását és elérhetőségét.

Egyszerű szavakkal: a kulcsok bent vannak sql jönnek létre, hogy jelezzék egy oszlop további funkcióit. Legyen szó egyediségről vagy arról, hogy az oszlop egy másik táblára hivatkozik (idegen kulcs).

Elsődleges kulcs

Egy oszlop, amelynek egyedinek kell lennie az adatbázisban, elsődleges kulccsal van megjelölve. Az elsődleges kulcs vagy elsődleges kulcs azt jelenti, hogy az elsődleges kulcs oszlopának értéke nem ismételhető meg a táblázatban. Így ez a kulcs lehetővé teszi egy rekord egyedi azonosítását a táblázatban anélkül, hogy félne attól, hogy az oszlopérték megismétlődik. Csak egy példa: tegyük fel, hogy van felhasználói táblázata. Ez a táblázat a következő mezőket tartalmazza: teljes név, születési év, telefonszám. Hogyan lehet azonosítani a felhasználót? Az olyan paraméterekben, mint a teljes név és a telefonszám, nem lehet megbízni. Hiszen nem csak azonos vezetéknévvel, hanem azonos keresztnévvel is több felhasználónk lehet. A telefonszám idővel változhat, és előfordulhat, hogy a telefonszámmal rendelkező felhasználó nem az adatbázisunkban szerepel.

Ezért találták fel az elsődleges kulcsot. Miután hozzárendelt egy egyedi azonosítót, és ennyi. BAN BEN mySql melynek példáján az összes terepen vett példát végrehajtjuk AUTO_INCREMENT nem állítható be, hacsak nem jelzi, hogy ez elsődleges kulcs.

Szerintem nem érdemes megemlíteni, hogy az elsődleges kulcsként megjelölt mező nem lehet üres rekord készítésekor.

Külső kulcs ( idegen kulcs)

Van még néhány külső kulcs (idegen kulcs). Referenciának is nevezik. A táblázatok összekapcsolásához szükséges.

Ha megnézi a fenti képet, az idegen kulcs a beszállító mező lesz a cipőtáblában. A táblázat létrehozásakor általában egyedi egész értékeket tartalmazó oszlopot ad meg. Hogyan csináltuk, amikor létrehoztuk a táblázatot támogató

Oszlop beszállítói_azonosító minden bejegyzésnél egyedi lesz. Ennek értéke megjelenik az oszlopban szolgáltató az asztalban cipő. Azt javaslom, hogy azonnal nézzen meg egy példát az idegen kulcs létrehozására.

Idegen kulcs létrehozása

tábla cipő létrehozása(shoes_id int auto_increment elsődleges kulcs, cím szövege, méret int, ár float, count int, típus varchar(30), beszállító int, idegen kulcs (szállító) referenciák szállító (szállító_azonosítója));

Amint a fenti példában látható, az idegen kulcs létrehozásának szintaxisa meglehetősen egyszerű. Hozzá kell adnia egy mezőt a táblázathoz, majd ezt a mezőt idegen kulcsként kell deklarálnia, és meg kell adnia, hogy hova fog hivatkozni. Ebben az esetben a mező támogató mezőre fog vonatkozni beszállítói_azonosító az asztalban támogató

Kompozit kulcs (összetett kulcs)

Ami az összetett kulcsot illeti, ez több elsődleges kulcs egy táblázatban. Így létrehozva összetett kulcs, a rekord egyediségét a kulcsba egyesített mezők ellenőrzik.

Vannak olyan helyzetek, amikor egy táblázatba történő beszúrás során egyszerre több mező használatával kell ellenőriznie egy rekord egyediségét. Ezért találták ki az összetett kulcsot. Például létrehozok egy egyszerű táblázatot összetett kulcs a szintaxis megjelenítéséhez:

Táblázat létrehozása teszt(mező_1 int, mező_2 szöveg, mező_3 bigint, elsődleges kulcs (mező_1, mező_3));

A fenti példában két mezőt egy összetett kulcsba egyesítünk, és a táblázatban nem lesznek rekordok ezekkel az azonos mezőkkel.

Ennyi a kulcsokról SQL. Ez a kis oktatóanyag a cikk előkészítése, ahol részletesen megvizsgáljuk, hogyan lehet a táblákat úgy kombinálni, hogy azok egyetlen adatbázist alkossanak.

ARRA VONATKOZIK: SQL Server (2016 óta)Azure SQL DatabaseAzure SQL Data WarehouseParallel Data Warehouse

Az SQL Server 2016-ban az SQL Server Management Studio vagy a Transact-SQL használatával határozhat meg elsődleges kulcsot. Az elsődleges kulcs létrehozása automatikusan létrehozza a megfelelő egyedi fürtözött vagy nem fürtözött indexet.

Ebben a részben

    Mielőtt elkezdené, hajtsa végre a következő lépéseket.

    Korlátozások

    Biztonság

    Hozzon létre egy elsődleges kulcsot a következő használatával:

    SQL Server Management Studio

Korlátozások

    Egy táblának csak egy elsődleges kulcs megkötése lehet.

    Az ELSŐDLEGES KULCS-megkötéssel rendelkező összes oszlop NEM lehet NULL. Ha nincs megadva semmisség, akkor a NOT NULL jelző minden olyan oszlophoz be van állítva, amelynél az ELSŐDLEGES KULCS megszorítása van.

Biztonság

Engedélyek

Új tábla elsődleges kulccsal történő létrehozásához CREATE TABLE engedély szükséges az adatbázisban és ALTER engedély a sémán, amelyben a tábla létrejön.

Az elsődleges kulcs létrehozásához egy meglévő táblán ALTER engedély szükséges a táblához.

Elsődleges kulcs létrehozása

    Az Objektumkezelőben kattintson a jobb gombbal arra a táblára, amelyhez egyedi kényszert kíván hozzáadni, és válassza ki Konstruktőr.

    BAN BEN Asztaltervező Kattintson annak az adatbázisoszlopnak a sorválasztójára, amelyet elsődleges kulcsként kíván megadni. Több oszlop kijelöléséhez tartsa lenyomva a CTRL billentyűt, és kattintson a többi oszlop sorválasztóira.

    Kattintson a jobb gombbal az Oszlopsorválasztóra, és válassza ki Állítsa be az elsődleges kulcsot.

A kulcsforrás oszlopot az elsődleges kulcs szimbólum azonosítja a megfelelő sorválasztóban.

Ha az elsődleges kulcs egynél több oszlopból áll, akkor egy oszlopban ismétlődő értékek lehetnek, de az elsődleges kulcs összes oszlopából származó értékkombinációknak egyedinek kell lenniük.

Ha összetett kulcsot definiál, az elsődleges kulcsban lévő oszlopok sorrendje megegyezik a táblázatban látható oszlopok sorrendjével. Az elsődleges kulcs létrehozása után azonban az oszlopok sorrendje módosítható. További információért lásd:.

Hozzon létre egy elsődleges kulcsot egy meglévő táblán

    BAN BEN Object Explorer

    Hozzon létre egy kérést.

    Végrehajtás. Ez a példa létrehoz egy elsődleges kulcsot a Tranzakcióazonosító oszlopban.

    HASZNÁLATA AdventureWorks2012; MEGY ALTER TABLE Production.TransactionHistoryArchive ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID ELSŐDLEGES KULCS CLUSTERED (TransactionID); MEGY

Hozzon létre egy elsődleges kulcsot egy új táblában

    BAN BEN Object Explorer Csatlakozzon az adatbázismotor egy példányához.

    A szabványos panelen válassza a lehetőséget Hozzon létre egy kérést.

    Másolja a következő példát a lekérdező ablakba, és kattintson a gombra Végrehajtás. Ez a példa létrehoz egy táblát, és meghatároz egy elsődleges kulcsot a Tranzakcióazonosító oszlophoz.

    HASZNÁLATA AdventureWorks2012; MEGY TÁBLÁZAT LÉTREHOZÁSA Production.TransactionHistoryArchive1 (TransactionID int NOT NULL , CONSTRAINT PK_TransactionHistoryArchive_TransactionID ELSŐDLEGES KULCS CLUSTERED (Tranzakcióazonosító)); MEGY

    További információkért lásd a és a szakaszokat.

Bemutatom figyelmükbe az SQL kezdőknek, 2. rész című cikk ingyenes fordítását

Minden webfejlesztő számára fontos, hogy kommunikálni tudjon adatbázisokkal. A második részben folytatjuk a nyelvtanulást SQLés alkalmazzuk képességeinket a DBMS-re MySQL. Megvizsgáljuk az indexeket, az adattípusokat és az összetettebb lekérdezéseket.

Amire szükséged van

Kérjük, olvassa el az első rész "Mire van szüksége" című részét, amely található.

Ha ezeket a példákat szeretné futtatni a szerverén, tegye a következőket:

  1. Nyissa meg a konzolt MySQLés jelentkezz be.
  2. A lekérdezés segítségével hozza létre a "my_first_db" adatbázist TEREMT, ha korábban nem jött létre.
  3. Cserélje ki az alapot a kezelő segítségével HASZNÁLAT.

Indexek

Az indexeket (vagy kulcsokat) általában arra használják, hogy javítsák az adatokat (pl. KIVÁLASZTÁS) a táblázatokból.

A jó adatbázis-architektúra fontos részét képezik, nehéz őket "optimalizálásnak" minősíteni. Általában az indexeket kezdetben hozzáadják, de később egy lekérdezéssel is hozzáadhatók ALTER TABLE.

Az adatbázis-oszlopok indexelésének fő okai a következők:

  • Szinte minden táblának van elsődleges kulcsa ( ELSŐDLEGES KULCS), általában ez az „id” oszlop.
  • Ha egy oszlop egyedi értékek tárolására szolgál, akkor egyedi indexszel kell rendelkeznie ( EGYEDI).
  • Ha gyakori keresésre van szüksége egy oszlopban (mondatban használva AHOL), rendszeres indexnek kell lennie ( INDEX).
  • Ha egy oszlopot egy másik táblához való kapcsolódásra használunk, akkor lehetőleg idegen kulcsnak kell lennie ( IDEGEN KULCS) vagy normál index.

Elsődleges kulcs (PRIMARY KEY)

Szinte minden táblának van elsődleges kulcsa, általában egész szám automatikus növelési lehetőséggel ( AUTO_INCREMET).

Az allekérdezések gyakran jelentős teljesítménycsökkenést okoznak, ezért óvatosan használja őket.

UNION: Az adatok egyesítése

Lekérdezés használata UNIÓ, több SELECT lekérdezés eredményeit kombinálhatja.

Ez a példa az "N" betűvel kezdődő állapotokat a nagyobb populációkkal rendelkező állapotokkal kombinálja:

(SELECT * FROM állapotok WHERE név LIKE "n%") UNION (SELECT * FROM állapotok WHERE népesség > 10000000);

Felhívjuk figyelmét, hogy New York egy nagy állam, és "N" betűvel kezdődik. A listában azonban csak egyszer szerepel, mert a másolatok automatikusan törlődnek.

A kérések szépsége is UNIÓ az, hogy használhatók a különböző táblák lekérdezésének kombinálására.

Például van táblázatunk az alkalmazottakról (alkalmazottak), a vezetőkről (menedzserekről) és az ügyfelekről (ügyfelekről). Minden táblázatnak van egy mezője egy e-mail címmel. Ha az összes e-mail címet egy kérésben szeretnénk megkapni, a következőket tehetjük:

(VÁLASSZON e-mailt az alkalmazottaktól) UNION (SELECT email FROM FROM FROM) UNION (SELECT email FROM FROM FROM WHERE subscribed = 1);

A kérés teljesítésével minden alkalmazott és vezető levelezési címét megkapjuk, és csak azoknak az ügyfeleknek, akik feliratkoztak a levelezőlistára.

INSERT Folytatás

A kérésről már beszéltünk BESZÁLLÍTÁS az előző cikkben. Most, hogy megvizsgáltuk az indexeket, további lekérdezési lehetőségekről beszélhetünk BESZÁLLÍTÁS.

BESZÁLLÍTÁS A KULCS FRISSÍTÉSÉRE

Ez a leggyakrabban használt állapot. Először a kérés megpróbálja végrehajtani BESZÁLLÍTÁS, és ha a kérés egy duplikált elsődleges ( ELSŐDLEGES KULCS) vagy egyedi ( EGYEDI KULCS) gombot, akkor a kérés végrehajtásra kerül FRISSÍTÉS.

Először készítsünk egy teszttáblát.

Ez egy élelmiszertároló asztal. A „készlet” mező a készleten lévő termékek számát tárolja.

Most próbáljunk meg egy meglévő értéket beszúrni a táblázatba, és nézzük meg, mi történik.

Hibaüzenetet kaptunk.

Tegyük fel, hogy kaptunk egy új pékséget, és szeretnénk frissíteni az adatbázist, de nem tudjuk, hogy van-e már bejegyzés az adatbázisban. Először ellenőrizhetjük a rekord meglétét, majd futtathatunk egy újabb beszúrási lekérdezést. Vagy mindent megtehet egyetlen egyszerű lekérdezéssel:

Ugyanúgy működik, mint BESZÁLLÍTÁS, de egy fontos tulajdonsággal. Ha a rekord már létezik, akkor törlődik, majd a lekérdezés végrehajtásra kerül BESZÁLLÍTÁS, és nem kapunk hibaüzenetet.

Felhívjuk figyelmét, mert teljesen új sor kerül beillesztésre, az autoinkrement mező eggyel nő.

Ezzel megelőzheti a duplikációs hibák előfordulását az alkalmazás futása érdekében. Előfordulhat, hogy hiba nélkül kell beszúrnia egy új sort, még akkor is, ha duplikált.

Nincsenek hibák vagy frissített sorok.

Adattípusok

A táblázat minden oszlopának meghatározott típusúnak kell lennie. Használtunk már típusokat INT, VARCHARÉs DÁTUM, de nem foglalkozott velük részletesen. Megvizsgálunk néhány további adattípust is.

Kezdjük a numerikus adattípusokkal. Két csoportra osztom őket: egészek és törtek.

Egész

Egy egész oszlop csak természetes számokat tárolhat (tizedespont nélkül). Alapértelmezés szerint lehetnek pozitívak vagy negatívak. Ha az opció ki van választva ALÁÍRÁS NÉLKÜLI, akkor csak pozitív számok tárolhatók.

A MySQL 5 különböző méretű és tartományú egész számot támogat:

Törtszámú adattípusok

Ezek a típusok törtszámokat tárolhatnak: FLOAT, DOUBLE és DECIMAL.

A FLOAT 4 bájtot vesz fel, a DOUBLE 8 bájtot és hasonló az előzőhöz. A DOUBLE pontosabb.

DECIMAL(M,N) változó pontosságú. M a számjegyek maximális száma, N a tizedesvessző utáni számjegyek száma.

Például a DECIMAL(13,4) 9 tizedesjegyből és 4 tizedesjegyből áll.

Karakterlánc adattípusok

A névből kitalálható, hogy tárolhatják a karakterláncokat.

A CHAR(N) N karaktert tud tárolni, és fix értéke van. Például a CHAR(50)-nek soronként mindig 50 karaktert kell tartalmaznia a teljes oszlopban. A lehetséges maximális érték 255 karakter

A VARCHAR(N) ugyanúgy működik, de a tartomány változhat. N - a maximális értéket jelöli. Ha a tárolt karakterlánc rövidebb, mint N karakter, akkor kevesebb helyet foglal el a merevlemezen. A maximális lehetséges érték 65535 karakter.

A TEXT típusú változatok alkalmasabbak hosszú karakterláncokhoz. A TEXT maximum 65535 karakter, a MEDIUMTEXT 16,7 millió, a LONGTEXT pedig 4,3 milliárd karakter. A MySQL általában külön tárolókban tárolja őket a szerveren, hogy a fő tárhely a lehető legkisebb és leggyorsabb legyen.

.

Következtetés

Köszönöm, hogy elolvastad a cikket. Az SQL fontos nyelv és eszköz a webfejlesztők arzenáljában.

A primer kulcs egy mező a táblázatban, amely egyedileg azonosítja az adatbázistábla minden sorát/rekordját. Az elsődleges kulcsoknak egyedi értékeket kell tartalmazniuk. Az elsődleges kulcs oszlopának nem lehet értéke.

Egy táblának csak egy elsődleges kulcsa lehet, amely egy vagy több mezőből állhat. Ha több mezőt használnak elsődleges kulcsként, azokat összetett kulcsnak nevezik.

Ha egy tábla bármely mezőjénél elsődleges kulcs van definiálva, akkor nem lehet két azonos értékű rekord az adott mező(k)hez.

jegyzet– Ezeket a fogalmakat használhatja adatbázistáblák létrehozásakor.

Elsődleges kulcs létrehozása

Itt található a szintaxis az ID attribútum elsődleges kulcsként történő meghatározásához a Vevők táblában.

TÁBLÁZAT ÜGYFELEK LÉTREHOZÁSA (AZONOSÍTÓ INT NEM NULL, VARCHAR NÉV (20) NEM NULL, KOR INT NEM NULL, CÍM CHAR (25) , TIZESES BÉR (18, 2), ELSŐDLEGES KULCS (ID));

Ha az "ID" oszlopban szeretne létrehozni egy elsődleges kulcs kényszert, amikor a CUSTOMERS tábla már létezik, használja a következő SQL-szintaxist:

ALTER TABLE ÜGYFELEK ELSŐDLEGES KULCS (ID) hozzáadása;

jegyzet

Ha az ALTER TABLE utasítást használja az elsődleges kulcs hozzáadásához, akkor az elsődleges kulcs oszlopa(i)nak már deklaráltnak kell lenniük NULL értékeket nem tartalmazónak (ha a táblázatot először hozták létre).

Ha több oszlopon szeretne elsődleges kulcsot megadni, használja az alábbi SQL szintaxist:

TÁBLÁZAT ÜGYFELEK LÉTREHOZÁSA (AZONOSÍTÓ INT NEM NULL, VARCHAR NÉV (20) NEM NULL, KOR INT NEM NULL, CÍM CHAR (25) , TIZESES BÉR (18, 2), ELSŐDLEGES KULCS (ID, NÉV));

Ha a CUSTOMERS tábla már létezik, az ID és a NAME oszlopokban elsődleges kulcskényszert szeretne létrehozni, használja a következő SQL-szintaxist.

A TÁBLÁZAT MÓDOSÍTÁSA AZ ÜGYFELEK MEGADÁSA A PK_CUSTID ELSŐDLEGES KULCSOT (AZONOSÍTÓ, NÉV);

Elsődleges kulcs törlése

Az alábbi szintaxis használatával törölheti az elsődleges kulcs megszorításait egy táblázatból.

ALTER TABLE ÜGYFELEK ELADÁSA ELSŐDLEGES KULCS;

Az adatbázis tervezési folyamat során döntés születik arról, hogy mely táblák kerüljenek be az adatbázisba, milyen nevekkel (azonosítókkal) rendelkezzenek, milyen típusú adatokra lesz szükség a táblák felépítéséhez, és milyen felhasználók férhetnek hozzá az egyes táblákhoz. . Ezenkívül a táblázatok hatékony létrehozásához meg kell válaszolnia a következő kérdéseket:

  • Milyen típusú és méretű oszlopok alkotják az egyes táblákat, és milyen neveket válasszunk a táblázat oszlopainak?
  • Mely oszlopok tartalmazhatnak NULL értéket?
  • Használják majd? integritási korlátok, alapértelmezett értékek és szabályok az oszlopokhoz?
  • Szükséges-e az oszlopok indexelése, milyen típusú indexeket fognak alkalmazni az egyes oszlopokra?
  • Mely oszlopok fognak szerepelni az elsődleges és az idegen kulcsban.

Táblázatok létrehozásához az MS SQL Server környezetben használja a következő parancsot:

<определение_таблицы>::= TÁBLÁZAT LÉTREHOZÁSA [ adatbázis_neve.[tulajdonos]. | tulajdonos. ]tábla_neve (<элемент_таблицы>[,...n])

<элемент_таблицы> ::= {<определение_столбца>} | <имя_столбца>MINT<выражение> | <ограничение_таблицы>

Általában a tábla tulajdonosa (dbo) az a személy, aki létrehozta.

<Выражение>értékét állítja be számított oszlop. Számított oszlopok- ezek virtuális oszlopok, azaz fizikailag nem tárolódnak a táblázatban, és ugyanazon táblázat oszlopainak értékei alapján számítják ki őket. A kifejezésben számított oszlop lehetnek szabályos oszlopnevek, konstansok és egy vagy több operátor által kötött függvények. Az allekérdezések nem vehetnek részt egy ilyen kifejezésben. Számított oszlopok szerepelhet egy SELECT záradékban, amikor megadjuk a lekérdezés eredményeként visszaadandó oszlopok listáját. Számított oszlopok nem szerepelhetnek idegen kulcsban, az alapértelmezett értékek nem használatosak. Kívül, számított oszlopok nem vehet részt az INSERT és DELETE műveletekben.

<определение_столбца>::= ( oszlop_neve<тип_данных>) [ [ ALAPÉRTÉKELÉS<выражение>] | [ AZONOSÍTÁS (kezdet, lépés) ]]] [<ограничение_столбца>][...n]]

Az oszlopdefinícióban ügyeljen az IDENTITY paraméterre, amely azt jelzi, hogy a megfelelő oszlop lesz ellenoszlop. Táblánként csak egy oszlop definiálható ezzel a tulajdonsággal. Ezenkívül megadhatja a kezdeti értéket és a növekmény lépését. Ha ezek az értékek nincsenek megadva, akkor mindkettő alapértelmezés szerint 1. Ha az IDENTITY kulcsszónál a NOT FOR REPLICATION van megadva, a szerver nem generál automatikusan értékeket az oszlophoz, hanem lehetővé teszi tetszőleges értékek beszúrását az oszlopba. az oszlop.

Az alkalmazott korlátozások a következők oszlop korlátozásokÉs táblázat korlátozások. A különbség köztük az oszlop kényszer csak egy meghatározott területre vonatkozik, és táblázat megkötése- egy vagy több mezőből álló csoportokhoz.

<ограничение_столбца>::= [ CONSTRAINT kényszernév ] ( [ NULL | NEM NULL ] | [ (PRIMER KULCS | EGYEDI ) [ CLASZTERES | NEM CLUSTERED ] [ WITH FILLFACTOR=fillfactor ] [ ON (fájlcsoportnév | ALAPÉRTELMEZETT ) ] ] REFERENGN ] | táblázat_genus_neve [(oszlop_neve_táblázatnemzetség) ] [ TÖRLÉS BE ( LÉPTETÉS | NINCS MŰVELET ) ] [ FRISSÍTÉS ( LÉPTETÉS | NINCS MŰVELET ) ] [ NEM REPLIKÁLÁSRA ]] | ELLENŐRZÉS [ NINCS REPLIKÁLÁSHOZ ](<лог_выражение>) } <ограничение_таблицы>::= ( [ (PRIMARY KEY | EGYEDI ) [ CLUSZTERES | NONCLUSTERED ] ((oszlop_neve [,...n])) ] |IDEGEN KULCS[(oszlopnév [,...n])] HIVATKOZÁSOK táblázat_neve [(oszlop_neve táblázat_gen [ ,...n])] [ TÖRLÉS BE ( LÉPTETÉS | NINCS MŰVELET ) ] [ FRISSÍTÉS ( LÉPTETÉS | NINCS MŰVELET ) ] | NEM REPLIKÁLÁSRA ] | ELLENŐRZÉS [ NEM REPLIKÁLÁSRA ] (logikai kifejezés) )

Tekintsük a bemutatott tervek egyes, korlátozásokhoz kapcsolódó paramétereit adatintegritás. Integritási korlátozások elsőbbséget élveznek a triggerekkel, szabályokkal és alapértelmezett értékekkel szemben. NAK NEK integritási korlátok viszonyul elsődleges kulcs megszorítása ELSŐDLEGES KULCS idegen kulcs kényszer IDEGEN KULCS, EGYEDI kényszer, NULL kényszer, ELLENŐRIZNI kényszer.

Elsődleges kulcs kényszer (PRIMARY KEY)

A táblázat általában egy oszlopot vagy oszlopkombinációt tartalmaz, amelyek értékei egyedileg azonosítják a táblázat minden sorát. Ezt az oszlopot (vagy oszlopokat) hívják elsődleges kulcs táblázat, és az integritásának biztosításához szükséges. Ha az elsődleges kulcs egynél több oszlopot tartalmaz, akkor az egy oszlopon belüli értékek megkettőzhetők, de az összes oszlop értékeinek bármilyen kombinációja elsődleges kulcs egyedinek kell lennie.

Alkotás közben elsődleges kulcs Az SQL Server automatikusan létrehoz egy egyedi indexet azokon az oszlopokon, amelyek az elsődleges kulcs részét képezik. Felgyorsítja ezeknek az oszlopoknak az adathozzáférését, ha használják elsődleges kulcs kérésekben.

Egy táblának csak egy PRIMARY KEY kényszere lehet, és az elsődleges kulcsban szereplő oszlopok egyike sem lehet NULL. Amikor megpróbálja használni, mint elsődleges kulcs oszlop (vagy oszlopcsoport), amelyre elsődleges kulcs megszorításai nem hajtódnak végre, az elsődleges kulcs nem jön létre, és a rendszer hibaüzenetet jelenít meg.

Mivel az ELSŐDLEGES KULCS megszorítás biztosítja, hogy az adatok egyediek legyenek, gyakran úgy van meghatározva számlálóoszlopok. Teremtés integritási korlátok Az ELSŐDLEGES KULCS a létrehozás során és amikor is lehetséges asztalcsere. Az egyik találkozó elsődleges kulcs az a rendelkezés referenciális integritás adatok több táblázatból. Ez természetesen csak úgy valósítható meg, ha más táblákban a megfelelő idegen kulcsokat definiáljuk.

KÜLFÖLDI KULCS KORLÁTOZÁS

Idegenkulcs kényszer fenntartásának fő mechanizmusa referenciális integritás relációs adatbázis táblái között. A FOREIGN KEY paraméterben idegen kulcsként megadott gyermek táblaoszlop a benne lévő szülő tábla oszlopára hivatkozik. elsődleges kulcs. Szülőtábla neve és oszlopai elsődleges kulcs A REFERENCIÁK záradék határozza meg. Az idegen kulcsként definiált oszlopokban lévő adatok csak ugyanazokat az értékeket tartalmazhatják, mint a hozzá tartozó oszlopokban elsődleges kulcs szülő táblázat. Nem szükséges, hogy az oszlopnevek megegyezzenek a gyermek és a szülő táblák összekapcsolásához. Az elsődleges kulcs egy oszlopon definiálható egy névvel, míg egy olyan oszlop, amelyre IDEGEN KULCS megszorítás vonatkozik, teljesen más névvel rendelkezhet. Az egyetlen követelmény, hogy az oszlopok megfeleljenek az adattípusnak és -méretnek.

Az elsődleges kulcsra nem csak más táblák oszlopai hivatkozhatnak, hanem az elsődleges kulccsal azonos táblában található oszlopok is; ez lehetővé teszi rekurzív struktúrák létrehozását.

Az idegen kulcs nem csak a elsődleges kulcs egy másik asztal. Meghatározható a második tábla EGYEDI oszlopaihoz vagy bármely más oszlophoz, de a tábláknak ugyanabban az adatbázisban kell lenniük.

Az idegen kulcs oszlopai tartalmazhatnak NULL értéket, de a FOREIGN KEY kényszerellenőrzés figyelmen kívül marad. Az idegen kulcs indexelhető, akkor a szerver gyorsabban megtalálja a szükséges adatokat. Az idegen kulcs mind a létrehozáskor, mind az attribútumnál definiálva van pelenkázó asztalok.

Korlátozás referenciális integritás meghatározza azt a követelményt, hogy az utódtábla minden rekordjához legyen egy rekord a szülőtáblában. Ebben az esetben blokkolva van a kapcsolat oszlop értékének megváltoztatása a szülő tábla rekordjában gyermekrekord jelenlétében, valamint a szülőrekord törlése (a lépcsőzetes változtatások és törlések tilalma), amit alapértelmezés szerint garantál. ON DELETE NO ACTION és ON UPDATE NO ACTION paraméterek. A lépcsőzetes effektusok engedélyezéséhez használja az ON DELETE CASCADE és ON UPDATE CASCADE paramétereket.