24 Ağustos 2014 Pazar

SQL'de Foreign Key Kullanımı

  • SQL'de bir başka tablo ile ilişkilendirilecek olan tablonun diğer tabloda bir nevi kısıtlanmasıdır. İlişkilendirilecek olan tablonun Primary key alanı ile diğer tablonun Foreign key alanı birbiri ile bağlanır.
  • Foreign Key kısıtlaması sütunlarından herhangi biri null değerler içeriyorsa, Foreign Key kısıtlamasını oluşturan tüm değerlerin doğrulaması atlanır.
  • Foreign Key kısıtlamasının yalnızca başka bir tablodaki Primary Key kısıtlamasına bağlı olmasına gerek yoktur. Ayrıca başka bir tablodaki UNIQUE kısıtlama sütununa başvuracak şekilde de tanımlanabilir.
Foreign Key tanımlamak için, tablomuzdaki Foreign Key olacak sütunu yazdıktan sonra REFERENCES yazıp bağlanacak tablounun adını ve parantez içindede ilgili sütunu yazarız.

CREATE TABLE SIPARISLER
(
Siparis_ID integer primary key,
Siparis_Tarihi datetime,
Musteri_SID integer REFERENCES MUSTERI(SID),
Tutar double
)

SQL'de Primary Key Kullanımı

  • Primary Key ile veritabanımızdaki tablolarda, primary key atanmış olan sütun (kolon) ile birlikte eşsiz şekilde verilere sahip satırlar oluşturabiliriz. 
  • Primary Key olan alanlar Null değerler olamaz ve bu bölüme aynı değerler girilemez. 
  • Tablolarımızda mutlaka Primary Key kullanmak çok büyük avantaj sağlayacaktır.
  • Primary Key (Birincil Anahtar) genelde otomatik artan değerler olarak kullanılır. Bu otomatik artma da identity komutu ile gerçekleştirilir. 
  • Primary Key tanımlamak aslında bir nevi Constraint‘tir yani bir nevi kısıtlama yapmaktır.
  • Bir tabloda sadece bir Primary Key bulunur ama bununla birlikte tabloda birden fazla kolon için bileşik anahtar yani composite key oluşturulabilir. 
  • Eğer primary key bir composite key yani bileşik anahtar ise, tüm değerlerin kombinasyonu unique yani eşsiz olmalıdır. 
Daha basitce açıklamak gerekirse örneğin bir HBYS veritabanında Hastalar tablomuz mevcut, oldukca çok veri içeren bir tablo. Aynı ad ve soyada sahip birçok kişi var. Şimdi bu verileri en basit şekilde nasıl birbirlerinden ayırt ederiz. TC Kimlik No, aynı TC Kimlik Numarasının ikinci bir kişide olması mümkün değildir. Veritabanımızda TC Kimlik No alanını Primary Key olarak tanımlayarak eşsiz veriler oluşturabiliriz. Primary Key tablomuzdaki kayıtları sütün aracılığıyla eşşiz kayıt haline getirmemizi sağlayacaktır.

Yeni bir Alanda Primary Key Kullanımı:
CREATE TABLE Yazarlar
(
id int NOT NULL PRIMARY KEY,
adi_soyadi varchar(20) ,
Yayinevi varchar(20)
) 

Yeni birden fazla Alanda Primary Key Kullanımı:
CREATE TABLE Yazarlar
(
id int NOT NULL,
adi_soyadi varchar(20) NOT NULL ,
Yayinevi varchar(20),
CONSTRAINT id_no PRIMARY KEY  (id,adi_soyadi)
) 

Varolan bir Alanda Primary Key Kullanımı:
ALTER TABLE Yazarlar
ADD PRIMARY KEY (id)

Varolan birden fazla Alanda Primary Key Kullanımı:
ALTER TABLE Yazarlar
ADD CONSTRAINT  id_no PRIMARY KEY (id,adi_soyadi)

NOT: ALTER ile sonradan bir alana PRIMARY KEY kriteri tanımlanırken ilgili alanda veya alanlarda NULL yani boş kayıt olmamalıdır.

PRIMARY KEY yapısını kaldırmak:
ALTER TABLE Yazarlar
DROP CONSTRAINT id_no

