SAKARYA ÜNİVERSİTESİ Veri Tabanı Tasarım ve Yönetimi Hafta 5 Prof. Dr. Ümit KOCABIÇAK Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim" tekniğine uygun olarak hazırlanan bu ders içeriğinin bütün hakları saklıdır. İlgili kuruluştan izin almadan ders içeriğinin tümü ya da bölümleri mekanik, elektronik, fotokopi, manyetik kayıt veya başka şekillerde çoğaltılamaz, basılamaz ve dağıtılamaz. Her hakkı saklıdır 2008 Sakarya Üniversitesi
5.1. SQL (Structured Query Language) İlişkisel Veritabanı Yönetim Sistemleri modeli ilk önce 1970 yılında Dr. E. F.Codd tarafından tarif edilmiştir. SQL IBM firması tarafından Codd'un modelini kullanmak için geliştirilmiştir. 1979 yılında, Relational Software (şu an, Oracle Corporation), SQL'in ilk ticari uygulamasını geliştirmiştir. Bugün, SQL, ilişkisel veritabanı yönetim sistemleri standardı olarak kabul edilmektedir. SQL, ilişkisel veritabanlarındaki bilgileri sorgulamak için kullanılan dildir. SQL, bütün kullanıcıların ve uygulamaların veritabanına erişmek için kullandıkları komutlar bütünüdür. Uygulama programları ve veritabanı araçları kullanıcılara çoğu durumda SQL kullanmadan veritabanına erişim imkanı sunmaktadırlar fakat bu uygulamalar da geri planda SQL kullanmaktadırlar. SQL komutları bir veya daha fazla satır olabilmektedir. SQL cümlelerinin sonuna noktalı virgül (;) konmaktadır. SQL deyimleri büyük küçük harf ayırımından etkilenmez Önceleri SEQUEL (Structred English QUEry Language) olarak adlandırılan bu dilin adı, daha sonra ingilizce söylenişine uygun olarak SQL olarak değiştirildi. SQL, bilgisayar uzmanı olmayan ve yüksek düzeyli, işlemsel olmayan bir dil aracılığıyla veri tabanı ile iletişim kurmak isteyen kullanıcı kitlelerine yönelik bir veri tabanı dilidir. 5.2. SELECT Deyimi SQL de sorgulama işlemleri, SELECT deyimi kullanılarak yerine getirilir. Select [DISTINCT] {*, SÜTUN,..} From Tablo_adı Tablonun tüm sütunlarını seçmek için * kullanılır. Belirli sütunların seçilmesi için sütunların isimleri belirtilmelidir. Örnek : STOK tablosundaki tüm sütunları listelemek için, SELECT * FROM STOK; Örnek : OGRENCI tablosundaki OGR_NO, ADI sütunlarını listelemek için, SELECT OGR_NO, ADI ; Özellikle birden fazla tablo ile çalışıldığı durumlarda sütun isimleri tablo ismiyle birlikte kullanılır. Örnek : OGRENCI tablosundaki OGR_NO, OGRENCI tablosundaki OGR_AD sütunlarını listelemek için, SELECT OGRENCI. OGR_NO, OGRENCI.OGR_AD ;
5.2.1. Aritmetik İfadeler Aritmetik ifadeler sütun isimleri, sabit sayısal değerler ve aritmetik operatörlerden oluşur. Örnek : MAAS tablosunun BRUT adlı sütunundaki sayısal değeri 0.15 ile çarpmak için; SELECT AD, SOYAD, BRUT * 0.15 FROM MAAS; ifadesi yazılır. Bu ifade SELECT deyimi içerisinde yazıldığında ayrı bir sütun biçiminde oluşturulur. NULL değer var olmayan bir değer olarak kabul edilir. Eğer bir sütün NULL değerler içeriyorsa SELECT deyimi çalıştırıldığında bu değerler sıfır olarak değil, boş olarak görüntülenir. 5.2.2. Sütunlar İçin Takma İsim Kullanılması ve İçeriklerin Birleştirilmesi Başlıkların alan adları dışında bir isimle görüntülenmesi için AS anahtar kelimesi kullanılır. Eğer takma isim birden fazla kelimeden oluşuyorsa çift tırnak ( ) işaretleri içerisinde yer almalıdır. Örnek : SELECT ADSOYAD AS İSİM FROM MAAS; Örnek : SELECT ADSOYAD AS İSİM, BRUT AS BRÜT ÜCRET, 0.15*BRUT AS VERGİ FROM MAAS; Örnek : Sütün içeriklerini birleştirme için örnek. SELECT AD & & SOYAD AS ISIM 5.2.3. Tekrarlı Satırların Engellenmesi Tekrarlı satırların yalnızca bir tanesi listelenmek isteniyorsa SELECT deyimi DISTINCT anahtar kelimesi ile kullanılır. Örnek : Aynı BOLUM isimlerinden sadece birer tanesi listelenmek istenirse, SELECT DISTINCT BOLUM ;
5.2.4 Bilgilerin Koşula Bağlı Olarak Seçilmesi Belirli bir koşulu sağlayan kayıtların süzülmesi için WHERE Şart ifadesi kullanılır. Örnek : BOLUM sütunu BİLGISAYAR olanları listeleyen SQL komutu SELECT ADI, BOLUM_NO, TELEFON WHERE BOLUM= BILGISAYAR ; 5.3. KARŞILAŞTIRMA OPERATÖRLERİ 5.3.1. İlişki Operatörleri Örnekler : = eşit > büyük < küçük >= büyük eşit <= küçük eşit <> eşit değil SELECT AD, GOREV, MAAS FROM BORDRO WHERE MAAS <=1500 SELECT ADSOY, OGRNO, DERS WHERE BASARINOTU <> FF 5.3.2. Mantıksal Operatörler AND (ve) : Her iki şartın değeri TRUE (doğru) ise, sonuç olarak TRUE (doğru) döndürür. OR (veya) : Şartlardan birinin değeri TRUE (doğru) ise, sonuç olarak TRUE (doğru) döndürür NOT (değil) : Bu operatörü izleyen şart FALSE (yanlış) ise, sonuç olarak TRUE (doğru) döndürür. Örnek : Ücreti 1000 e eşit veya daha büyük ve işi HİZMETLİ olan personeli listelemek istiyoruz. SELECT ADI, GÖREVİ, ÜCRET WHERE ÜCRET >=1000 AND GÖREVİ= HİZMETLİ Örnek : Ücreti 1000 den küçük ya da 2000 den büyük personeli listeleyen SQL ifadesi SELECT ADI, ÜCRET WHERE ÜCRET <1000 OR ÜCRET >2000;
5.3.3. (Between And...) Operatörü: İki değer arasında kalanları seçme işleminde kullanılan ifadedir. Örnek : MAAS değerleri 1000 ile 1500 arasında olan kişileri listeleyen SQL ifadesi SELECT ADI, MAAS FROM BORDRO WHERE MAAS BETWEEN 1000 AND 1500 5.3.4. (In) Operatörü : Liste içindeki değerle karşılaştırma yaparak şartı gerçekleştirir. Örnek : BOLUM ü BILGISAYAR, ENDUSTRI ve ELEKTRONIK olan öğrencileri seçen SQL ifadesi SELECT ADI, OGRNO, BOLUMU WHERE BOLUMU IN ( BILGISAYAR, ENDUSTRI, ELEKTRONIK ) 5.3.5. (Like) Operatörü : Karakter grubu ile karşılaştırma yapmak için kullanılır. H%, H* : H harfi ile başlıyanlar %A, *A : A ile bitenler?k : İlk karakteri herhangi bir karakter ve 2. Karakteri K olan 2 karakterli bilgi. Örnek : ADI H harfi ile başlayanlar seçilecektir. SELECT ADI, BOLUMU, OGRNO WHERE ADI LIKE H* 5.4. SIRALAMA Sıralama işlemi için SELECT ifadesinde ORDER BY kullanılır. Bu ifadede ASC kelimesi kullanılırsa sıralamanın küçükten büyüğe (A dan Z ye doğru), DESC kullanılırsa büyükten küçüğe doğru (Z den A ya doğru) olacağı belirtilmiş olur. Her ikisi de kullanılmazsa sıralama küçükten büyüğe doğru yapılır. Örnek : Öğrenciyi numarasına göre sıralayan SQL ifadesi SELECT ADI, OGRNO, BOLUMU ORDER BY OGRNO Örnek : Öğrencilerin her ders içerisinde başarısına göre büyükten küçüğe sıralanması isteniyor. SELECT ADI, OGRNO, DERS,BASARI ORDER BY DERS, BASARI DESC
5.5. FONKSİYONLAR 5.5.1. AVG fonksiyonu : Herhangi bir sütunun sayısal değerlerinin aritmetik ortalamasını bulmak için kullanılır. Örnek: Ögrencilerin YAS ortalamasını bulmak SELECT AVG (YAS) AS ORTALAMA ; Örnek: Çalışan personelin içerisinde GOREV i HIZMETLİ olanların ortalama MAAS ını hesaplayan SQL ifadesi SELECT AVG(MAAS) AS ORTALAMA WHERE GOREV= HIZMETLI ; 5.5.2. SUM fonksiyonu : Herhangi bir sütunun sayısal değerlerin toplamını bulur. Örnek: Burs alan Öğrencilerin BURS toplamını hesaplayan SQL ifadesi SELECT SUM (BURS) AS TOPLAM ; 5.5.3. MAX ve MIN fonksiyonları : Herhangi bir sütunun içerdiği değerlerin en büyük (MAX) ve en küçük (MIN) olanlarını bulmak için kullanılır. Örnek: Bölümün en yaşlı öğrencisini bulmak için yazılacak SQL cümlesi SELECT MIN(DOGUMTAR) AS [EN YASLI] 5.5.4. COUNT fonksiyonu : Bir tablodaki kayıtların sayılması amacı ile bu fonksiyon kullanılır. COUNT (*) : Bu fonksiyon NULL değerleri de göz önüne alarak tüm kayıtların sayılmasını sağlar. COUNT (sütun): Fonksiyon bu tarzda kullanılırsa belirtilen sütunda NULL değerler içermeyen tüm kayıtların sayılmasını sağlar. Örnek: OGRENCI tablosunda kaç kayıt bulunduğunu belirleyen SQL ifadesi SELECT COUNT(*) AS [KAYIT SAYISI] ; Örnek: BİLGİSAYAR bölümünde kaç öğrenci olduğunu bulan SQL ifadesi SELECT COUNT (*) AS KAYIT SAYISI WHERE BOLUM= BİLGİSAYAR ;