11 Mayıs 2014 Pazar

61-Foreign Key Kullanımı

  • Foreign key öncelikle başka bir tablo ile tablomuzu ilişkilendirmeye yarar.
  • Ayrıca kendi tablomuzdaki bu alan ilişkilendirdiğimiz tablodaki alandaki değerler olabilir.
  • Yani foreign key ile ilişkilendirdiğimiz her sütun ilgili tablodaki sütunda bulunan değerler ile kısıtlanmış olur.
  • Foreign key olan sütun null olabiliyorsa eşleşmeye bakılmaz.
Foreign key tanımlamak için, tablomuzdaki FK olacak sütunu yazdıktan sonra REFERENCES yazıp bağlamak istedğimiz tablounun adını ve parantez içindede ilgili sütunu yazarız.Aşağıdaki gibi;

CREATE TABLE Musteri
(MusteriNo int NOT NULL PRIMARY KEY,
IlNo int NOT NULL REFERENCES Il(IlNo)

  • Il tablosu foreign key ile bağladığımız tablo.Böylece müşteri tablosunda bulunan her ılNo alanı Il tablosundakilerden biri olmaz zorunda. 
  • Birden fazla foreign key de kullanabiliriz.

28 Aralık 2013 Cumartesi

60- SQL Primary Key Kullanımı

  • Primary Key tablomuzdaki kayıtları sütün aracılığıyla eşşiz kayıt haline getirmemizi sağlar.
  • Primary Key(Birincil Anahtar) 
  • Primary Key olan alanlar Null değerler olamaz ve bu bölüme aynı değerler girilemez.  
  • Genelde otomatik artan değerler olarak kullanılır. Bu otomatik artmayı da identity komutu ile gerçekleştirilir.  
  • Identity komutundan sonra işlemin kaçtan başayacağı ve kaçar kaçar artacağı belirtilir. Identity(1,1) 1'den başlayacağını ve 1'er 1'er artacağını gösterir.
  • Primary Key tanımlamak aslında bir nevi Constraint‘tir yani bir nevi kısıtlama yapmaktır.

Tabloyu Create ederken;
 
BirdId int identity(1,1) NOT NULL,

Tabloyu Alter ederken,

ALTER TABLE Animals ADD PRIMARY KEY (BirdId)

bu şekilde primary key kullanabiliriz.

Primary Keyi tablomuzdan kaldırmak için ise;

ALTER TABLE Animals
DROP CONSTRAINT pk_BirdId








 

20 Nisan 2013 Cumartesi

59- SQL UNIQUE Kullanımı

Bazı durumlarda tablomuzda bir sütünün eşsiz yani tekrarlanmayan olmasını isteriz.
Bunun için bu tür alanlar tanımlanırken Unique Key contsraint tanımı yapılır.

Primary key den farkı ise Unique key bir tabloda birden fazla olmasıdır,
primary key ise tabloda sadece 1 adet olabilir.

Ayrıca Unique Key Contstraint olarak tanımlanmış bir alan NULL olabilir,
fakat değeri null dan farklı olursa kesinlikle daha önce girilen değerlerden farklı olmak zorundadır.

Not: Primary Key alanı tanımlandığında otomatik olarak Unique olarak oluşur.

ÖRNEK: Yeni oluştururken kullanımı,

CREATE TABLE Personel
(
No int NOT NULL UNIQUE,
Soyad varchar(255) NOT NULL,
Ad varchar(255),
Adres varchar(255),
Sehir varchar(255)
)

ÖRNEK: Var olan tabloda sonradan ekleme yaparken,

ALTER TABLE Personel
ADD UNIQUE (No)

23 Mart 2013 Cumartesi

MSSQL de Temp tabloyu güncellemek

  • Birleştirdiğimiz tablolarımızı istedğimiz gibi kullanabiliriz.
  • Bu örneğimizde tablomuzu temp table yapıp, üzerinde değişiklikler yapacağız.
  • NORTHWIND database ini kullandığımızı unutmayalım.
ÖRNEK:

SELECT O.OrderId,O.CustomerId,O.EmployeeId,E.FirstName,E.LastName
INTO #Temp
FROM NORTHWIND.dbo.Orders AS O WITH(NOLOCK)
INNER JOIN NORTHWIND.dbo.Employees AS E WITH(NOLOCK) ON E.EmployeeId=O.EmployeeId
WHERE O.ShippedDate='1996-07-16 00:00:00.000'
SELECT * FROM #Temp
UPDATE #Temp SET FirstName='Ahmet',LastName='Ates' WHERE EmployeeId=5
SELECT * FROM #Temp

AÇIKLAMA: Bu örneğimizde joinlediğimiz tabloların sonucu temp tabloya yazdı ve bunun üzerinde değişiklikler yaparak son halini gösterdik.


3 Şubat 2013 Pazar

SQL de Hata Fırlatmak(Raise Error in SQL)

  • Bazı durumlarda SQL serverın hata fırlatmasını beklemeden kendimiz sorgunun hata fırlatıp bitmesini isteriz.
  • Örneğin yazdığımız sp yada trigger hata vermeden bizim kendi kontrollerimiz ile hata fırlatmasını sağlayabiliriz.
  • İstediğimiz durum SQL Hatası olmayıp bizim koyduğumuz kontrol neticesinde bir mantık hatası olabilir.
ÖRNEK:

CREATE PROC sp_ciftsayininkaresi
@sayi INT
AS
BEGIN
IF(@sayi%2!=0)
    BEGIN
    RAISERROR ('Girilen sayı çift sayı değildir.',10,1)
    END
ELSE
    PRINT @sayi*@sayi
END

NOT: Basit bir sp yazıyoruz. İstediğimiz sp ye gelen değerin hep çift sayı olması aksi halde işlem yapmamamız.






SP yi çalıştırdığımız zaman;

EXEC sp_ciftsayininkaresi 3