1 / 116

SQL

SQL. Ne öğrenilecek. SQL’in amacı ve önemi SQL cümlesi SQL kelimeleri SQL sorgularının oluşturulması SQL’le veri tabanının güncellenmesi. Veri Tabanı Dili. İdeal halde , veri tabanı dili kullanıcıya aşağıdaki imkanları sağlamalıdır:

noleta
Download Presentation

SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL TCSS445A Isabelle Bichindaritz

  2. Ne öğrenilecek • SQL’in amacı ve önemi • SQL cümlesi • SQL kelimeleri • SQL sorgularının oluşturulması • SQL’le veri tabanının güncellenmesi TCSS445A Isabelle Bichindaritz

  3. Veri Tabanı Dili • İdeal halde, veri tabanı dili kullanıcıya aşağıdaki imkanları sağlamalıdır: • Veri tabanının ve ilişki yapılarının oluşturulması; • İlişkideki veriler üzerinde ekleme, değiştirme ve silme işlemlerinin yerine getirilmesi; • Basit ve karmaşık sorguların yerine getirilmesi • Bu işlemler kullanıcının en az çabası ile yerine getirilmeli ve komut yapısı/sözdüzeni kolay öğrenilebilen olmalıdır • Taşınabilir (farklı ortamlarda çalışabilir) olmalıdır TCSS445A Isabelle Bichindaritz

  4. SQL –genel bilgiler • SQL iki başlıca bileşenden oluşmaktadır: • Veri tabanının yapısını tanımlamak için Veri Tanımlama Dili (DDL) • Verileri çıkarmak ve güncellemek için veri işlem dili (DML) • SQL2komut denetimi akışlarını içermiyor.Bu işlemleri programlama dilleri kullanmakla gerçekleştirmek mümkündür TCSS445A Isabelle Bichindaritz

  5. SQL- genel bilgiler (devamı) • SQL öğrenmek kolaydır: • Yordamsal olmayan dildir – hangi bilginin gerektiğinin belirlenmesi yeterlidir, bu bilginin nasıl alındığının gösterilmesine ihtiyaç yoktur; • Serbest biçimlidir (free-format) TCSS445A Isabelle Bichindaritz

  6. SQL-genel bilgiler (devamı) • İngiliz dilinin kelimelerini içerir: 1) CREATE TABLE Staff(staffNo VARCHAR(5), lName VARCHAR(15), salary DECIMAL(7,2)); 2) INSERT INTO Staff VALUES (‘SG16’, ‘Brown’, 8300); 3) SELECT staffNo, lName, salary FROM Staff WHERE salary > 10000; TCSS445A Isabelle Bichindaritz

  7. SQL-genel bilgiler (devamı) • Veri ve Veri Tabanı yöneticileri, şirket yöneticileri, uygulama geliştiricileri, ve diğer kullanıcılar yararlana bilir • SQL için ISO standardı mevcuttur. Bu, ilişkisel veritabanları için resmi ve de facto (faktık) standart dildir TCSS445A Isabelle Bichindaritz

  8. SQL’in tarihçesi • 1974’de, D. Chamberlin (IBM San Jose Laboratory) ‘Structured English Query Language’ (SEQUEL) adlandırılan dil geliştirdi. • Bu dilin sonraki sürümü, SEQUEL/2 1976 ‘da geliştirildi, fakat yasal nedenlerden dolayı sonradan SQL olarak tanımlandı TCSS445A Isabelle Bichindaritz

  9. SQL’in tarihçesi • IBM,sonradanSystem R adlı SEQUEL/2 tabanlı VTYS geliştirdi. • Ama SQL’in kökü, System R’den önce geliştirilmiş SQUARE (Specifying Queries as Relational Expressions) projesine dayanıyor TCSS445A Isabelle Bichindaritz

  10. SQL’in tarihçesi • 70’lerin sonlarında ORACLE meydana çıktı ve SQL tabanlı ilk ticari İVTYS (RDBMS) oldu • 1987’de ANSI ve ISO,SQL için başlangıç standardı yayınladılar • 1989’da ISO, ‘Integrity Enhancement Feature’ (bütünlüğün sağlanması özellikleri) tanımını ekledi • 1992’de ISO standardına tam cevap veren SQL2 veya SQL/92 sürümü geliştirildi • 1999’de nesneye yönelik veri yönetimini destekleyen SQL3 sunuldu TCSS445A Isabelle Bichindaritz

  11. SQL komutlarının yazılışı • SQL cümlesi anahtar kelimelerden (reserved words) ve kullanıcı tanımlı kelimelerden oluşmaktadır (User-defined words). • Anahtar kelimeler tanımlandığı gibi yazılmalıdır ve satırlara bölünemez • Kullanıcı tanımlı kelimeler veri tabanındaki ilişki, sütun, görünüm gibi değişkenleri tanımlamak içindir TCSS445A Isabelle Bichindaritz

  12. SQL komutlarının yazılışı • SQL cümlesinin bileşenleri, sabit karakter türündekiler dışında büyük-küçük harflere duyarsızdır • SQL cümlesinin okunaklı olması için tavsiyeler: • Her yantümce ( clause) yeni satırdan başlamalıdır. • Tüm yantümceler alt-alta aynı hizada yazılmalıdır • Eğer yantümce birkaç kısımdan oluşuyorsa her bir kısım ayrıca satırda ve yantümcenin başladığı yerden bir az sağdan yazılmalıdır TCSS445A Isabelle Bichindaritz

  13. SQL cümlesinin sabitleri • Tüm sayısal olmayan sabitler tek tırnak arasında yazılmalıdır (örn., ‘London’). • Sayısal sabitler tırnak içinde yazılmaz (örn., 650.00). TCSS445A Isabelle Bichindaritz

  14. SELECT cümlesi SELECT [DISTINCT | ALL] {* | [satır ifadesi [AS yeni ad] [,...] } FROM Tablo Adı [alias] [, ...] [WHERE koşul] [GROUP BY sütun listesi] [HAVING koşul] [ORDER BY sütun listesi] SELECT cümlesinin ifadesinde Backus–Naur yazılım biçimi (BNF) kullanılmıştır. Bu yazılıma göre «I» simgesi «veya» anlamındadır. [ ] – ifadenin zorunlu olmadığını, ... Kelimenin tekrarlandığını göstermek içindir TCSS445A Isabelle Bichindaritz

  15. SELECT cümlesi FROMkullanılacak tablo(lar) WHEREsatırları seçme koşulu GROUP BYbelirlenmiş sütundaki değerleri aynı olan satırların bir grupta toplanması HAVINGgrupların belirli koşul üzere seçilmesi SELECTsonuç ilişkide hangi sütunların olacağının belirlenmesi ORDER BYsütun(sütunlar) değerlerine göre sonuç ilişkinin satırlarının sıralanması TCSS445A Isabelle Bichindaritz

  16. SELECT cümlesi • Yantümcelerin ardışıklığı değiştirilemez • Yalnız SELECT ve FROM zorunludur TCSS445A Isabelle Bichindaritz

  17. Tüm sütunlar,tüm satırlar Tüm personellerin ayrıntılı bilgileri. SELECT staffNo, fName, lName, address, position, sex, DOB, salary, branchNo FROM Staff; TCSS445A Isabelle Bichindaritz

  18. Tüm sütunlar, tüm satırlar (devamı) • *simgesi ‘tüm sütunlar’ anlamında kullanılır • SELECT * • FROM Staff; TCSS445A Isabelle Bichindaritz

  19. Bazı sütunlar, tüm satırlar Yalnız numarasını, ad ve soyadını, maaşını göstermekle tüm personellerin bilgileri (No, ad,soyad ve maaşları) SELECT staffNo, fName, lName, salary FROM Staff; TCSS445A Isabelle Bichindaritz

  20. DISTINCT kullanımı Bakılmış tüm evlerin numaraları SELECT propertyNo FROM Viewing; TCSS445A Isabelle Bichindaritz

  21. DISTINCT kullanımı • DISTINCT, tekrarlanan satırları elemek içindir Bakılmış farklı evlerin numaraları SELECT DISTINCT propertyNo FROM Viewing; TCSS445A Isabelle Bichindaritz

  22. Hesaplanan alanlar (Calculated Fields) Personellerin numaralar, adları, soyadları, ve aylık maaşları SELECT staffNo, fName, lName, salary/12 FROM Staff; TCSS445A Isabelle Bichindaritz

  23. Hesaplanan Alanlar (devamı) • Sütunu adlandırmak için AS kelimesi kullanılır SELECT staffNo, fName, lName, salary/12 AS monthlySalary FROM Staff; «AS» sütunu yeniden adlandırmak için de kullanıla bilir. Hesaplanan alanlarda birden fazla tablonun sütunlarının kullanılması mümkündür TCSS445A Isabelle Bichindaritz

  24. Koşullu arama Maaşı 10,000’den yüksek olan personellerin bilgileri SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary > 10000; TCSS445A Isabelle Bichindaritz

  25. Karmaşık koşul London veya Glasgow kentlerindeki tüm şubelerin adres bilgileri (No,cadde,kent ve posta kodları) SELECT * FROM Branch WHERE city = ‘London’ OR city = ‘Glasgow’; TCSS445A Isabelle Bichindaritz

  26. Değer aralıklarının kullanılması maaşları 20,000 ve 30,000 arasında olan personellerin bilgileri SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary BETWEEN 20000 AND 30000; • BETWEEN aralığın uç değerlerini de içeriyor TCSS445A Isabelle Bichindaritz

  27. Değer aralıklarının kullanılması (devamı) • Eksi anlamda NOT BETWEENkullanılır • BETWEEN, SQL’e ilave güç katmaz. Onun görevini diğer işlemlerle de gerçekleştirmek mümkündür: SELECT staffNo, fName, lName, position,salary FROM Staff WHERE salary>=20000 AND salary <= 30000; TCSS445A Isabelle Bichindaritz

  28. Küme üyeliği Tüm yöneticilerin ve denetleyicilerin listesi SELECT staffNo, fName, lName, position FROM Staff WHERE position IN (‘Manager’, ‘Supervisor’); TCSS445A Isabelle Bichindaritz

  29. Küme üyeliği (devamı) • Eksi işlem yapan sürümü de mevcuttur: (NOT IN). • IN, SQL’e ilave güç katmaz • Aynı sonucu aşağıdaki ifadeden de almak mümkündür: SELECT staffNo, fName, lName, position FROM Staff WHERE position=‘Manager’ OR position=‘Supervisor’; • IN’in kullanımı, kümede çok sayıda kesintili değer olduğu zaman etkilidir TCSS445A Isabelle Bichindaritz

  30. Örüntülerin (Pattern)eşleştirilmesi Adreslerinde ‘Glasgow’ altsatırı bulunan tüm mülk sahipleri SELECT clientNo, fName, lName, address, telNo FROM PrivateOwner WHERE address LIKE ‘%Glasgow%’; TCSS445A Isabelle Bichindaritz

  31. Örüntülerin karşılaştırılması • SQL’de örüntüleri karşılaştırmak için 2 özel simge kullanılıyor: • %: sıfır veya daha fazla karakter; • _ (alt çizgi): her hangi sayıda karakter • LIKE ‘%Glasgow%’- ‘Glasgow’altsatırını içeren, herhangi uzunlukta karakterler ardışıklığını ifade ediyor TCSS445A Isabelle Bichindaritz

  32. NULL arama koşulu PG4 evi üzere görüş bildirmemiş müşterinin numarası ve eve bakış tarihi • PG4’e iki bakış yapılmış, birisinde görüş (açıklama) bildirilmemiştir. • IS NULLsözcüğü ile sorgunun cevabını bula bileriz: SELECT clientNo, viewDate FROM Viewing WHERE propertyNo = ‘PG4’ AND comment IS NULL; TCSS445A Isabelle Bichindaritz

  33. NULL arama koşulu • Null olmayan değerleri (IS NOT NULL) ile aramak mümkündür. TCSS445A Isabelle Bichindaritz

  34. Tek sütun üzere sıralama Maaşların azalma ardışıklığı ile personellerin bilgileri listesi SELECT staffNo, fName, lName, salary FROM Staff ORDER BY salary DESC; TCSS445A Isabelle Bichindaritz

  35. Tek sütun üzere sıralama (devamı) Evlerin türüne göre sıralama yapmakla tüm kiralık evlerin alfabetik sıra ile listesi SELECT propertyNo, type, rooms, rent FROM PropertyForRent ORDER BY type; TCSS445A Isabelle Bichindaritz

  36. Çok sütun üzere sıralama • Bu listede 4 daire (“flat”) bulunmaktadır. İkinci sıralama kıstası bulunmadığından bu listenin satırları tabloda rast geldikleri ardışıklık ile sıralanmışlar • Kiranın (rent) azalma sırası tabloyu yeniden düzenleye bileriz: SELECT propertyNo, type, rooms, rent FROM PropertyForRent ORDER BY type, rent DESC; TCSS445A Isabelle Bichindaritz

  37. SELECT yantümce – Kümeleme (Aggregate) • ISO standardı 5 kümeleme fonksiyonunu tanımlar: COUNTbelirtilmiş sütundaki değerler sayısı SUMbelirtilmiş sütundaki değerlerin toplamı AVGbelirtilmiş sütundaki değerlerin ortalaması MINbelirtilmiş sütundaki en küçük değer MAXbelirtilmiş sütundaki en büyük değer TCSS445A Isabelle Bichindaritz

  38. SELECT yantümcesi - Kümeleme • Tablonun tek sütunu üzere işlem yapılıyor. Sonuç tek bir değerdir • COUNT, MIN, ve MAX hem sayısal, hem de sayısal olmayan alanlar için uygulana bilir. SUM ve AVG yalnız sayısal alanlar için kullanıla bilir. • COUNT(*) dışında tüm fonksiyonlar önce null değerleri eler ve işlemi, null olmayan değerler üzerinde yaparlar TCSS445A Isabelle Bichindaritz

  39. SELECT yantümcesi-kümeleme • COUNT(*),null veya tekrarlanan değerlere bakmaksızın, tablonun tüm satırlarını sayar. • Tekrarları elemek için sütun adından önce DISTINCT kullanıla bilir • DISTINCT’in MIN/MAX fonksiyonlarında etkisi yoktur, ama SUM/AVG kullanımında etkilidir TCSS445A Isabelle Bichindaritz

  40. SELECT yantümcesi-kümeleme • Kümeleme fonksiyonları yalnız SELECT listesinde ve HAVING sözcüğünde kullanıla bilir • Eğer SELECT listesinde kümeleme fonksiyonu varsa ve sorguda GROUP BY kullanılmamışsa, o zaman kümeleme fonksiyonun dışında, SELECT listesinde hiçbir sütun adı olamaz. Örneğin, aşağıdaki yazılış yanlıştır: SELECT staffNo, COUNT(salary) FROM Staff; TCSS445A Isabelle Bichindaritz

  41. COUNT(*) kullanımı aylık kira hakkı $350 üzerinde olan kaç ev vardır: SELECT COUNT(*) AS count FROM PropertyForRent WHERE rent > 350; TCSS445A Isabelle Bichindaritz

  42. COUNT(DISTINCT) kullanımı Mayisayında kaç farklı eve bakılmıştır SELECT COUNT(DISTINCT propertyNo) AS count FROM Viewing WHERE viewDate BETWEEN ‘1-May-11’AND ‘31-May-11’; TCSS445A Isabelle Bichindaritz

  43. COUNT ve SUM kullanımı Yöneticilerin sayıları ve onların toplam maaşları SELECT COUNT(staffNo) AS sayı, SUM(salary) AS toplam FROM Staff WHERE position = ‘Manager’; TCSS445A Isabelle Bichindaritz

  44. MIN, MAX, AVG kullanımı Personellerinen düşük, en yüksek,veortalama maaşlarını bulmalı SELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg FROM Staff; TCSS445A Isabelle Bichindaritz

  45. SELECT cümlesi - Gruplaştırma • Grup içinde genelleştirme yapmak için GROUP BY sözcüğü kullanılmaktadır • SELECT ve GROUP BY bütünleşiktir: SELECTlistesinde bulunan her kelime, grup için tek bir değeri ifade eder. SELECT sözcüğü yalnız: • Sütun adlarını • Kümeleme fonksiyonlarını, • Bunların kombinasyonundan oluşan ifadeleri içere bilir TCSS445A Isabelle Bichindaritz

  46. SELECT cümlesi - Gruplaştırma • SELECT listesindeki tüm sütun adları, eğer kümeleme fonksiyonunda kullanılmamışsa GROUP BY sözcüğünde bulunmalıdır • Eğer WHERE, GROUP BY ile birlikte kullanılıyorsa, WHERE önce gelmelidir. Gruplar, koşulu sağlayan satırlar üzere oluşturuluyor. TCSS445A Isabelle Bichindaritz

  47. Örnek 5.17 GROUP BY kullanımı Her şubedeki personel sayısı ve toplam maaşları SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo ORDER BY branchNo; TCSS445A Isabelle Bichindaritz

  48. GROUP BY kullanımı TCSS445A Isabelle Bichindaritz

  49. Sınırlı gruplaştırma – HAVING sözcüğü • HAVING sözcüğü, verilmiş koşulları sağlayan grupları tanımlamak için kullanılıyor • WHERE’e benzerdir. Ama WHERE satırların elenmesinde, HAVING grupların elenmesinde kullanılar • HAVING sözcüğündeki sütun adları GROUP BY listesinde de bulunmalı veya kümeleme fonksiyonunun argümanı olmalıdırlar TCSS445A Isabelle Bichindaritz

  50. HAVING kullanımı 1’den fazla üyesi olan her bir şubenin personel sayısı ve toplam maaşları SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo HAVING COUNT(staffNo) > 1 ORDER BY branchNo; TCSS445A Isabelle Bichindaritz

More Related