25 Mart 2012 Pazar

11. NULL Değerler

  • Veri girişi esnasında, alana herhangi bir değer yazılmazsa ve alan için herhangi bir varsayılan (default) değer atanmamışsa alanda boş (null) değeri saklanır.  
  • Null değeri boşluk (‘ ‘) veya sıfır (0) değerinden farklıdır. 
  • Belirli bir alanına hiçbir değer girilmemiş kayıtları listelemek için IS NULL arama kriteri kullanılır. 
  • Bir tablodaki hangi alanların varsayılan değerleri olacağına veya alanın NULL değere izin verip vermediğine, tablo tasarımı sırasında karar verilir. 
  • Eğer boş olmayan satırları listelemek gerektiğinde IS NOT NULL arama kriterini kullanılır. 
(Örneğimizde fax numaraları girilmemiş ve default değer atanmamış firmaları sorgulayalım.)

Sorgu:  SELECT CompanyName,City,Fax FROM Suppliers WHERE Fax IS NULL





(Fax numaraları girilmiş firmaları sorgulayalım.)

Sorgu: SELECT CompanyName,City,Fax FROM Suppliers WHERE Fax IS NOT NULL




Ders-12' ye geçebilirsiniz.

17 Mart 2012 Cumartesi

10. IN Kullanımı


  • IN sözcüğünü bir listedeki elemanlardan herhangi biriyle eşleşen satırları görüntülemek için kullanırız. 
  • NOT IN arama kriterini ise listede olmayan değerleri aramak için kullanırız. 
  • NOT koşul bildirimi diğer arama koşullarına göre biraz daha yavaş çalışır
  • Performans açısından çok sık kullanılması tavsiye edilmez. 
  • IN ile elde ettiğimiz sonuçları OR kullanarakta elde edebiliriz.
Söz dizimi:     SELECT <sütun adı> FROM <tablo adı>
                        WHERE <sütun adı> IN('değer1','değer2',.....)
(Bütün Müşteriler içinde 'VINET' ve 'FOLKO' isimli müşterilerin tekliflerini listeleyelim;)
Sorgu: SELECT * FROM Orders WHERE CustomerID IN ('VINET','FOLKO')
  

Northwind veritabanımız dışında bir örnek vermek gerekirse daha açıklayıcı olması açısından;
Sorgu: SELECT * FROM Ogrenci WHERE Bolum IN ('Bilgisayar','Elektronik','Elektrik') 
(Belirli 'Bolum' lerde okuyan öğrenci bilgilerine ulaşabiliriz.) 

Ders-11' e Geçebilirsiniz.

9. BETWEEN ...AND... Kullanımı

  • BETWEEN ... AND..... operatörü 2 değer ile belirtilen aralığı sınar. Bu değerler sayı, metin veya tarih olabilir. Aralık kriteri için 2 değerde dahildir.
Söz dizimi:     SELECT <sütun adı> FROM <tablo adı>
                        WHERE <sütun adı> BETWEEN <değer 1> AND <değer 2>

(1996-07-16 tarihinde sipariş verenler ve siparişin gönderildiği yeri döndüren örneğimiz;)
Sorgu: SELECT CustomerID,ShipCity FROM ORDERS WHERE ShippedDate='1996-07-16'


(Yeni öğrendiğimiz BETWEEN ile daha ayrıntılı sorgumuzu yapabiliriz. Örneğin gönderim tarihini hatırlayamadığımızı düşünürsek BETWEEN....AND.... kullanmak en mantıklısı olucak.)

Sorgu: SELECT CustomerID,ShipCity,ShippedDate FROM Orders WHERE ShippedDate BETWEEN   '1996-07-01' AND '1996-08-01'

Not: Dikkat etmeniz gereken aralık değerlerinin başlangıç ve bitiş tarihlerini de kapsadığıdır. Bu aynen sayı aralıklı sorgularda da geçerli.

Ders-10'a geçebilirsiniz.


13 Mart 2012 Salı

8. Mantıksal Operatörler

  • AND , OR , NOT mantıksal operatörlerinin yardımıyla birden fazla koşulun gerçekleşimini sağlayarak karmaşık veya birleşik koşullu listelemeler yapabiliriz. 
  • BETWEEN ifadesi de AND operatörü ile aynı işlemleri gerçekleştirebilmektedir. 
  • AND operatörünün anlamı, birleştirilen koşulların tümüne uyan kayıtları bize listeler. 
  • OR operatörünün anlamı, tanımladığımız koşullardan en az bir tanesine uyan kayıtları listeler. 
  • NOT operatörü ise kendisinden sonra gelen koşulu sağlamayan kayıtları listeler. 
  • Parantez kullanımı ikiden fazla koşul olması durumunda koşulların öncelik sırasını belirler.
  • Parantez kullanılmaması durumunda SQL önce NOT, sonra AND ve en son da OR mantıksal operatörünü işler.

