VERĐTABANI YÖNETĐM SĐSTEMLERĐ Öğr.Gör.Sedat Telçeken ANADOLU ÜNĐVERSĐTESĐ FEN FAKÜLTESĐ MATEMATĐK BÖLÜMÜ 005 006 Bahar Dönemi BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ 4-Birleştirme Đşlemi Đki ilişkiden birinde veya her ikisinde bulunan kayıtların seçilmesi için yapılan bir işlemdir. ( U ) BĐL78 MAT14 Notu Sınıfı Notu Sınıfı CC Đsmet AA Halil CB Özlem DC Nercü BC Hakkı CB 4 π BĐL78. (σ sınıfı= (BĐL78)) Uπ MAT14. (σ sınıfı= (MAT14)) 1
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ π BĐL78. (σ sınıfı= (BĐL78)) Uπ MAT14. (σ sınıfı= (MAT14)) Halil Đsmet BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ 5-Kesişme Đşlemi Đki ilişkide de bulunan kayıtların belirlenmesi için yapılan bir işlemdir. ( ) BĐL78 MAT14 Notu Sınıfı Notu Sınıfı CC Đsmet AA Halil CB Özlem DC Nercü BC Hakkı CB 4 BA π BĐL78. (σ sınıfı= (BĐL78)) π MAT14. (σ sınıfı= (MAT14))
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ π BĐL78. (σ sınıfı= (BĐL78)) π MAT14. (σ sınıfı= (MAT14)) BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ 6-Fark Đşlemi Đki ilişkiden birinde bulunup diğerinde bulunmayan kayıtların bulunması işlemidir ( - ) BĐL78 MAT14 Notu Sınıfı Notu Sınıfı CC Đsmet AA Halil CB Özlem DC Nercü BC Hakkı CB 4 BA π BĐL78. (σ sınıfı= (BĐL78)) -π MAT14. (σ sınıfı= (MAT14))
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ π BĐL78. (σ sınıfı= (BĐL78)) -π MAT14. (σ sınıfı= (MAT14)) Halil BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ 7-Doğal Birleştirme Đşlemi (A,B) ve (B,C) niteliklerine sahip iki ayrı ilişkinin (A,B,C) niteliklerine sahip tek bir ilişki haline getirilmesine denir. ( ) BĐL78 Notu Sınıfı MAT14 Notu Sınıfı CC Đsmet AA Halil CB Özlem DC Nercü BC Hakkı CB 4 BA π BĐL78.ogrenci, BĐL78.Sınıfı (BĐL78 MAT14) 4
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ π BĐL78.ogrenci, BĐL78.Sınıfı (BĐL78 MAT14) Sınıfı BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ 8-Bölme Đşlemi Đkili ve birli iki ayrı ilişkiyi karşılaştırarak, birli olan ilişkiye eş olan ikinci ilişkinin değerlerinden oluşan yeni bir ilişki oluşturulabilir. Buna bölme işlemi denir. ( : ) ÖRNEK : Bir bankanın Eskişehir ilindeki bütün şubelerinde mevduat hesabı olan müşterileri öğrenmek istersek... Şube Mevduat Şube Adı Köprübaşı Tepebaşı YunusEmre Kızılay Ulus Đl Eskişehir Eskişehir Eskişehir Ankara Ankara Müşteri Ozan Gülderen Selma Fatih Bakiye 50 00 150 5 Şube Tepebaşı YunusEmre Kızılay Ulus 5
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ π Müşteri,Şube (MEVDUAT) :π Şube Adı (σ Đl= ESKĐŞEHĐR (ŞUBE)) Müşteri Ozan Gülderen BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ ÖĞRENCĐ Adı No Ahmet 110 Bölüm Matematik Ortalama,6 Adı KREDĐ Bakiye Đlçe Mehmet 01 Đstatistik,7 Ayşe 150 Mihalgazi Ayşe Hakkı 60 150 Biyoloji Matematik,4,9 Hakkı 50 Seyitgazi Füreyya 50 Biyoloji, Güçlü 86 Matematik,6 MEVDUAT Adı Ahmet Mehmet Ayşe Hakkı Füreyya Güçlü Đlçe Beşiktaş Alpu Mihalgazi Seyitgazi Fatsa Merkez Đl Đstanbul Eskişehir Eskişehir Eskişehir Ordu Eskişehir 6
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ SORULAR Tablosunu göz önüne alarak, Matematik Bölümünde okuyan ve ortalaması,7 den yüksek olan öğrencileri seçen ilişkisel cebir ifadeyi yazınız? Tablosundan tüm öğrencilerin sadece bölümlerini seçen ilişkisel cebir ifadesini yazınız? Seyitgazi ilşesinde kredisi olan müşterilerin ve Beşiktaş ilçesinde mevduatı olan müşterilenerin adını seçen ilişkisel cebir ifadesini yazınız?.... BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ SQL Yapısal Sorgulama Dili SELECT SQL de sorgulama işlemlerini yerine getirir. 1. Seçme işlemi : Bir tablodaki satırları seçme işlemidir.. Atma (projection): Tablodaki belirli sütunların seçilmesi işlemidir.. Birleştirme (join) : Birden fazla tablonun belirlenen sütunları arasındaki ilişkilere göre birleştirilmesi işlemidir. 7
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ SELECT deyimi SELECT [DISTINCT] {* sütun,...} FROM tablo SELECT : SQL in sorgulama deyimidir. FROM : Hangi tablonun sorgulanacağını ifade eder. DISTINCT : Tekrarlanan kayıtları önler. [ ] : Kullanılması zorunlu olmayan sözcükler yazılır. Tablo : Altı çizili ve italik olan ifadeler, kullanıcıların verdiği isimlerdir, SQL sözcüğü değildir. {....} : Birden fazla seçeneğin yazıldığı kısım, aralarına işareti konur. * : Tek bir sütunu değil tüm sütunu ifade eder. BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ SQL Yazım kuralları Büyük-küçük harf ayrımı yoktur. Bir SQL deyimi birden fazla satırda yer alabilir. SQL anahtar kelimeleri kısaltılamaz, yarıda kesilip ayrı ayrı satırlara yazılamaz. Deyimin sonuna ; konulur. Anahtar kelimeler ayrı satırlara yazılıp ifadenin okunuşu kolaylanır. 8
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Tabloda Tüm satırları seçmek SELECT * FROM tablo : (tablo ismindeki tablonun tüm sütunları seçer) ÖRNEK : ÖĞRENCĐ(BÖLÜM, NUMARASI, ADI, SINIFI) Komut; SELECT * FROM ÖĞRENCĐ; ya da SELECT * ÖĞRENCĐ FROM ÖĞRENCĐ; BÖLÜM Matematik Biyoloji Fizik Kimya NUMARASI 01000001 0000001 000001 98000001 ADI Ayşe Hikmet Veli Ajda SINIFI 1 1 BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Tabloda belirli sütunların seçilmesi SELECT BÖLÜM, NUMARASI FROM ÖĞRENCĐ; ya da SELECT BÖLÜM, NUMARASI FROM ÖĞRENCĐ; Sütun isimleri, tablo isimleriyle ifade edilebilir. Özellikle birden fazla tablo varsa bu yöntem kullanılır. SELECT ÖĞRENCĐ.BÖLÜM, ÖĞRENCĐ.NUMARASI FROM ÖĞRENCĐ; 9
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ SQL de Aritmetik ifadeler; Aritmetik ifadeler, sütunların içerdiği varlık değerlerine uygulanır. Đşlem sırası; ( ) * / + - olarak tanımlıdır. ÖRNEK; SELECT PERSONEL_NO, ADI, ÜCRET+00 FROM PERSONEL; Burada halihazdırdaki, personel tablosunun ücret sütunun değerlerine 00 eklenmiş olup yeni bir sütun oluşturulmuştur. BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ NULL Değeri Var olmayan, atanamayan, bilinmeyen bir değer olarak kabul edilir. (Kesinlikle 0 veya boşluk değildir!) Ücret * 1 + NULL NULL ÖRNEK : PERSONEL(ADI, ÜCRET, KOMĐSYON) tablomuzda aşağıdaki komut çalıştığında SELECT ADI, ÜCRET, KOMĐSYON, 1*ÜCRET+KOMĐSYON FROM PERSONEL; ADI ÜCRET KOMĐSYON 1*ÜCRET+KOMĐSYON Jason 5000 Fredy 6000 Coşkun 6500 500 78500 10
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Sütunları farklı isimlendirme SELECT komutuyla tablolardan çağrılan sütunlar gerektiğinde farklı isimlerle isimlendirilebilir. Bunu sağlayan komut AS komutudur. ÖRNEK : SELECT ADI, ÜCRET AS AYLIK ÜCRET, 1*ÜCRET+KOMĐSYON AS YILLIK ÜCRET FROM PERSONEL; BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Sütun içeriklerinin birleştirilmesi Sütunların içerdikleri değerlere birbiriyle ya da başka bir karakter dizisi ile birleştirilerek yeni değerler elde edilebilir. (Oracle da, MS Access de & kullanılır) ÖRNEK : adı ve numarasını birleştiren ve buna yeni bir isim verilen bir komut yazalım; SELECT NUMARASI & - & ADI AS NO_ADI FROM ÖĞRENCĐ; 11
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ ÇĐft (tekrarlanan) satırlar SELECT komutu aynı değerlere sahi satırların göterimini engellemez. ÖRNEK : SELECT BÖLÜM FROM ÖĞRENCĐ; Burada aynı bölüm değerine sahip satırlar görünecektir. Ancak bu komut satırına ; DISTINCT komutu eklenirse; SELECT DISTINCT BÖLÜM FROM ÖĞRENCĐ; Aynı değerler tekrarlanmayacaktır. BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Verilerin sınıflandırılması Veri tabanından verileri alırken bazı kısıtlar yardımıyla bu veriler süzgeçlerden geçirilebilir. Yani bu verilerin bir kısmı seçilebilir. Bunun için WHERE sözcüğü kullanılmaktadır. SQL içerisindeki sentaksı aşağıdaki gibidir. SELECT [DISTINCT] {* sütun,..} FROM tablo [WHERE koşul]; 1
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ WHERE Örnekleri SELECT BÖLÜM, NUMARASI, ADI, SINIFI FROM ÖĞRENCĐ WHERE SINIFI= 1 ; SELECT BÖLÜM,NUMARASI ADI, SINIFI, ORTALAMA FROM ÖĞRENCĐ WHERE ORTALAMA >=,70; <, >, <=, >=, <>, = karşılatırma işleçleri kullanılabilir. BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Diğer Karşılaştırma işleçleri BETWEEN n AND m : Đki deger arasında kalan satır degerlerini belirlemek amacıyla kullanılır. SELECT BÖLÜM,NUMARASI ADI, SINIFI, ORTALAMA FROM ÖĞRENCĐ WHERE ORTALAMA BETWEEN,00 AND 4,00; IN(Liste) : Sütun değerleri bir listedeki değerler ile karşılaştırılması gerekliyse kullanılır. SELECT BÖLÜM, NUMARASI, ADI, SINIFI FROM ÖĞRENCĐ WHERE SINIFI IN(, ); 1
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Diğer Karşılaştırma işleçleri LIKE(kural) WHERE ile birlikte bir sütunun değerini tam olarak değil; bir kısmını belirterek aratabiliriz. A* *S _Y* SELECT BÖLÜM, NUMARASI, ADI FROM ÖĞRENCĐ WHERE ADI LIKE S* ; Adı S ile başlayan öğrencilerin olduğu satırları görüntüleyecektir. BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Diğer Karşılaştırma işleçleri IS NULL : Null değeri, var olmayan, atanamayan ve bilinmeyen bir değer olduğu zamanlarda kullanılır. Burada sentaks; WHERE attribute = NULL değil, WHERE attribute IS NULL şeklindedir. ÖRNEK: SQL> SELECT Adı, Numarası, GOrtalama, FROM OGRENCI WHERE ONURBELGESI IS NULL; 14
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Diğer Karşılaştırma işleçleri IS NOT NULL : Değeri atanmış ve bilinenleri aramada kullanılır. ÖRNEK : Personel tablosu içinde, komisyon alan personelin; adını, görevini ve aldığı komisyonu listelemek istersek; SQL> SELECT Adı, Görevi, Komisyon FROM Personel WHERE Komisyon IS NOT NULL; BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Mantıksal Đşleçler AND : Đki koşulu ve mantıksal operatörü yardımıyla birleştirir. SQL> SELECT Adı, Görevi, Ücret FROM Personel WHERE Ücret >=500 AND Görevi = MEMUR ; OR : Đki koşulu veya mantıksal operatörü yardımıyla birleştirir. NOT : Bir koşulun doğruluk değerinin değilini almaya yarar. SQL> SELECT Adı, Görevi FROM Personel WHERE Görevi NOT IN ( MEMUR, ŞEF, PAZARLAMACI ); SQL> SELECT Adı, Görevi FROM Personel WHERE Görevi NOT LIKE ŞEF ; 15
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Đşleçlerin Đşlem Sıraları WHERE sözcüğü içerisinde yer alan işleçler 1. Tüm karşılaştırma işleçleri. NOT. AND 4. OR Sırasına göre işleme tabi tutulur. Bunların dışında parantez de kullanılabilir. Parantez içi diğerlerine göre önceliğe sahiptir. ÖRNEK: SQL> SELECT Adı, Görevi, Ücret FROM Personel WHERE Görevi = MEMUR OR Görevi = ŞEF AND Ücret > 600; BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Sıralama Đşlemleri Tabloların satırlarının herhangi bir sütuna göre sıralı olarak elde edilmesi söz konusu ise kullanılır. (ORDER BY) SELECT [DISTINCT] {* sütun,..} FROM tablo [WHERE koşul] [ORDER BY {sütun, ifade } [ASC DESC]; ASC : Satırları artan sırada seçer, herhangi bir tanım yok ise, ASC seçildiği varsayılır. DESC : Satırları azalan sırayla dizer. 16
BĐL78 - VERĐTABANI YÖNETĐM SĐSTEMLERĐ Sıralama Đşlemleri ÖRNEK : leri Doğum tarihine göre sıralamak istersek; SQL> SELECT Adı, Soyadı, Doğum_Tar FROM ORDER BY Doğum_Tar; SQL> SELECT Adı, Soyadı, Doğum_Tar, Sınıf FROM ORDER BY Sınıf, Doğum_Tar DESC; 17