SQL YABANCI ANAHTAR: Örnekle SQL Server'da Nasıl Oluşturulur
YABANCI ANAHTAR nedir?
A Yabancı anahtar SQL Server'da referans bütünlüğünü güçlendirmenin bir yolunu sağlar. Basit bir ifadeyle yabancı anahtar, bir tablodaki değerlerin başka bir tabloda bulunmasını sağlar.
YABANCI ANAHTAR Kuralları
- SQL Yabancı anahtarında NULL'a izin verilir.
- Başvurulan tabloya Ana Tablo adı verilir
- SQL'de Yabancı Anahtarın bulunduğu tabloya Çocuk Tablosu denir.
- Alt tablodaki SQL Yabancı Anahtarı, üst tablodaki birincil anahtara başvurur.
- Bu ebeveyn-çocuk ilişkisi "Referanslı" olarak bilinen kuralı uygular. Integrity".
Diyagramlı SQL'deki Yabancı Anahtarın Altında örneği, YABANCI ANAHTAR için yukarıdaki tüm noktaları özetler
SQL'de YABANCI ANAHTAR Nasıl Oluşturulur
Bir tane oluşturabiliriz Yabancı anahtar SQL sunucusunda 2 yolları:
- SQL Server Management Studio
- T-SQL
SQL Server Management Studio
Ebeveyn Tablosu: Diyelim ki 'Course' adında mevcut bir Parent tablomuz var. Course_ID ve Course_name, Course_Id'nin Birincil Anahtar olduğu iki sütundur.
Çocuk Masası: İkinci tabloyu çocuk tablo olarak oluşturmamız gerekiyor. 'Course_ID' ve 'Course_Strength' iki sütun olarak. Ancak 'Course_ID' Yabancı Anahtar olacaktır.
) 1 Adım Tablolar>Yeni>Tablo'ya sağ tıklayın…
) 2 Adım 'Course_ID' ve 'Course_Strength' olarak iki sütun adı girin. 'Course_Id' Sütununa sağ tıklayın. Şimdi İlişki'ye tıklayın.
) 3 Adım In 'Yabancı Anahtar İlişkisi',' Tıklamak 'Ekle'
) 4 Adım 'Tablo ve Sütun Özellikleri'nde tıklayın '…' simgesi
) 5 Adım 'DERS' olarak 'Birincil Anahtar Tablosu'nu seçin ve açılır menüden artık yeni tablo 'Yabancı Anahtar Tablosu' olarak oluşturulmaktadır.
) 6 Adım 'Birincil Anahtar Tablosu' – 'Birincil Anahtar tablosu' sütunu olarak 'Course_Id' sütununu seçin.
'Yabancı Anahtar Tablosu' - 'Yabancı Anahtar tablosu' sütunu olarak 'Course_Id' sütununu seçin. Tamam'ı tıklayın.
) 7 Adım Tıklayın Ekleyin.
) 8 Adım Tablo adını 'Course_Strength' olarak verin ve tıklayın Tamam.
Sonuç: Arasında Ebeveyn-çocuk ilişkisini belirledik 'Kurs' ve 'Course_strength'
T-SQL: T-SQL kullanarak Ebeveyn-çocuk tablosu oluşturma
Ebeveyn Tablosu: Tekrar düşünün, tablo adı 'Course' olan mevcut bir Parent tablomuz var.
Course_ID ve Course_name, Course_Id'nin Birincil Anahtar olduğu iki sütundur.
Çocuk Masası: İkinci tabloyu alt tablo olarak 'Course_Strength_TSQL' isminde oluşturmamız gerekiyor.
Course_Strength_TSQL alt tablosu için iki sütun olarak 'Course_ID' ve 'Course_Strength'.' Ancak 'Course_ID' Yabancı Anahtar olacaktır.
YABANCI ANAHTAR ile bir tablo oluşturmak için sözdizimi aşağıdadır
Sözdizimi:
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 } ] );
Yukarıdaki parametrelerin açıklaması aşağıda verilmiştir:
- childTable, oluşturulacak tablonun adıdır.
- sütun_1, sütun_2- tabloya eklenecek sütunlar.
- fkey_name- oluşturulacak yabancı anahtar kısıtlamasının adı.
- çocuk_sütun1, çocuk_sütun2…çocuk_sütun_n- parentTable'daki birincil anahtara başvuruda bulunacak chidTable sütunlarının adı.
- parentTable- anahtarına alt tabloda başvurulacak olan ana tablonun adı.
- ebeveyn_sütun1, ebeveyn_sütun2, … ebeveyn_sütun3- üst tablonun birincil anahtarını oluşturan sütunlar.
- SİLİNME DURUMUNDA. İsteğe bağlı bir parametre. Ana verilerin silinmesinden sonra alt verilere ne olacağını belirtir. Bu parametreye ilişkin değerlerden bazıları NO ACTION, SET NULL, CASCADE veya SET DEFAULT'u içerir.
- GÜNCELLEMEDE- İsteğe bağlı bir parametre. Ana veriler güncellendikten sonra alt verilere ne olacağını belirtir. Bu parametreye ilişkin değerlerden bazıları NO ACTION, SET NULL, CASCADE veya SET DEFAULT'u içerir.
- EYLEM YOK - ON DELETE ve ON UPDATE ile birlikte kullanılır. Bu, ana verilerin güncellenmesi veya silinmesinden sonra alt verilere hiçbir şey olmayacağı anlamına gelir.
- CASCADE- ON DELETE ve ON UPDATE ile birlikte kullanılır. Ana veriler silindikten veya güncellendikten sonra alt veriler silinecek veya güncellenecektir.
- SET NULL - ON DELETE ve ON UPDATE ile birlikte kullanılır. Ana veriler güncellendikten veya silindikten sonra alt öğe null değerine ayarlanacaktır.
- SET DEFAULT - ON DELETE ve ON UPDATE ile birlikte kullanılır. Ana verilerde güncelleme veya silme sonrasında alt veriler varsayılan değerlere ayarlanacaktır.
Bir Sütunlu bir tabloyu YABANCI ANAHTAR olarak oluşturmak için SQL örneğinde bir Yabancı Anahtar görelim:
SQL örneğinde Yabancı Anahtar
Sorgu:
CREATE TABLE Course_Strength_TSQL ( Course_ID Int, Course_Strength Varchar(20) CONSTRAINT FK FOREIGN KEY (Course_ID) REFERENCES COURSE (Course_ID) )
) 1 Adım Yürüt seçeneğine tıklayarak sorguyu çalıştırın.
Sonuç: Arasında Ebeveyn-çocuk ilişkisini belirledik 'Kurs' ve 'Course_strength_TSQL.'
ALTER TABLE'ı kullanma
Şimdi SQL'de Yabancı Anahtar kullanımını ve ALTER TABLE deyimini kullanarak SQL sunucusuna Yabancı Anahtar eklemeyi öğreneceğiz, aşağıda verilen sözdizimini kullanacağız:
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);
Yukarıda kullanılan parametrelerin açıklaması aşağıda verilmiştir:
- childTable, oluşturulacak tablonun adıdır.
- sütun_1, sütun_2- tabloya eklenecek sütunlar.
- fkey_name- oluşturulacak yabancı anahtar kısıtlamasının adı.
- çocuk_sütun1, çocuk_sütun2…çocuk_sütun_n- parentTable'daki birincil anahtara başvuruda bulunacak chidTable sütunlarının adı.
- parentTable- anahtarına alt tabloda başvurulacak olan ana tablonun adı.
- ebeveyn_sütun1, ebeveyn_sütun2, … ebeveyn_sütun3- üst tablonun birincil anahtarını oluşturan sütunlar.
Tabloyu değiştir Yabancı Anahtar örneğini ekleyin:
ALTER TABLE department ADD CONSTRAINT fkey_student_admission FOREIGN KEY (admission) REFERENCES students (admission);
Departman tablosunda fkey_student_admission adında bir yabancı anahtar oluşturduk. Bu yabancı anahtar, öğrenci tablosunun kabul sütununa referans verir.
Örnek Sorgu YABANCI ANAHTAR
Öncelikle Ebeveyn Tablosu Verilerimizi, COURSE'u görelim.
Sorgu:
SELECT * from COURSE;
Şimdi Çocuk tablosuna bir satır ekleyelim: 'Course_strength_TSQL.'
İki tür satır eklemeye çalışacağız
- Alt tablodaki Course_Id'nin bulunduğu ilk tür, Parent tablosunun Course_Id'sinde bulunacaktır. yani Course_Id = 1 ve 2
- Alt tablodaki Course_Id'nin Parent tablosunun Course_Id'sinde bulunmadığı ikinci tür. yani Course_Id = 5
Sorgu:
Insert into COURSE_STRENGTH values (1,'SQL'); Insert into COURSE_STRENGTH values (2,'Python'); Insert into COURSE_STRENGTH values (5,'PERL');
Sonuç: Ebeveyn ve Çocuk tablomuzu görmek için Sorguyu birlikte çalıştıralım
Course_ID 1 ve 2'yi içeren satır Course_strength tablosunda mevcuttur. Oysa Course_ID 5 bir istisnadır.
ÖZET
- Yabancı anahtarın her değeri, Birincil anahtar diğer tablolardan.
- The MySQL Yabancı Anahtar aynı tablodaki başka bir sütuna referans verebilir. Bu referans, kendine referans olarak bilinir.
- SQL Yabancı Anahtar Kısıtlaması: Tablolar arasındaki bağlantıların ve Yabancı Anahtar sütununa eklenecek geçersiz verilerin güvenliğini sağlamak için kullanılır.
- Tablo Oluştur, Tabloyu Değiştir veya SQL Server Management Studio.
- Birincil Anahtar ile Yabancı Anahtar arasındaki fark şöyledir: Buraya Tıkla