Söz Dizimi:      SELECT <sütun adı> FROM <tablo adı>
                        WHERE <koşul> AND <koşul>[AND <koşul>...]

(Öreğimizde Japonya'daki veya Londra'daki üreticileri listelemek istediğimizde;)
Sorgu: SELECT CompanyName,ContactName,City,Country FROM Suppliers WHERE 
                    Country='Japan'  OR  City='London'




(3 veya 4. kategorideki birim fiyatı 10$'dan yüksek ürünleri listelemek istersek; )
Sorgu: SELECT * FROM Products WHERE (CategoryID=3 OR CategoryID=4) AND UnitPrice>10


Ders-9 'a  geçebilirsiniz.

10 Mart 2012 Cumartesi

7. LIKE ifadesi ve JOKER Karakterlerin Kullanımı

  • LIKE ifadesi sütundaki değerlerin, joker karakterler kullanılarak oluşturduğumuz bir arama koşulu ile karşılaştırılmasını sağlar. 
  • Sadece LIKE ile kullanılabilen joker karakterler aslında bir veya daha fazla karakter yerine kullanılır. 
  • Belirli aralıklardaki belli harflerle başlayan veya biten değerler için joker karakterler kullanılır.

Joker Karakterler Açıklama
% Birden fazla harf ya da rakamın yerini tutar.
_ Bir tek harf veya rakamın yerini tutar.
[HARF] Herhangi bir harf yerine gelebilecek harfleri belirtir.
[^HARF] Herhangi bir harf yerine gelemeyecek harfleri belirtir.
[A-Z] A ile Z arasındaki harfleri belirtir.

  • Örneğin northwind veritabanımızda Customers tablosundaki müşterilerden ismi 'D' ile başlayanları listeleyelim.

Sorgu: SELECT * FROM Customers WHERE ContactName LIKE 'D%'



Mesela bazen arayacağınız tabloda ismi hatırladınız soyadı hatırlayamadınız bu durumda LIKE sorgusunu aşağıdaki gibi kullanmak size avantaj sağlayacaktır.
İçinde Roel geçen bütün ContactName'leri görerek aradığımız veriye ulaşabiliriz.

Sorgu: SELECT * FROM Customers WHERE ContactName LIKE '%Roel%'



Örnek arama koşulları;

LIKE ‘REST%’          İlk 4 harfi REST olan tüm kayıtlar
LIKE ‘Br%’               İlk iki harfi Br olan tüm kayıtlar
LIKE ‘%een’              Son üç harfi een olan tüm kayıtlar
LIKE ‘%en%’            İçerisinde en ifadesi geçen tüm kayıtlar
LIKE ‘_en’                Son iki harfi en olan üç harften oluşan tüm kayıtlar
LIKE ‘[CK]%’          C veya K harfleriyle başlayan tüm kayıtlar
LIKE ‘[S-V]ing'         ing ile biten ve ilk harfi S ile V harfleri arasında olan
                                  dört harfli herhangi kelime
LIKE ‘M[^m]%’         M ile başlayan ikinci harfi m olmayan tüm kayıtlar

Ders-8 'e geçebilirsiniz.

6. SQL'de Karşılaştırma Operatörlerin Kullanımı

  • SQL kriterlerle sorgular yapmamıza izin verir. 
  • Her programlama dilinden olduğu gibi SQL'de de istediğimiz kriterler ölçüsünde sorgular yaparak istediğimiz verilere ulaşabiliriz.
  • Karşılaştırma operatörlerinde karşılaştırdığımız veri tiplerine dikkat etmemiz gerekmektedir.
  • Sayısal veriyi karakter tipinde bir veri ile karşılaştıramayız.

Operatörler Açıklama
= Eşittir
<>,!= Eşit Değildir,Farklıdır
> Büyüktür
< Küçüktür
>= Büyük veya Eşit
<= Küçük veya Eşit
BETWEEN Arasında
LIKE Metin Arama

  • Operatörleri WHERE ifadesi ile birlikte sınanmasını istediğiniz koşulları oluştururken kullanıyoruz.
Elimizde böyle karışık ve çok verili bir tablo olduğunu düşünelim. Tabi ki bu tabloya aslında yeni başlayanlar için büyük diyebiliriz.:) 


1- Şimdi bu tabloda belli kısıtlarımız olsun. Örneğin İspanyada(Country) yaşayanların iletişim bilgilerini(ContactName),şehirlerini(City) ve adreslerine(Address ) ihtiyacımız olmuş olsun.

Sorgu: SELECT ContactName,City,Country,Address FROM Customers WHERE Country='Spain'


