basics mysql foreign key constraint with examples
Bu eğitici, MySQL FOREIGN KEY Kısıtlamasının sözdizimi, nasıl ekleneceği, bildirileceği, bırakılacağı ve örneklerle nasıl değiştirileceği gibi temellerini açıklar:
Çok basit bir ifadeyle, FOREIGN KEY MySQL'de iki veya daha fazla tabloyu birbirine bağlamak için kullanılır.
Farklı zaman noktalarında çeşitli veri türlerini sorgulamak ve güncellemek için MySQL tablolarının bağlanması gerekir. Bu nedenle, 2 tablo arasında bir bağlantı noktası olması zorunludur.
Bu eğitimde, Yabancı Anahtarların farklı kullanımlarını, nasıl bildirilip değiştirilebileceğini ve genel tablo yapısı üzerinde hangi kısıtlamaları olduğunu tartışacağız.
Ne öğreneceksin:
MySQL YABANCI ANAHTAR
Sözdizimi:
CONSTRAINT {constraintName} FOREIGN KEY (referringColumnName) REFERENCES {referredTable}({referredColumn}) ON UPDATE {reference-option} ON DELETE {reference-option} Yukarıdaki sözdizimi, bir tabloya karşı FOREIGN KEY belirtilirken veya tablo oluşturulurken kullanılan ALTER TABLE ifadesi.
Söz diziminin farklı bileşenlerini anlayalım:
- constrantName: Bu, belirtilen FK kısıtlaması için tanımlamak istediğimiz sembolik addır. Bu atlanırsa, MySQL motoru otomatik olarak FK kısıtlamasına bir ad atar.
- referringColumnName: Bu, başvurulan tablodaki sütun tarafından belirtildiği şekilde başka bir tablodaki değerlere başvuran sütundur.
- Başvurulan tablo / üst tablo: Bu, değerlerin başvurulacağı tablonun adını ifade eder.
- Yönlendirilen Sütun: Başvurulan tablodaki sütun adı.
- Referans seçeneği: Bunlar, yabancı anahtar kısıtlamasını tutan tabloda bir güncelleme veya silme işlemi yapıldığında resme giren eylemlerdir. GÜNCELLEME ve SİLME, aynı veya farklı referans seçeneklerine sahip olabilir.
Bu öğreticide daha sonra farklı referans bütünlük eylemleri hakkında bilgi edineceğiz.
Çalışan / Departman örneğini kullanarak bir YABANCI ANAHTAR referansı örneğini görelim. Sütunlardan oluşan bir Departman tablosu oluşturacağız - departmanId (int & PRIMARY KEY) ve departName (varchar).
CREATE TABLE department(departmentId INT PRIMARY KEY NOT NULL, departmentName VARCHAR(100));Aşağıdaki gibi sütunlarla bir Tablo Çalışanı oluşturun:
| Sütun | Tür |
|---|---|
| İD | INT (Birincil Anahtar) |
| isim | VARCHAR |
| dept_id | Departman tablosundan referans alınan INT (Yabancı Anahtar) |
| adres | VARCHAR |
| yaş | INT |
| dob | TARİH |
CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT, CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE CASCADE ON DELETE CASCADE); Gördüğünüz gibi, yukarıdaki Employee tablosunda, int tipinde deptId kolonunu ilan ettik ve departmanId kolonundaki Department tablosundan FOREIGN KEY'i tanımladık.
Bu, esasen Employee tablosundaki deptId sütununun yalnızca Department tablosundaki değerleri içerebileceği anlamına gelir.
Bu tablolara veri eklemeyi deneyelim ve FOREIGN KEY CONSTRAINT'in nasıl çalıştığını görelim.
- Önce Departman tablosunda bir kayıt oluşturun ve Çalışan tablosuna Departman tablosuna eklenen kaydın kimliğini referans alan bir kayıt ekleyin.
INSERT INTO department VALUES (1, 'ENGINEERING') --------- INSERT INTO EMPLOYEE VALUES (1, 'AMIT KUMAR', 'MUMBAI', 32, '1988-02-12',1); Her iki ifadenin de hatasız olarak yürütüldüğünü göreceksiniz.
- Şimdi departmanId için mevcut olmayan bir değere referans verin.
Örneğin, aşağıdaki sorgu ifadesinde, mevcut olmayan departmanId -10 ile bir Çalışan oluşturuyoruz.
INSERT INTO EMPLOYEE VALUES (1, 'DARREN JOHNSON', 'CHICAGO', 32, '1988-02-12',10);- Bu senaryoda aşağıdaki gibi bir hata alacağız:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`my_sql_foreign_key`.`employee`, CONSTRAINT `depIdFk` FOREIGN KEY (`deptId`) REFERENCES `department` (`departmentId`) ON DELETE CASCADE ON UPDATE CASCADE)Bu nedenle, genel olarak, FOREIGN ANAHTAR Referansları tanımlandığında, referans verilen tablonun referans verilmeden önce verilere sahip olması gerektiğinden emin olmak önemlidir.
Bilgi Bütünlüğü Eylemleri
İlk önce İfade Bütünlüğünün tam olarak ne olduğunu anlamaya çalışalım.
Referans Bütünlüğü, YABANCI ANAHTAR ilişkisine sahip birbirleriyle ilişkili tabloların olduğu yerlerde verilerin temiz ve tutarlı bir durumda tutulmasına yardımcı olur.
Basitçe ifade edersek, Referans Bütünlüğü, YABANCI ANAHTARI içeren başvurulan tabloda bir GÜNCELLEME veya SİLME meydana geldiğinde veritabanı motorundan almasını beklediğimiz Eylemi ifade eder.
Örneğin, Çalışan / Departman örneğimizde, DB'deki belirli bir satır için Departman Kimliğini değiştirdiğimizi varsayalım. Çalışan tablosundaki tüm referans satırları etkilenir. Bu tür durumlarda uygulanabilecek farklı Referans Bütünlüğü senaryoları tanımlayabiliriz.
Not: Bilgi Bütünlüğü, FOREIGN KEY kurulumu / bildirimi sırasında ON DELETE ve ON UPDATE komutlarının / bölümlerinin bir parçası olarak tanımlanır.
Burada örnek bir sorguya bakın (Çalışan / Departman örneği için):
CREATE TABLE department(departmentId INT PRIMARY KEY NOT NULL, departmentName VARCHAR(100)); CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT, CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE {ref-integrity-action} ON DELETE {ref integrity action}); Bu tablolara aşağıdaki gibi bazı veriler ekleyin:
INSERT INTO department VALUES (1, 'ENGINEERING'), (2,'ACCOUNTING'), (3, 'MARKETING'), (4, 'HR'), (5, 'LEGAL'); INSERT INTO EMPLOYEE VALUES (1, 'AMIT KUMAR', 'MUMBAI', 32,'1988-02-12',1), (2, 'RYAN HILMAN', 'SEATTLE',43, '1977-03-15',1), (3, 'KAVITA SINGH', 'DELHI', 42, '1978-02-18',4), (4, 'DAVID BECKHAM', 'LONDON', 40, '1980-07-13',3), (5, 'PRITI KUMARI', 'DELHI', 35, '1985-12-11',2), (6, 'FRANK BALDING', 'NEW YORK', 35, '1985-08-25',5) MySQL tarafından desteklenen 4 Referans Eylemi vardır. Her birini anlamaya çalışalım.
# 1) KADEMELİ
Bu, en sık kullanılan Referans Bütünlüğü Eylemlerinden biridir. DELETE ve UPDATE'in CASCADE olarak ayarlanması, referans tablosundaki referans tabloya, yani Çalışan / Departman örneğinde yapılan değişiklikleri uygular. Birisinin Departman tablosunda departman_adı = HESAP demek zorunda kalan bir satırı sildiğini varsayalım, o zaman Çalışan tablosundaki Muhasebe tablosunun departman_id'si olan tüm satırlar da silinecektir.
Bunu bir örnekle anlayalım:
SELECT * FROM employee;| İD | isim | adres | yaş | dob | DeptId |
|---|---|---|---|---|---|
| 1 | AMİT KUMAR | MUMBAI | 32 | 1988-02-12 | 1 |
| iki | RYAN HILMAN | KOLTUK | 43 | 1977-03-15 | 1 |
| 3 | KAVITA SINGH | DELHI | 42 | 1978-02-18 | 4 |
| 4 | DAVID BECKHAM | LONDRA | 40 | 1980-07-13 | 3 |
| 5 | PRITI KUMARI | DELHI | 35 | 1985-12-11 | iki |
| 6 | FRANK BALDING | NEW YORK | 35 | 1985-08-25 | 5 |
Kaydı, departman adı = 'MUHASEBE' olan Departman tablosundan silin
DELETE from DEPARTMENT WHERE departmentName='ACCOUNTING';Şimdi, bu bir CASCADE Referans eylemi olduğundan, departmanID = 2 olan ('MUHASEBE' departmanı için olan) tüm satırların da silinmesini bekleriz. Employee tablosunda tekrar SELECT sorgusu yapalım.
SELECT * FROM employee;| İD | isim | adres | yaş | dob | DeptId |
|---|---|---|---|---|---|
| 1 | AMİT KUMAR | MUMBAI | 32 | 1988-02-12 | 1 |
| iki | RYAN HILMAN | KOLTUK | 43 | 1977-03-15 | 1 |
| 3 | KAVITA SINGH | DELHI | 42 | 1978-02-18 | 4 |
| 4 | DAVID BECKHAM | LONDRA | 40 | 1980-07-13 | 3 |
| 6 | FRANK BALDING | NEW YORK | 35 | 1985-08-25 | 5 |
Yukarıda görebileceğiniz gibi, CASCADE referans bütünlüğü nedeniyle, silinen sütuna FOREIGN KEY olarak başvuran Çalışan tablosundaki satırlarda bu satırlar silinecektir.
# 2) KISITLAMA / EYLEM YOK
RESTRICT veya NO ACTION modu, bazı tabloda YABANCI ANAHTAR olarak başvurulan sütunlara sahip tabloda herhangi bir GÜNCELLEME veya SİLME işlemine izin vermez.
NO ACTION modu, tablo bildiriminden ON UPDATE ve ON DELETE yan tümcelerinin çıkarılmasıyla uygulanabilir.
Aynı örneği deneyelim ve bu durumda ON UPDATE ve ON DELETE Bilgi tutarlılığı eylemini atlayın.
Şimdi referans verilen tablodaki herhangi bir girişi silmeye çalıştığımızda, referans eylemini RESTRICT olarak ayarladığımızda bir hata alacağız.
DELETE FROM department WHERE departmentName='ACCOUNTING';Yukarıdaki DELETE komutunu çalıştırmayı denerseniz, aşağıdaki gibi bir hata göreceksiniz.
Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`my_sql_foreign_key`.`employee`, CONSTRAINT `depIdFk` FOREIGN KEY (`deptId`) REFERENCES `department` (`departmentId`))# 3) BOŞ AYARLA
SET NULL ile, başvurulan tablodaki herhangi bir UPDATE veya DELETE, referans tablosunda YABANCI ANAHTAR olarak işaretlenen sütun değerine karşı NULL değerinin güncellenmesine neden olur.
Bu referans bütünlük eylemi ile Çalışan tablosunun tanımı aşağıdaki gibi olacaktır:
CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT, CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON DELETE SET NULL); Başvurulan tablodaki bir satırı aşağıda gösterildiği gibi silin:
DELETE FROM department WHERE departmentName='ACCOUNTING';Şimdi, bu durumda, Çalışan tablosundaki başvurulan değer NULL olarak ayarlanacaktır. Sonuçları görmek için Çalışan tablosunda bir SELECT sorgusu yapın.
SELECT * FROM employee;| İD | isim | adres | yaş | dob | DeptId |
|---|---|---|---|---|---|
| 1 | AMİT KUMAR | MUMBAI | 32 | 1988-02-12 | 1 |
| iki | RYAN HILMAN | KOLTUK | 43 | 1977-03-15 | 1 |
| 3 | KAVITA SINGH | DELHI | 42 | 1978-02-18 | 4 |
| 4 | DAVID BECKHAM | LONDRA | 40 | 1980-07-13 | 3 |
| 5 | PRITI KUMARI | DELHI | 35 | 1985-12-11 | BOŞ |
| 6 | FRANK BALDING | NEW YORK | 35 | 1985-08-25 | 5 |
# 4) VARSAYILAN AYARLA
VARSAYILAN AYARLA modu belirtildiğinde, başvurulan tablodaki herhangi bir SİLME durumunda, sütun için varsayılan değerin (sütun bildirimi sırasında belirtildiği gibi) ikame edilmesiyle sonuçlanır.
Not - Göre MySQL Belgeleri , SET DEFAULT seçeneği MySQL Parser tarafından desteklenir, ancak InnoDB gibi DB motorları desteklenmez. Bu gelecekte desteklenebilir.
Ancak, bu tür davranışları desteklemek için, SET NULL kullanmayı düşünebilir ve tabloda varsayılan bir değer ayarlayabilecek bir tetikleyici tanımlayabilirsiniz.
ALTER TABLE İfadesini Kullanarak FOREIGN KEY Kısıtlaması Ekleyin
Çoğu zaman, buna sahip olmayan mevcut bir tabloya bir FOREIGN KEY kısıtlaması eklemek isteyebiliriz.
Çalışan ve Departman örneğinde, herhangi bir FOREIGN KEY kısıtlaması olmadan bir çalışan tablosu oluşturduğumuzu ve daha sonra kısıtlamayı tanıtmak istediğimizi varsayalım. Bu, ALTER TABLE komutu kullanılarak gerçekleştirilebilir.
Bunu bir örnekle anlamaya çalışalım.
CREATE komutu için aşağıdaki tanıma sahip bir Çalışan tablosumuz olduğunu varsayalım.
CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT);Burada bir column deptId var ama FOREIGN KEY kısıtlaması yok. Bu durumda Departman tablosu olmasa bile kayıt eklerken herhangi bir değer belirtebiliriz.
Şimdi, daha sonra ayrı bir Departman masamız olduğunu ve oradaki departmanId'yi YABANCI ANAHTAR olarak Çalışan tablosuna bağlamak istediğimizi varsayalım.
ALTER TABLE employee ADD CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE CASCADE ON DELETE CASCADE; Ya bu tabloda mevcut veriler varsa? Tabloyu değiştirip FOREIGN KEY kısıtlaması ekleyebilir miyiz?
Cevap evet - başka bir tablodan referans alınacak olan sütundaki mevcut değerlerin üst tablonun kendisinde mevcut olan değerlere sahip olması koşuluyla yapabiliriz.
FOREIGN KEY kısıtlaması olmayan bir Employee tablosu oluşturun, bazı veriler ekleyin ve ALTER komutunu kullanarak bir FOREIGN KEY kısıtlaması eklemeyi deneyin.
CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT); INSERT INTO EMPLOYEE VALUES (1, 'DARREN JOHNSON', 'CHICAGO', 32, '1988-02-12',1); INSERT INTO EMPLOYEE VALUES (2, 'ANITA SHERWIN', 'COLUMBIA', 32, '1988-02-12',10); Bir Departman tablosu oluşturun ve aşağıda gösterildiği gibi Çalışan tablosundaki 'deptId' alanına FOREIGN KEY ekleyin:
CREATE TABLE department(departmentId INT PRIMARY KEY NOT NULL DEFAULT 1000, departmentName VARCHAR(100));Bu noktada, FOREIGN KEY kısıtlaması eklemeye çalışırsak,
ALTER TABLE employee ADD CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE CASCADE ON DELETE CASCADE; Çalışan tablosu bazı veriler içerdiğinden, ancak Departman tablosunda henüz veri bulunmadığından referans bütünlük kısıtlaması karşılanamadığı için bir hata alacağız.
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`my_sql_foreign_key`.`#sql-63_87`, CONSTRAINT `depIdFk` FOREIGN KEY (`deptId`) REFERENCES `department` (`departmentId`) ON DELETE CASCADE ON UPDATE CASCADE)FOREIGN KEY kısıtlamasına sahip olmak için, önce Department tablosuna veri eklememiz gerekecek. Bölüm tablosuna gerekli kayıtları ekleyelim.
INSERT INTO department VALUES (1, 'ENGINEERING'),(10,'ACCOUNTING');Aynı ALTER TABLE deyimini çalıştırarak FOREIGN KEY kısıtlamasını yeniden ekleyin. Bu sefer komutun başarılı olduğunu ve Employee tablosunun Department tablosundan FOREIGN KEY olarak deptId olarak güncellendiğini fark edeceksiniz.
YABANCI ANAHTAR Kısıtlamasını Kaldırmak
FOREIGN KEY kısıtlaması eklemeye benzer şekilde, bir tablodan mevcut bir FOREIGN KEY kısıtlamasını kaldırmak / silmek de mümkündür.
Bu, ALTER TABLE komutu kullanılarak gerçekleştirilebilir.
Sözdizimi:
ALTER TABLE {childTable} DROP FOREIGN KEY {foreign key constraint name}; Burada 'childTable', FOREIGN KEY kısıtlamasına sahip tablonun adı iken 'yabancı anahtar kısıtlama adı', YABANCI ANAHTARI tanımlamak için kullanılan ad / semboldür.
Çalışan / Departman tablosunu kullanarak bir örnek görelim. Çalışan tablosundan 'depIdFk' adlı bir kısıtlamayı kaldırmak için aşağıdaki komutu kullanın:
ALTER TABLE employee DROP FOREIGN KEY depIdFk;Sıkça Sorulan Sorular
S # 1) MySQL'de yabancı anahtarları nasıl değiştirebilirim?
Cevap: FOREGIN KEY, ALTER TABLE komutu kullanılarak eklenebilir / kaldırılabilir.
Yeni bir FOREIGN KEY'i değiştirmek veya eklemek için, ALTER komutunu kullanabilir ve FOREIGN KEY'i ve alt tablodan referans alınacak referans tablo sütununu tanımlayabilirsiniz.
alt dize (0,0) java
S # 2) MySQL'de birden fazla yabancı anahtar nasıl ayarlanır?
Cevap: MySQL'deki bir tablo, aynı ana tabloya veya farklı ana tablolara bağlı olabilen birden fazla YABANCI ANAHTAR içerebilir.
Çalışan / Departman tablosunu kullanalım ve Departman adı için YABANCI ANAHTAR ekleyelim ve Çalışan tablosuna Departman Kimliği ekleyelim.
Her iki tablonun CREATE deyimlerine aşağıdaki gibi bakın
CREATE TABLE department(departmentId INT PRIMARY KEY NOT NULL DEFAULT 1000, departmentName VARCHAR(100) UNIQUE NOT NULL); ----xxxxx------xxxxx------xxxxx-------xxxxx------xxxxx CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT, depName VARCHAR(100), CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT depNameFk FOREIGN KEY (depName) REFERENCES department(departmentName) ON UPDATE CASCADE ON DELETE CASCADE); S # 3) MySQL'de yabancı anahtar kısıtlamaları nasıl devre dışı bırakılır?
Cevap: FOREIGN KEY kısıtlamaları, genellikle birisi referans verilen mevcut bir tabloyu kırpmaya çalışırken gereklidir. Bunu yapmak için aşağıdaki komutu kullanabilirsiniz:
SET FOREIGN_KEY_CHECKS=0;Bu, bir oturum değişkeni oluşturacak ve FOREIGN_KEY_CHECKS'i geçici olarak devre dışı bırakacaktır. Bu ayardan sonra devam edip silme / kesme işlemi yapabilirsiniz, aksi takdirde bu mümkün olmazdı.
Ancak lütfen bunun bir yönetici ayrıcalığı olduğundan ve mantıklı bir şekilde kullanılması gerektiğinden emin olun.
S # 4) MySQL'de bir tablo için yabancı anahtar referanslarını nasıl bulabilirim?
Cevap: Mevcut tüm FOREIGN KEY kısıtlamalarını listelemek için, 'INFORMATION_SCHEMA' içindeki 'INNODB_FOREIGN_COLS' tablosunu kullanabilirsiniz.
Belirli bir MySQL sunucu örneği için var olan tüm FOREIGN KEY bildirimlerini almak için aşağıdaki komutu çalıştırın.
| İD | FOR_COL_NAME | REF_COL_NAME | POS |
|---|---|---|---|
| my_sql_foreign_key / depIdFk | DeptId | departmanId | 1 |
S # 5) YABANCI ANAHTAR olarak başvurulan sütun, başvurulan tabloda birincil anahtar olmalı mı?
Cevap: FOREIGN KEY tanımına göre, FOREIGN KEY olarak başvurulan sütunun, başvurulduğu tablodaki PRIMARY ANAHTAR olması gerekir.
Bununla birlikte, MySQL'in daha yeni sürümleri ve InnoDB veritabanı motoru ile, UNIQUE kısıtlaması olan ve PRIMARY KEY olmayabilir YABANCI ANAHTAR içeren bir sütuna da başvurabilirsiniz.
S # 6) FOREIGN KEY, MySQL'de INDEX oluşturur mu?
Cevap: Hem Birincil Anahtar hem de Benzersiz kısıtlama için MySQL, bu tür sütunlar için otomatik olarak bir INDEX oluşturur.
FOREIGN KEY referanslarının yalnızca Birincil anahtar olan sütunlara veya Benzersiz değerlere sahip sütunlara uygulanabileceğini bildiğimiz için, YABANCI ANAHTAR olarak adlandırılan tüm sütunların bunlara karşı oluşturulmuş bir indeksi vardır.
Dizini bir tabloda görüntülemek için aşağıdaki komutu kullanın:
SHOW INDEX from {dbName.tableName};Bu nedenle, Çalışan / Departman örneğimiz için, Departman tablosundan Employee'de deptId'yi YABANCI ANAHTAR olarak ekledik.
Çalışan ve Departman tablolarında oluşturulan dizinlere bakalım.
USE my_sql_foreign_key; SHOW INDEX from employee; | Tablo | Non_unique | Anahtar_adı | Seq_in_index | Sütun adı | Harmanlama | Kardinalite | Alt_parça | Paketlenmiş | Boş | Dizin_türü |
|---|---|---|---|---|---|---|---|---|---|---|
| işçi | 0 | BİRİNCİL | 1 | İD | KİME | 0 | BOŞ | BOŞ | BTREE | |
| işçi | 1 | depIdFk | 1 | DeptId | KİME | 0 | BOŞ | BOŞ | EVET | BTREE |
2 dizin görebilirsiniz - biri Çalışan tablosu için birincil anahtar, diğeri ise Departman tablosundan referans alınan YABANCI ANAHTAR depId içindir.
SHOW INDEX from department;| Tablo | Non_unique | Anahtar_adı | Seq_in_index | Sütun adı | Harmanlama | Kardinalite | Alt_parça | Paketlenmiş | Boş | Dizin_türü |
|---|---|---|---|---|---|---|---|---|---|---|
| Bölüm | 0 | BİRİNCİL | 1 | departmanId | KİME | 0 | BOŞ | BOŞ | BTREE |
Burada, Bölüm tablosu için, Birincil Anahtar için yalnızca 1 dizinimiz olduğunu görebilirsiniz (Çalışan tablosunda YABANCI ANAHTAR olarak belirtilir).
S # 7) FOREIGN KEY MySQL'de NULL olabilir mi?
Cevap: Evet, başka bir tabloya FOREIGN KEY bağımlılığı olan sütun için NULL olması tamamen uygundur. Bu aynı zamanda NULL'un gerçek bir değer olmadığı gerçeğini de ima eder, dolayısıyla üst tablodaki değerlerle eşleştirilmez / karşılaştırılmaz.
Sonuç
Bu eğitimde, MySQL veritabanlarında FOREIGN KEYS kullanımına ilişkin farklı kavramları öğrendik.
YABANCI ANAHTAR, uygun kısıtlamalarla güncellemeleri ve silmeleri kolaylaştırır, ancak bazen bu tür birçok ilişkiye sahip olmak, Ekleme ve / veya Silme işleminin tamamını oldukça zahmetli hale getirebilir.
YABANCI ANAHTARLARI nasıl oluşturacağımızı ve mevcut bir YABANCI ANAHTARI nasıl güncelleyebileceğimizi ve alt tablodan nasıl bırakabileceğimizi öğrendik. Ayrıca farklı referans bütünlük eylemlerini ve CASCADE, NO ACTION, SET NULL, vb. Gibi farklı mevcut seçenekleri kullanarak nasıl farklı davranışlar elde edebileceğimizi öğrendik.
Önerilen Kaynaklar
- MySQL Örneklerle Tablo Eğitimi Oluşturun
- MySQL Tabloya Ekle - İfade Sözdizimi ve Örnekler Ekle
- MySQL Kod Örnekleriyle Görünüm Öğreticisini Oluştur
- Örneklerle MySQL CONCAT ve GROUP_CONCAT İşlevleri
- Programlama Örnekleriyle MySQL İşlem Eğitimi
- MySQL UNION - Birlik Örnekleriyle Kapsamlı Eğitim
- Windows ve Mac İçin MySQL Nasıl İndirilir
- SQL Vs MySQL Vs SQL Server Arasındaki Fark (Örneklerle)