SQL ile ilgli anlatımlarımıza Sql Dersleri – 1 konumuzla başlamıştık. Veri Tabanı Yönetim Sistemleri Sunumu – 3 konumuzda 400 sayfasıyla bu konular için çok önemli bilgileri barındırmakta . Bu ders ise FOREIGN KEY ile birleştirmeleri, bazı yeni değişkenleri tanıyacak ve biraz geçen dersin pratiğini yapacağız.
Geçen derste Create Table ifadesiyle tablo yapmayı öğrenmiştik. Bu gün çalışacağımız tabloları direk buraya create ifadeleriyle yazıyorum.
CREATE TABLE BANKALAR (
BANKA_NO INTEGER NOT NULL,
ADI VARCHAR(20),
PRIMARY KEY (BANKA_NO)
);
Üstteki birinci tablo ile alttaki ikinci tablonun banka_no larını birbirine bağlayacak olan Kısıt(Primary Key kısıtını öğrenmiştk.) Foreign Key ile sağlanır.
CREATE TABLE BANKA_HESAPLARI (
HESAP_NO INTEGER NOT NULL,
BANKA_NO INTEGER NOT NULL,
HESAP_ADI VARCHAR(20),
PRIMARY KEY (HESAP_NO),
FOREIGN KEY (BANKA_NO) REFERENCES BANKALAR(BANKA_NO)
);
2. Tablo ve 3. Tablo arasında ise ilişki Hesap_no üstünden sağlanmıştır.
CREATE TABLE PERSONEL(
SICIL_NO INTEGER NOT NULL,
ISIM VARCHAR(20) NOT NULL,
SOYAD VARCHAR(20) NOT NULL,
MAAS FLOAT NOT NULL,
YONETICI INTEGER NOT NULL,
HESAP_NO INTEGER NOT NULL,
BANKA_NO INTEGER NOT NULL,
PRIMARY KEY (SICIL_NO),
FOREIGN KEY (HESAP_NO) REFERENCES BANKA_HESAPLARI (HESAP_NO)
)
Atık tablolara verilerimizi girme vakti. İlk derste values yazarken, sütunlara girilecek verileri, create ile oluştururken kurduğumuz sütun sırası ile verirdik. Aşağıdaki örnekte ise sütun isimlerinin sırasını kendimiz hangi sütuna hangi veri girileceğini göstererek yaptık.
INSERT INTO BANKALAR (
ADI,
BANKA_NO
)
VALUES
(
‘MURATCANLI’, 09
)
INSERT INTO BANKA_HESAPLARI
VALUES(0901, 09, ‘MURATHESAPCANLI’)
INSERT INTO PERSONEL
VALUES (230450, ‘MURATCANLI’, ‘HEYCANLI’, 550, 1, 0901, 09 )
ile verilerimizi, diğer tablolarada giriyoruz.
Tablolarımızı Create ifadesi ile oluştururken Foreıgn Key koymayı unutursak, ALTER ifadeleriyle düzenlememiz ve Foreign Key i ekleriz.
ALTER TABLE BANKALAR
ADD CONSTRAINT FK_TERM
FOREIGN KEY (BANKA_NO) REFERENCES BANKA_HESAPLARI (BANKA_NO)
ifadesiyle bankalar ve banka_hesapları tabloları arasında bir foreign key bağlantısı kurulur. Bu bağlantıyı yazarken tabi biz create ifadeleri ile yazarken unutmuş gibi farzederek yazıyoruz. CONSTRAINT kısıt demektir ve ondan sonra gelen bölüm ise o kısıtda verdiğimiz isimdir.
Ayrıca, veri girişi yapılırken not null yazılmamış. Yani, insert yapılırken boş geçilecek veriler values ile doldurulurken nasıl boş geçilecek. Mesela, az önce oluşturduğumuz BANKA_HESAPLARI tablosunda HESAP_ADI bölümü için not null ifadesi koymamışız. Hemen bu tabloya veri girelim.
INSERT INTO BANKA_HESAPLARI
VALUES (1,399, NULL)
bu sayede, HESAP_ADI verisini boş bıraktık. Son olarak TARİH değişken tipi için DateTime’ dan bahsedeceğim. Bu değişken ile tarih verileri saat dakikasına kadar tutulabliyor. 1963- 06- 12 Şeklinde veriler girilebiliyor. Saat ve dakika otomatik olarak 00:00:00 olarak atanır. Tarih verilmedikçe