2- Tam Ters sorgu olarak İspanya haricinde oturanların bilgilerine ulaşmak istediğimizde; 

Sorgu: SELECT ContactName,City,Country,Address FROM Customers WHERE Country != 'Spain' 



3-  UnitPrice değeri 10 dan büyük değerler içinse;

Sorgu: SELECT ProductName,UnitPrice FROM Products WHERE UnitPrice>10




4- UnitPrice değeri 20 den küçük değerler içinse;


Sorgu: SELECT ProductName,UnitPrice FROM Products WHERE UnitPrice<20

 



 5- UnitPrice değeri 10 ve 10 den büyük değerler için;


Sorgu: SELECT ProductName,UnitPrice FROM Products WHERE UnitPrice>=10



6- Products tablomuzda birim fiyat üzerinden sorgu yapacağımızda örneğin UnitPrice değeri 20 ve 20 den düşük değerler için;

Sorgu: SELECT ProductName,UnitPrice FROM Products WHERE UnitPrice<=20






 Not: BETWEEN ve LIKE ifadelerinin SQL de kullanımları hakkında ayrıntılı bilgiyi bir sonraki derslerde bulabilirsiniz.

Ders-7'ye geçebilirsiniz.

3 Mart 2012 Cumartesi

5. WHERE Kullanımı

  • WHERE yantümcesi görüntülemek istediğimiz verileri belirli bir kritere göre seçebilmemizi sağlar. 
  • Bir koşulu belirterek sadece o koşula uyan kayıtların seçilmesini sağlar. Örneğin binlerce satış kayıtlarının tutulduğu bir tablo düşünelim.
  • WHERE koşulu ile son 3 günlük,10.000TL den yüksek,belirli iki tarih arası vs gibi bir çok kısıtlamalı sorgu yapabiliriz.
  • WHERE yantümcesinin kullanımı zorunlu değildir. Fakat bir koşula bağlı veri seçmek istediğimizde FROM yantümcesinden sonra eklenebilir.
Söz dizimi:      SELECT <sütun adı> FROM <tablo adı>
                        WHERE <koşul(lar)>