NOT: Birden fazla alanda PRIMARY KEY işlemi yaptıysak, CONSTRAINT ifadesinden sonra tablomuzdaki alan adı değil, oluşturduğumuz index adı yazılmalıdır.

SQL'de UNIQUE Kullanımı

  • SQL'de oluşturmuş olduğumuz tablolar içinde yer alan her bir kolonda eşsiz şekilde, yani benzersiz birbirinden farklı veriler bulunmasını isteyebiliriz.
  • Bunun için bu tür alanlar tanımlanırken Unique Key Contsraint tanımı yapılır.
  • Unique Key Contsraint tanımının Primary Key den farkı Unique Key'in bir tabloda birden fazla olmasıdır,  Primary Key ise tabloda sadece 1 adet olabilir. NULL veriler de içerebilir. 
  • Ayrıca tablolarımızı oluştururken UNIQUE kısıtlaması yapabildiğimiz gibi, daha sonradan var olan tablolar üzerinde de UNIQUE kısıtlaması yapabiliriz.  
  • Bir tabloda birden çok UNIQUE sınırlaması getirilebilinir fakat sadece bir tane PRIMARY KEY sınırlaması getirilebilinir.
NOT: Primary Key alanı tanımlandığında otomatik olarak UNIQUE olarak oluşur. 

Yeni bir tablo oluşturulmasında Unique Key Contsraint Kullanımı:
CREATE TABLE Yazarlar
(
No int NOT NULL UNIQUE,
Soyad varchar(255) NOT NULL,
Ad varchar(255),
Yayinevi varchar(255)
)

Yeni bir tablo oluşturulmasında birden fazla alanda Unique Key Contsraint Kullanımı:
CREATE TABLE Yazarlar
(
id int NOT NULL,
adi_soyadi varchar(20) NOT NULL ,
Yayinevi varchar(20),
CONSTRAINT id_no UNIQUE (id,adi_soyadi)
) 

Var olan tabloda sonradan ekleme yaparken Unique ve ALTER Kullanımı:
ALTER TABLE Yazarlar
ADD UNIQUE (No) 

Birden fazla alanda ekleme yaparken Unique ve ALTER Kullanımı:
ALTER TABLE Yazarlar
ADD CONSTRAINT  id_no UNIQUE (id,adi_soyadi)

UNIQUE alanı normale çevirmek istersek DROP ifadesini kullanmamız gerekir:
ALTER TABLE Yazarlar
DROP  CONSTRAINT id_no

Birden fazla alanda UNIQUE işlemi yaptıysak, CONSTRAINT ifadesinden sonra tablomuzdaki alan adı değil, oluşturduğumuz index adı yazılmalıdır. Eğer tek bir alanda oluşturduysak CONSTRAINT  ifadesinden sonra sadece alana adını yazabiliriz.

23 Ağustos 2014 Cumartesi

SQL'de SELECT INTO Kullanımı

  • SQL'de bir tablodan çektiğimiz verileri, yeni bir tablo olusturup, bu tabloya yazabiliriz. 
  • SELECT INTO ile veritabanı üzerindeki verilerle kopya veritabanları oluşturabiliriz.
  • SELECT INTO genelde geçici çalışma tabloları oluşturmak için tercih edilir.
SELECT INTO Kullanımı:

SELECT kolon_ad(ları) INTO [yeni_veritabanı.dbo]yeni_tablo_adı FROM kaynak 

Örnek Sorgu: SELECT * INTO KITAPLAR.dbo.Bilimkurgu_Yedek FROM KITAPLAR.dbo.Bilimkurgu


SQL'de BREAK ve CONTINUE Kullanımları

  • Koşulumuz yerine getirildiğinde döngüden çıkmak için BREAK komutu kullanılır. 
  • BREAK komutu gereksiz yeri elimizdeki bütün verilerin kontrolünü engeller. 
  • İstenilen veriye ulaştığımız zaman diğerlerini atlayarak döngüden veya listeden çıkmamızı sağlar.

CONTINUE komutunu bir döngüde işlemler devam ederken bazı durumlarda işlem yapılmasın istiyorsak kullanabiliriz.


Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü