sql türkçe kaynak etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
sql türkçe kaynak etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

4 Aralık 2016 Pazar

68. SQL AUTO INCREMENT Kullanımı

  • Bazı veritabanı işlemlerimizde her bir kaydın eşssiz(unique) bir değeri olmasını isteyebilir, ilerideki işlemlerde bu değer üzerinden datalarımıza erişmek isteyebiliriz. Bu gibi durumlarda tablolarımızda bir kolonu sayı tipinde yapıp bir kural çerçevesinde (örneğin her yeni kayıt ekleme işleminde 1 arttır gibi) değiştirerek bunu sağlayabiliriz.
  • Sadece sayılarda kullanılan bu Auto-Increment özelliği ile değerimizin otomatik artmasını sağlayarak benzersiz bir değere atamış oluruz.
Örnek;

CREATE TABLE  Meyveler
(
id int IDENTITY(1,1) PRIMARY KEY,
adi varchar(20),
renk varchar(10),
tur varchar(20)
)

  • MsSQL de otomatik sayı arttırım IDENTITY(value1,value2) özelliği ile yapılmaktadır.
  • value1 başlangıç değerini belirtir.
  • value2 ise artış miktarını göstermektedir.
  • Yukardaki örneğimizde tablodaki id alanı 1 den başlayacak ve birer birer artacak şekilde insert edecek. Örneğin id alanımız 1000den başlasın ve sadece çift sayılar tutsun istiyorsak şu şekilde tanımlamalıyız: IDENTITY(1000,2)

67. SQL REPLACE Fonksiyonu Kullanımı

  • REPLACE fonksiyonu ile istediğimiz bir metin içerisinde istediğimiz bir metini başka bir metinle ile değiştirebiliriz.
  • Kendi tablomuzda bulunan veriler üzerinde de bu işlemi uygulayabilir sonuçları istediğimiz kolonda gösterebiliriz.
  • Aşağıdaki örnekleri inceleyebiliriz.


Söz Dizimi
REPLACE (Ana_Metin, Ana_Metin_İçinde_Aranan_Değer,Değiştirilecek_Değer)



21 Kasım 2016 Pazartesi

66. SQL PATINDEX Kullanımı

  • SQL PATINDEX Fonksiyonu belirttiğimiz bir metinde yada tablomuzun herhangi bir kolonunda seçtiğimiz karakterin "değerin" başlangıç pozisyonunu döner.
  • Eğer aradğımız karakter metnin içinde yok ise 0 döner. 
  • Aşağıdaki örnekleri inceleyip sizlerde uygulayabilirsiniz.
Söz Dizimi:
PATINDEX( '%Aradığımız kalıp%' , İçinde_Arayacağımız_İfade) 





  
Not: Aynı şekilde Tablodaki alanların içinde de bu şekilde arama yapabiliriz.

65. SQL CONCAT Kullanımı

  • SQL CONCAT fonksiyonu kısaca alanları birleştirmek için kullanılır.
  • SELECT cümleciklerimizde direkt metinleri birleştirebileceğimiz gibi tablomuzdaki farklı alanları da istediğimiz sıra veya ek metinlerle birleştirip yeni bir kolonda gösterebiliriz.
  • Aşağıdaki örneklerle pekiştirelim...
Not:Aynı şekilde tablomuzda alanları da birleştirebiliriz.

5 Kasım 2016 Cumartesi

2. SQL Server 2012 ve Yeni Analitik Fonksiyonlar - LAG() Fonksiyonu

  • LAG() fonksiyonu 2012 ile gelen 8 yeni analitik fonksiyondan biridir.
  • Bu fonksiyon extra bir join yapmadan bir önceki satırdaki verileri mevcut satırda işlememize imkan verir. LEAD() fonksiyonu mantığı ile çalışır sadece terse işlemektedir.
Daha iyi anlamak için aşağıdaki örneklerimizi inceleyebiliriz.

Kullanımı;

LAG( scalar_expression [ ,offset ] , [ default ] )
    OVER ( [ partition_by_clause ] order_by_clause )


Örnek Veri tabanımız;


Örnek 1;

Açıklama 1;
İlk örneğimizde en basit anlamda LAG() fonksiyonunun kullanımını gördük. Mevcut satırımızda bir önceki satırda istediğimiz değerini gösteriyoruz. Eğer değer yok ise NULL olarak gözükmekte.

Örnek 2;

   Açıklama 2;
Bu örneğimizde ufak bir değer ataması yaptık. Bir önceki satırdaki Value değişkeni ile mevcut satırdaki Value değerini birbirinden çıkarıyoruz. Bunun gibi satır kontrollerini farklı değerler ve satırlar üzerinde de yapabiliriz. Böylece elimizdeki sorgudaki istediğimiz alanları extra join işlemi yapmadan karşılaştırabiliriz.

Örnek 3;
   Açıklama 3;
Bu örneğimizde kaç satır önceki değerler ile karşılaştırma yapıp mevcut satırda kullanacağımızı gösterdik. Bu değeri daha da arttırabilirsiniz. Böylece mevcut satırda istediğiniz n. satır önceki değerleri çağırıp istediğiniz gibi kullanabilirsiniz. 3 satır önceki değer yok ise NULL gelmekte.

Örnek 4;

   Açıklama 4;
Bu örneğimizde bir önceki kayıt eğer yok ise LAG() fonksiyonu getiremediği için NULL ataması yapıyordu. Bu tarz durumlarda NULL ise hangi değeri atayacağımız belirledik. Örneğimizde de NULL değerlere 0.00 ataması yapıldı.

Örnek 5;
   Açıklama 5;
Son örneğimizde ise dikkat ederseniz PARTITION kullandık. Böylece hem hızlı hem performanslı olan bu yapıda istediğimiz LAG() işlemini hangi alan üzerinden yapacağımız belirtiyoruz. Tabi bu durumda NULL değerlerimiz bir hayli fazla olmakta. Çünkü partition yaptığımız Name değerinde satırların sayısı az.

1. SQL Server 2012 ve Yeni Analitik Fonksiyonlar - LEAD() Fonksiyonu

  • LEAD() fonksiyonu 2012 ile gelen 8 yeni analitik fonksiyondan biridir.
  • Bu fonksiyon extra bir join yapmadan bir sonraki satırdaki verileri mevcut satırda işlememize imkan verir. İlk defa duyan için gerçekten açıklaması biraz zor. Örnek vermek gerekirse 2 satırlı bir sorgumuzda değerlerle 2. satırda bulunan herhangi bir kolonun değerini kıyaslayabiliriz.
Daha iyi anlamak için aşağıdaki örneklerimizi inceleyebiliriz.

Kullanımı;

LEAD ( scalar_expression [ ,offset ] , [ default ] )
    OVER ( [ partition_by_clause ] order_by_clause )

Not: Dikkat etmemiz gereken ifade alanı (scalar_expression) olarak yazdığımız kısım tek değer dönmelidir.


Örnek Veri tabanımız;



Örnek 1;


Açıklama 1;
İlk örneğimizde en basit anlamda LEAD() fonksiyonunun kullanımını gördük. Mevcut satırımızda bir sonraki satırın istediğimiz değerini gösteriyoruz.

Örnek 2;

   Açıklama 2;
Bu örneğimizde örnek bir atama yaptık. Bir sonraki satırdaki Value değişkeni ile mevcut satırdaki Value değerini birbirinden çıkarıyoruz. Bunun gibi satır kontrollerini farklı değerler ve satırlar üzerinde de yapabiliriz.

Örnek 3;

   Açıklama 3;
Bu örneğimizde kaç satır sonraki değerler ile karşılaştırma yapıp mevcut satırda kullanacağımızı gösterdik. Bu değeri daha da arttırabilirsiniz. Böylece mevcut satırda istediğiniz n. satırın değerlerini çağırıp istediğiniz gibi kullanabilirsiniz.

Örnek 4;

   Açıklama 4;
Bu örneğimizde bir sonraki kayıt eğer yok ise LEAD() fonksiyonu getiremediği için NULL ataması yapıyordu. Bu tarz durumlarda NULL ise hangi değeri atayacağımız belirledik. Örneğimizde de NULL değerlere 0.00 ataması yapıldı.

Örnek 5;
   Açıklama 5;
Son örneğimizde ise dikkat ederseniz PARTITION kullandık. Böylece hem hızlı hem performanslı olan bu yapıda istediğimiz LEAD() işlemini hangi alan üzerinden yapacağımız belirtiyoruz. Tabi bu durumda NULL değerlerimiz bir hayli fazla olmakta.

15 Haziran 2014 Pazar

64- SQL Grant Kullanımı

  • Kullanıcıya yetki verir.
  • Genel yapısı şu şekildedir.
GRANT (all | izinler)
ON (izneTabiTutulanlar)
TO (izinVerilenler)

  • Aşağıdaki yapıda User kullanıcısına tablo oluşturma yetkisi veriyoruz.
GRANT CREATE TABLE TO User
  • Aynı şekilde kullanıcıya güncelleme, silme ve ekleme yetkisi de verebiliriz.
GRANT INSERT,UPDATE,DELETE TO User

  • Örneğin kullanıcımıza istediğimiz tablodan select çekebilmesine izin verelim.
GRANT SELECT ON Tablomuz TO User

WITH GRANT OPTION: Dereceli yetkilendirme işleminde kullanılır. Yani siz bir kullanıcıya yetki verdiniz diyelim o kullanıcı da sizin gibi başka kullanıcılara izin verebilir.
  • Aşağıdaki örneğimizde biz kullanıcımıza Sehir tablomuza ekleme ve select atma yetkisi veriyoruz.Önemli kısmı WITH GRANT OPTION olduğu için User kullanıcısı da başka bir kullanıcıya kendinde olan bu 2 hakkı verebilir. Dikkat etmemiz gereken asla fazlasını yani kendinde olmayan bir hakkı veremez.
GRANT SELECT,INSERT ON Sehir TO User
WITH GRANT OPTION

11 Mayıs 2014 Pazar

62-NOW() Fonksiyonun Kullanımı

NOW() fonksiyonu sistemde o anki tarih ve saati döner.

SELECT NOW() AS Tarih


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.