Sorgu: SELECT * FROM Customers WHERE ContactTitle='Owner'
('Customers' tablosundaki 'ContactTitle''ı Owner olan (*)bütün veriler.) 

Ders-6 'ya geçebilirsiniz. 

4. SELECT İfadesinin Kullanımı

SELECT ifadesi bir tablodan verileri seçmek için kullanılır. Elde edilen veriler sonuç kümesi olarak adlandırılır ve yine bir tablo görüntüsü şeklinde görüntülenir.Veritabanındaki verilere erişmenin, diğer bir deyişle onları görmenin ya da onları elde etmenin en sık kullanılan yöntemidir. Genellikle bir ya da daha çok tablonun bütün alanları ya da belli alanları için SELECT deyimi yazılır.
Söz dizimi:
SELECT <sütun adı>
FROM <tablo adı>

NOT: Örneklerimizi SQL Managementta Northwind veritabanındaki tablolar üzerinde gerçekleştireceğiz. 
     SQL Serverımıza Northwind veritabanımız geldiyse artık kendimiz geliştirmeye hazırız demektir. Öncelikle Northwind veritabanımızdaki tabloları görelim.

 

   Tablodaki Bütün Sütunları Seçme İşlemi
      Bir tablodaki tüm alanları görüntülemek için tek tek bütün sütun adlarını belirtmekten daha kolay bir yol vardır. Select ifadesinden sonra asterix(*) işaretini yazdığınızda SQL bunu ‘tablodaki tüm sütunlar’ olarak yorumlayacaktır.SQL Server'ımızda 'New Query' (yeni sorgu) dediğimiz zaman boş bir sorgu sayfası açılacaktır.
Sorgumuz: SELECT * FROM categories 
('categories' tablosundaki bütün verileri göster diyoruz.Sonuçları Result Tablosunda görebiliriz.) 


    Belirli Sütunların Görüntülenmesi

      Çoğu sorgularda tablolardaki verilerin bir kısmına ihtiyaç duyarız. Bu gibi durumlarda (*) yerine ihtiyacımız olan sütün isimlerini yazarak bunu gerçekleştiririz.Bunun için SELECT ifadesinin ardından hangi sütünlardaki verileri görmek istiyorsak onları yazarız.
Sorgumuz: SELECT CategoryName, Description FROM Categories

('Categories' tablomuzdaki 'categoryname' ve 'description' sütunlarını seçip göstertiyoruz.) 
 



Ders-5 'e geçebilirsiniz.


3. Transact-SQL

  • SQL, düzeltilmesi veya değiştirilmesi istenen bilgileri açıkça belirtmeye izin veren ve yerine getirilebilecek başlıca işlemleri tanımlamamızı sağlayan bir komut takımıdır. 
  • Bu komutların oluşturduğu yapıya Transact-SQL dili denir.                                                    
  • T-SQL ile döngü veya mantıksal işlemler yapmak için bir derleyiciye gerek yoktur.
  • T-SQL ifadelerini çalıştırabilmek için bir Management Studio ile SQL Server’a
    erişmeniz gerekir.
  • Microsoft'un veri tabanı sorgulama dilidir. Transact-SQL, SQL Server ve istemci
    (client) arasında iletişimi sağlayan SQL sorgulama dilinin gelişmiş bir versiyonudur.
  • Transact-SQL ile veri ve sorgulara erişebilir, güncelleyebilir ve ilişkisel veritabanı sistemini yönetebilirsiniz.  
  • Transact –SQL komutları kullanım amaçlarına göre üç genel kategoriye ayrılır.


SQL Veri İşleme Dili (Data Manipulation Language-DML)

            SQL Veri İşleme Dili veri girmek, değiştirmek, silmek ve verileri almak için kullanılan DML komutlarının tümüdür. En sık kullanılan DML komutları ve kullanım amaçları aşağıdaki gibidir.

SELECT       : Veri seçmek
  •  SELECT adi,soyadi FROM ogrenci WHERE ogrencino='231455'
(ogrenci tablosundaki ogrencino'su 231455 olan öğrencinin adi ve soyadi'ni gösterir.)

DELETE       : Veri silmek
  •  DELETE FROM ilce WHERE il='izmir'
(ilce tablosundaki il değeri izmir olan bütün veriler silinir.)

UPDATE      : Veri güncellemek

  • UPDATE  ogrenci SET not='65' WHERE ogrencino='346212'
(ogrenci tablosundaki '346212' nolu öğrencinin not'unu '65 ' olarak günceller.)

INSERT       : Veri girmek
  • INSERT INTO ogrenci VALUES ('ali','atasoy','55')
(ogrenci tablomuza yeni veriler ekler.)    

SQL Veri Tanımlama Dili (Data Definition Language-DDL)

SQL Veri Tanımlama Dili verilerin tutulduğu nesneler olan tabloların yaratılmasını, silinmesini ve bazı temel özelliklerinin düzenlenmesini sağlar. En sık kullanılan bazı DDL komutları ve kullanım amaçları aşağıdaki gibidir.

CREATE TABLE        : Yeni bir tablo yaratmak.

ALTER TABLE           : Tabloda değişiklik yapma,Yeni bir sütun eklemek, sütunun tipini veya uzunluğunu değiştirmek vb. yapısal değişiklikler yapılması için kullanılır.

DROP TABLE             : Tabloyu fiziksel olarak siler.

TRUNCATE TABLE   : Tablodaki verileri siler fakat tablo yapısı kalır.

CREATE VIEW           :Görüntü oluşturmak için kullanılır.

DROP VIEW               :Görüntüyü siler.

CREATE INDEX        : Tabloda dizin oluşturmak.Tablonun (en azından bir) sütun adı üzerinde indeks oluşturmak için kullanılır.


SQL Veri Kontrol Dili (Data Control Language-DCL)

SQL Veri Kontrol Dili bir veritabanı kullanıcısı veya rolü ile ilgili izinlerin düzenlenmesini sağlar. Aşağıdaki tablo DCL komutlarını ve fonksiyonlarını göstermektedir.
DCL komutlarını kullanabilmek için SQL Server'da varsayılan değer (default) olarak yetki sahibi olan gruplar: sysadmin , dbcreator , db_owner , db_securityadmin 'dir.

GRANT          :Kullanıcıya yetki vererek verileri kullanmasını ve T-SQL komutlarını çalıştırmasına izin verir.

DENY             :Kullanıcı, grup veya rolü herhangi bir eylem için engeller.

REVOKE        :Daha atanmış olan yetki veya engeli kaldırır.

NOT:Sunucuya dışarıdan bir erişim sağlamak için bir giriş (login) oluşturulmalıdır.

CREATE LOGIN Ali WITH PASSWORD =’123456’
Bu rol ile veri tabanına bir kullanıcı olarak erişim için aşağıdaki satırlar yazılmalıdır:
CREATE USER Ali
FOR LOGIN Ali
Eğer User adı ile Login adı aynı ise FOR LOGIN satırına gerek kalmaz.
Veri tabanında uygulama rolü oluşturulması için de aşağıdaki satırlar kullanılabilir:
CREATE APPLICATION ROLE Lab1
WITH PASSWORD = ‘sifre’
, DEFAULT_SCHEMA=Lab1;
 

Not: Komutları büyük harflerle yazmanız sizin için hem daha kolay anlaşılır hemde daha kolay yönetilebilirlik sağlayacak.

Ders-4 'e geçebilirsiniz.