VERİTABANI YÖNETİM SİSTEMLERİ BÖLÜM 7 SQL CEN 224 , Bahar 2023 Doç . Prof. Dr. Mümine KAYA KELEŞ Bilgisayar Mühendisliği Bölümü Adana Alparslan Türkeş Bilim Ve teknoloji Üniversite 1 2 SQL'in amaçları DERS İÇERİĞİ 1. 2. 3. 4. 5. nedir ? DML DDL DCL TCL İdeal olarak, veritabanı dili kullanıcının şunları yapmasına izin vermelidir: veritabanı ve ilişki yapılarını oluşturmak; ilişkilerden veri ekleme, değiştirme, silme işlemlerini gerçekleştirin; basit ve karmaşık sorgular gerçekleştirin. Bu görevleri minimum kullanıcı çabası ile gerçekleştirmeli ve komut yapısı/sözdizimi öğrenmesi kolay olmalıdır. Taşınabilir olmalıdır. 4 3 4 SQL'in amaçları SQL'in amaçları SQL, 2 ana bileşene sahip dönüşüm odaklı bir dildir: Veritabanı yapısını tanımlamak için bir DDL. Verileri almak ve güncellemek için bir DML. prosedürel değildir - nasıl alacağınızdan ziyade hangi bilgilere ihtiyacınız olduğunu belirtirsiniz; esasen serbest biçimlidir. SQL:1999'a kadar SQL, kontrol komutlarının akışını içermiyordu. Bunların bir programlama veya iş kontrol dili kullanılarak veya etkileşimli olarak kullanıcının kararlarıyla uygulanması gerekiyordu. 5 5 SQL'in öğrenilmesi nispeten kolaydır: 6 6 1 SQL'in amaçları SQL'in amaçları Standart İngilizce kelimelerden oluşur: DBA'lar, yönetim, uygulama geliştiriciler ve diğer son kullanıcı türleri dahil olmak üzere çeşitli kullanıcılar tarafından kullanılabilir. ilişkisel veritabanları için hem resmi hem de fiili standart dil haline getirir. 1) CREATE TABLE Staff(staffNo VARCHAR(5), lAd VARCHAR(15), maaş ONDALIK(7,2)); 2) Personel DEĞERLERİNE 'Kahverengi', 8300); EKLEYİN ('SG16', 3) SEÇ personelNo, lAd, maaş Personelden NEREDE maaş > 10000; 7 7 8 8 SQL'in tarihi SQL'in tarihi 1974 yılında, D. Chamberlin (IBM San Jose Laboratuvarı) dili 'Yapılandırılmış İngilizce Sorgulama Dili' (SEQUEL) olarak tanımladı. Resmi telaffuzu 'SQ-L' olmasına rağmen hala 'see-quel' olarak telaffuz ediliyor. Revize edilmiş bir sürüm olan SEQUEL/2, 1976'da tanımlandı, ancak daha sonra yasal nedenlerle adı SQL olarak değiştirildi. SEQUEL/2'ye dayalı olarak System R adlı bir prototip DBMS üretti . Bununla birlikte, SQL'in kökleri, System R projesinden önce gelen SQUARE'dedir (Sorguları İlişkisel İfadeler Olarak Belirtme). 9 9 10 10 SQL'in tarihi SQL'in Önemi 70'lerin sonlarında ORACLE ortaya çıktı ve muhtemelen SQL tabanlı ilk ticari RDBMS idi. 1987'de ANSI ve ISO, SQL için bir ilk standart yayınladı. 1989'da ISO, 'Bütünlük Geliştirme Özelliğini' tanımlayan bir ek yayınladı. 1992'de, ISO standardında SQL2 veya SQL/92 olarak anılan ilk büyük revizyon gerçekleşti. 1999'da SQL:1999, nesne yönelimli veri yönetimi desteğiyle piyasaya sürüldü. 2003'ün sonlarında, SQL:2003 piyasaya sürüldü. 2008 yazında, SQL:2008 yayınlandı. 2011'in sonlarında, SQL:2011 piyasaya sürüldü. 11 11 SQL, IBM'in Sistem Uygulama Mimarisi gibi uygulama mimarilerinin bir parçası haline geldi. Birçok büyük ve etkili organizasyonun (örn. X/OPEN) stratejik tercihidir. SQL, Amerikan Hükümetine yapılan tüm veritabanları satışları için uygunluğun gerekli olduğu Federal Bilgi İşleme Standardıdır (FIPS). 12 12 2 SQL'in Önemi SQL Komutları Yazma SQL diğer standartlarda kullanılır ve hatta diğer standartların geliştirilmesini tanımlayıcı bir araç olarak etkiler. Örnekler şunları içerir: ISO'nun Bilgi Kaynağı Dizin Sistemi (IRDS) Standardı Uzaktan Veri Erişimi (RDA) Standardı. ayrılmış sözcüklerden ve kullanıcı tanımlı sözcüklerden oluşur . – Ayrılmış kelimeler, SQL'in sabit bir parçasıdır ve tam olarak gerektiği gibi yazılmalıdır ve satırlara bölünemez. – Kullanıcı tanımlı sözcükler, kullanıcı tarafından oluşturulur ve ilişkiler, sütunlar, görünümler gibi çeşitli veritabanı nesnelerinin adlarını temsil eder. 13 13 14 14 SQL Komutları Yazma SQL Komutları Yazma Bir SQL ifadesinin çoğu bileşeni, değişmez karakter verileri dışında büyük/küçük harfe duyarsızdır . Girinti ve lineasyon ile daha okunaklı: - Her madde yeni bir satırda başlamalıdır. Bir tümcenin başlangıcı, diğer tümcelerin başlangıcıyla aynı hizada olmalıdır. Yan tümcenin birkaç bölümü varsa, her biri ayrı bir satırda görünmeli ve tümcenin başlangıcında girintili olmalıdır. Genişletilmiş BNF gösterim biçimini kullanın: Büyük harfler ayrılmış sözcükleri temsil eder. - Küçük harfler, kullanıcı tanımlı sözcükleri temsil eder. - | alternatifler gösterir . arasından seçim yapıldığını - Küme parantezler, gerekli bir öğeyi gösterir . - Köşeli parantezler isteğe bağlı bir öğeyi belirtir . - … isteğe bağlı tekrarı gösterir (0 veya daha fazla). 15 15 16 16 değişmezler Değişmez değerler, SQL deyimlerinde kullanılan sabitlerdir. Sayısal olmayan tüm sabit değerler tek tırnak içine alınmalıdır (örn. 'Londra'). Açıklamayı SEÇ [FARKLI | TÜM] {* | [columnExpression [AS newName]] [,...] } FROM TabloAdı [diğer ad] [, ...] [WHERE koşulu] [GROUP BY sütunListesi] [KOŞULA SAHİPTİR] Tüm sayısal sabit değerler tırnak içine alınmamalıdır (örn. 650.00). [SİPARİŞ TARAFINDAN sütunListesi] 17 17 18 18 3 Açıklamayı SEÇ Açıklamayı SEÇ FROM Kullanılacak tabloları belirtir. Cümlelerin sırası değiştirilemez. Yalnızca SELECT ve FROM zorunludur. WHERE Satırları filtreler. GROUP BY Aynı satır gruplarını oluşturur. sütun değeri. HAVING Filtre grupları bazılarına tabidir durum. SELECT Hangi sütunların kullanılacağını belirtir. çıktıda görünür. ORDER BY Çıktının sırasını belirtir. 19 19 20 20 Örnek 6.1 Tüm Sütunlar, Tüm Satırlar Örnek 6.1 Tüm Sütunlar, Tüm Satırlar Tüm personelin tüm ayrıntılarını listeleyin. SEÇME personelNo, fName, lName, address, pozisyon, cinsiyet, DOB, maaş, şubeNo Personelden; • 'Tüm sütunlar' için bir kısaltma olarak * kullanılabilir: SEÇME * Personelden; 21 21 22 22 Örnek 6.2 Belirli Sütunlar, Tüm Satırlar Örnek 6.2 Belirli Sütunlar, Tüm Satırlar Tüm personel için, yalnızca personel numarasını, ad ve soyadlarını ve maaşı gösteren bir maaş listesi hazırlayın. SEÇ personelNo , fName , lName , maaş Personelden; 23 23 24 24 4 Örnek 6.3 DISTINCT Kullanımı Örnek 6.3 DISTINCT Kullanımı Görüntülenen tüm mülklerin mülk numaralarını listeleyin. Özelliği SEÇHayır Kopyaları ortadan kaldırmak için DISTINCT'i kullanın: DISTINCT özelliği SEÇ Hayır GÖRÜŞMEDEN; GÖRÜŞMEDEN; 25 25 26 26 Örnek 6.4 Hesaplanmış Alanlar Örnek 6.4 Hesaplanmış Alanlar Tüm personel için, personel numarasını, adını/soyadını ve maaşını gösteren aylık maaş listesini üretin. Sütunu adlandırmak için AS yan tümcesini kullanın: SEÇ personelNo, fAd, lAd, maaş/12 SEÇ personelNo, fAd, lAd, maaş/12 AS aylıkMaaş Personelden; Personelden; 27 27 28 28 Örnek 6.5 Karşılaştırma Arama Koşulu Örnek 6.6 Bileşik Karşılaştırma Arama Koşulu 10.000'den fazla maaşı olan tüm personeli listeleyin. Londra veya Glasgow'daki tüm şubelerin adreslerini listeleyin. SEÇ personelNo, fName, lName, pozisyon, maaş SEÇME * Şubeden Personelden WHERE şehir = 'Londra' VEYA şehir = 'Glasgow'; NEREDE maaş > 10000; 29 29 30 30 5 Örnek 6.7 Menzil Arama Koşulu Örnek 6.7 Menzil Arama Koşulu 20.000 ile 30.000 arasında maaş alan tüm personeli listeleyin. SEÇ personelNo, fName, lName, pozisyon, maaş Personelden 20000 İLE 30000 ARASINDA MAAŞ NEREDE; BETWEEN testi aralığın uç noktalarını içerir. 31 31 32 32 Örnek 6.7 Menzil Arama Koşulu Ayrıca olumsuzlanmış bir sürüm ARASINDA DEĞİLDİR. BETWEEN, SQL'in ifade gücüne fazla bir şey katmaz. Şunları da yazabilir: Örnek 6.8 Set Üyeliği Tüm yöneticileri ve süpervizörleri listeleyin. personelNo, fName, lName, pozisyon SEÇİN Personelden WHERE pozisyonu IN ('Yönetici', 'Yönetici'); SEÇ personelNo, fName, lName, pozisyon, maaş Personelden NEREDE maaş>=20000 VE maaş <= 30000; Yine de, bir dizi değer için kullanışlıdır. 33 33 34 34 Örnek 6.8 Set Üyeliği Olumsuz IN, Örnek 6.9 Model Eşleştirme bir sürüm var (NOT IN). Adreslerinde 'Glasgow' geçen tüm sahipleri bulun. SQL'in ifade gücüne fazla bir şey katmaz. Bunu şöyle ifade edebilirdi: OwnerNo, fName, lName, address, telNo'yu SEÇİN personelNo, fName, lName, pozisyon SEÇİN Personelden Private Owner'DAN WHERE position='Yönetici' VEYA NEREDE '%Glasgow%' GİBİ adres; pozisyon='Yönetici'; • IN, set birçok değer içerdiğinde daha etkilidir. 35 35 36 36 6 Örnek 6.9 Model Eşleştirme Örnek 6.10 BOŞ Arama Koşulu PG4 mülkünde bir yorumun ayrıntılarını listeleyin. SQL'in iki özel kalıp eşleştirme sembolü vardır: %: sıfır veya daha fazla karakter dizisi; _ (alt çizgi): herhangi bir tek karakter. Glasgow ' içeren herhangi bir uzunlukta karakter dizisi anlamına gelir . sağlanmadığı tüm görüntülemelerin • PG4 özelliği için biri yorumlu diğeri yorumsuz olmak üzere 2 kez görüntülendi. • IS NULL özel anahtar sözcüğünü kullanarak boş değeri açıkça test etmek zorundasınız: clientNo, viewDate SEÇİN Görüntülemeden WHERE propertyNo = 'PG4' VE yorum BOŞ; 37 37 38 38 Örnek 6.11 Tek Sütun Sıralaması Örnek 6.10 BOŞ Arama Koşulu Tüm personelin maaşlarını, azalan maaş sırasına göre listeleyin. personel SEÇİNNo, fName, lName, maaş Personelden MAAŞA GÖRE SİPARİŞ TANIMLAYIN; Olumsuzlanan sürüm (IS NOT NULL), boş olmayan değerleri test edebilir. 40 39 40 Örnek 6.11 Tek Sütun Sıralaması Örnek 6.12 Çoklu Sütun Sıralaması Özellik türü sırasına göre kısaltılmış özellik listesi oluşturun. SELECT propertyNo, tip, odalar, kiralık PropertyForRent'TEN SİPARİŞ BY tipi; 41 41 42 42 7 Örnek 6.12 Çoklu Sütun Sıralaması Örnek 6.12 Çoklu Sütun Sıralaması Bu listede dört daire - küçük bir sıralama anahtarı belirtilmediğinden, sistem bu satırları istediği sırayla düzenler. Kira sırasını düzenlemek için küçük sırayı belirtin: SELECT propertyNo, tip, odalar, kiralık PropertyForRent'TEN SİPARİŞ BY tipi, kira DESC; 43 43 44 44 Örnek 6.12 Çoklu Sütun Sıralaması SELECT İfadesi - Kümeler ISO standardı, beş toplu işlevi tanımlar: COUNT, belirtilen sütundaki değerlerin sayısını döndürür. SUM, belirtilen sütundaki değerlerin toplamını döndürür. AVG, belirtilen sütundaki değerlerin ortalamasını döndürür. MIN, belirtilen sütundaki en küçük değeri döndürür. MAX, belirtilen sütundaki en büyük değeri döndürür. 45 45 Pearson Eğitim © 2015 46 SELECT İfadesi - Kümeler SELECT İfadesi - Kümeler Her biri bir tablonun tek bir sütununda çalışır ve tek bir değer döndürür. COUNT(*) bir tablonun tüm satırlarını, null değerlerin veya yinelenen değerlerin oluşup oluşmadığına bakmaksızın sayar. COUNT, MIN ve MAX, sayısal ve sayısal olmayan alanlar için geçerlidir, ancak SUM ve AVG yalnızca sayısal alanlarda kullanılabilir. Yinelemeleri ortadan kaldırmak için sütun adından önce DISTINCT kullanılabilir. COUNT(*) dışında, her işlev önce boş değerleri eler ve yalnızca kalan boş olmayan değerler üzerinde çalışır. DISTINCT'in MIN/MAX ile bir etkisi yoktur, ancak SUM/ORT ile olabilir. Pearson Eğitim © 2015 47 46 47 Pearson Eğitim © 2015 48 48 8 SELECT İfadesi - Kümeler SELECT Örnek 6.13 COUNT(*) Kullanımı Toplama işlevleri yalnızca tümcesinde kullanılabilir. listesinde ve HAVING yan SELECT listesi bir toplama işlevi içeriyorsa ve GROUP BY yan tümcesi yoksa, SELECT listesi toplama işlevi olan bir sütuna başvuruda bulunamaz. Örneğin, aşağıdakiler yasa dışıdır: Ayda 350 Sterlin'den fazla kiraya veren kaç mülk var? myCount OLARAK COUNT(*) SEÇİN PropertyForRent'TEN NEREDE kira > 350; personel SEÇİNHayır, COUNT(maaş) Personelden; 49 Pearson Eğitim © 2015 49 Pearson Eğitim © 2015 50 Örnek 6.14 Kullanımı COUNT(DISTINCT) Örnek 6.15 COUNT ve Kullanımı Yönetici sayısını ve maaşlarının toplamını bulun. Mayıs '13'te kaç farklı mülk görüntülendi? myCount OLARAK propertyNo) SEÇİN myCount SEÇİN, COUNT(DISTINCT OLARAK SUM COUNT(personelNo) SUM(maaş) AS mySum Görüntülemeden Personelden NEREDE viewDate '1-Mayıs-13' ARASINDA WHERE pozisyonu = 'Yönetici'; VE '31-Mayıs-13'; Pearson Eğitim © 2015 Pearson Eğitim © 2015 51 52 Örnek 6.16 Kullanımı MIN, MAX, SELECT İfadesi - Gruplama AVG Minimum, maksimum ve ortalama personel maaşını bulun. myMin OLARAK MIN(maaş) SEÇİN, MAX(maaş) AS myMax, Ara toplamları almak için GROUP BY deyimini kullanın. SELECT ve GROUP BY yakından entegre edilmiştir: SELECT listesindeki her öğe, grup başına tek değerli olmalıdır ve SELECT yan tümcesi yalnızca şunları içerebilir: sütun AVG(maaş) AS myAvg adları toplama Personelden; işlevleri sabitler yukarıdakilerin Pearson Eğitim © 2015 53 kombinasyonlarını içeren ifade. Pearson Eğitim © 2015 54 54 9 SELECT İfadesi - Gruplama SELECT listesindeki tüm sütun adları, ad yalnızca bir toplama işlevinde kullanılmadığı sürece GROUP BY yan tümcesinde görünmelidir. GROUP BY ile WHERE kullanılırsa, önce WHERE uygulanır, ardından yüklemi sağlayan kalan satırlardan gruplar oluşturulur. ISO, GROUP BY amaçları için iki boş değeri eşit kabul eder. Örnek 6.17 GROUP BY Kullanımı Her şubedeki personel sayısını ve toplam maaşlarını bulunuz. şube SEÇHayır, COUNT(personelNo) AS myCount, SUM(maaş) AS mySum Personelden GRUP BY şubeHayır SİPARİŞ BY şubeNo; Pearson Eğitim © 2015 55 55 Pearson Eğitim © 2015 56 56 Örnek 6.17 GROUP BY Kullanımı Kısıtlanmış Gruplamalar – HAVING yan tümcesi HAVING yan tümcesi, nihai sonuç tablosunda görünen grupları kısıtlamak için GROUP BY ile birlikte kullanılmak üzere tasarlanmıştır. Pearson Eğitim © 2015 57 57 WHERE'ye benzer, ancak WHERE tek tek satırları filtrelerken, HAVING grupları filtreler. HAVING yan tümcesindeki sütun adları da GROUP BY listesinde görünmelidir veya bir toplama işlevi içinde yer almalıdır. Pearson Eğitim © 2015 58 58 Örnek 6.18 HAVING Kullanımı Örnek 6.18 HAVING Kullanımı 1'den fazla personeli olan her şube için, her şubedeki personel sayısını ve maaşlarının toplamını bulunuz. şube SEÇHayır, COUNT(personelNo) AS myCount, SUM(maaş) AS mySum Personelden GRUP BY şubeHayır HAVING SAYISI(personelNo) > 1 SİPARİŞ BY şubeNo; Pearson Eğitim © 2015 59 59 Pearson Eğitim © 2015 60 60 10 alt sorgular Örnek 6.19 Eşitliğe Sahip Alt Sorgu Bazı SQL ifadeleri, içlerinde gömülü bir SELECT'e sahip olabilir. Bir alt seçim, bir dış SELECT'in WHERE ve HAVING yan tümcelerinde kullanılabilir ve buna alt sorgu veya iç içe sorgu adı verilir . Alt seçimler INSERT, UPDATE ve DELETE deyimlerinde de görünebilir. '163 Main St' şubesinde çalışan personeli listeleyin. personelNo, fName, lName, pozisyon SEÇİN Personelden NEREDE şubeNo = (Şube SEÇİNHayır Şubeden NEREDE sokak = '163 Ana Cadde'); 61 Pearson Eğitim © 2015 61 Pearson Eğitim © 2015 62 62 Örnek 6.19 Eşitliğe Sahip Alt Sorgu İç SEÇİM '163 Main St' ('B003') şubesi için şube numarasını bulur. Outer SELECT daha sonra bu ayrıntılarını alır. Dış SELECT şu hale gelir: şubede çalışan tüm Örnek 6.19 Eşitliğe Sahip Alt Sorgu personelin personelNo, fName, lName, pozisyon SEÇİN Personelden NEREDE şubeNo = 'B003'; Pearson Eğitim © 2015 63 63 Pearson Eğitim © 2015 64 Örnek 6.20 Toplu Alt Sorgu Örnek 6.20 Toplu Alt Sorgu Maaşı ortalama maaştan fazla olan tüm personeli listeleyin ve ne kadar olduğunu gösterin. SEÇ personelNo, fAd, lAd, pozisyon, maaş – (Personelden AVG(maaş) SEÇİN) As SalDiff Personelden NEREDE maaş > (ORTALAMA(maaş) SEÇİN Personelden); Pearson Eğitim © 2015 65 64 'NEREDE maaş > AVG(maaş)' yazamıyor Bunun yerine, ortalama maaşı (17000) bulmak için alt sorguyu kullanın ve ardından bundan daha yüksek maaşı olan personeli bulmak için dış SELECT'i kullanın: SEÇ personelNo, fAd, lAd, pozisyon, maaş – 17000 salDiff olarak Personelden NEREDE maaş > 17000; 65 Pearson Eğitim © 2015 66 66 11 Örnek 6.20 Toplu Alt Sorgu Pearson Eğitim © 2015 Alt Sorgu Kuralları ORDER BY yan tümcesi bir alt sorguda kullanılamaz (ancak en dıştaki SELECT'te kullanılabilir). Alt sorgu SEÇ listesi, EXISTS kullanan alt sorgular dışında, tek bir sütun adı veya ifadesinden oluşmalıdır. Varsayılan olarak, sütun adları, alt sorgunun FROM yan tümcesindeki tablo adını ifade eder. Takma ad kullanarak FROM'daki bir tabloya başvurabilir . 67 67 Pearson Eğitim © 2015 68 68 Alt Sorgu Kuralları Alt sorgu bir karşılaştırmada bir işlenen olduğunda, alt sorgu sağ tarafta görünmelidir. Bir alt sorgu, bir ifadede işlenen olarak kullanılamaz. Örnek 6.21 İç içe alt sorgu: IN kullanımı '163 Main St' personeli tarafından yönetilen mülkleri listeleyin. Mülkü SEÇİNNo, sokak, şehir, posta kodu, tip, odalar, kira PropertyForRent'TEN NEREDE personelGİRİŞ YOK (Personel SEÇİNHayır Personelden NEREDE şubeNo = (Şube SEÇİNHayır Şubeden NEREDE sokak = '163 Ana Cadde')); Pearson Eğitim © 2015 69 69 Pearson Eğitim © 2015 70 Örnek 6.21 İç içe alt sorgu: IN kullanımı Pearson Eğitim © 2015 71 70 HERHANGİ BİRİ ve TÜMÜ 71 ANY ve ALL, tek bir sayı sütunu oluşturan alt sorgularla birlikte kullanılabilir. tüm değerler tarafından karşılanırsa doğru olacaktır . herhangi bir değer tarafından karşılanıyorsa doğru olacaktır . Alt sorgu boşsa ALL true, HERHANGİ BİR false döndürür. ANY yerine SOME kullanılabilir. Pearson Eğitim © 2015 72 72 12 Örnek 6.22 ANY/SOME Kullanımı Örnek 6.22 ANY/SOME Kullanımı Maaşı B003 şubesindeki en az bir personelin maaşından daha yüksek olan personeli bulun. İç sorgu {12000, 18000, 24000} kümesini üretir ve dış sorgu, maaşları bu kümedeki herhangi bir değerden daha yüksek olan personeli seçer. SEÇ personelNo, fName, lName, pozisyon, maaş Personelden NEREDE maaş > BAZI (maaş SEÇİN Personelden NEREDE şubeNo = 'B003'); 73 Pearson Eğitim © 2015 73 Pearson Eğitim © 2015 74 74 Örnek 6.23 ALL Kullanımı Örnek 6.23 ALL Kullanımı B003 şubesindeki her personelin maaşından daha yüksek maaşı olan personeli bulun. SEÇ personelNo, fName, lName, pozisyon, maaş Personelden NEREDE maaş > TÜMÜ (maaş SEÇİN Personelden NEREDE şubeNo = 'B003'); 75 Pearson Eğitim © 2015 75 Pearson Eğitim © 2015 76 Çoklu Tablo Sorguları Çoklu Tablo Sorguları Sonuç sütunlarının aynı tablodan gelmesi koşuluyla alt sorguları kullanabilir. FROM yan tümcesinde adlandırılmış bir tablo için takma ad kullanmak da mümkündür. Sonuç sütunları kullanılmalıdır. Takma ad, tablo adından bir boşlukla ayrılır. Birleştirme gerçekleştirmek için, FROM yan tümcesine birden fazla tablo ekleyin. Takma ad, belirsizlik olduğunda sütun adlarını nitelemek için kullanılabilir. Ayırıcı olarak virgül kullanın ve genellikle birleştirme sütunlarını belirtmek için WHERE yantümcesini ekleyin. birden fazla Pearson Eğitim © 2015 77 76 tablodan geliyorsa birleştirme 77 Pearson Eğitim © 2015 78 78 13 Örnek 6.24 Basit Birleştirme Örnek 6.24 Basit Birleştirme Sağlanan herhangi bir yorumla birlikte bir mülkü görüntüleyen tüm müşterilerin adlarını listeleyin. Yalnızca her iki tablodan clientNo sütunlarında (c.clientNo = v.clientNo) aynı değerlere sahip olan satırlar sonuca dahil edilir. İlişkisel cebirde eş-birleşime eşdeğerdir. c.clientNo, fName, lName, özellikNo, yorum İstemci c'den, v'yi Görüntüleme NEREDE c.clientNo = v.clientNo; 79 Pearson Eğitim © 2015 79 Pearson Eğitim © 2015 80 80 Alternatif JOIN Yapıları Örnek 6.25 Birleştirmeyi sıralama SQL, birleştirmeleri belirtmek için alternatif yollar sağlar: Her şube için mülkleri yöneten personelin numaralarını ve adlarını ve yönettikleri mülkleri listeleyin. İstemciden c JOIN Görüntüleme v AÇIK c.clientNo = v.clientNo Client JOIN'DEN görüntüleniyor ClientNo s.branchNo, s.staffNo, fName, lName, KULLANARAK özellikHayır FROM Staff s, PropertyForRent p İstemciden NATURAL JOIN Görüntüleme NEREDE s.staffNo = p.staffNo ORDER BY s.branchNo, s.staffNo, propertyNo; Her durumda, FROM, orijinal FROM ve WHERE'nin yerine geçer. Ancak, önce iki özdeş clientNo sütunu içeren bir tablo üretir. Pearson Eğitim © 2015 81 81 Pearson Eğitim © 2015 82 82 Örnek 6.25 Birleştirmeyi sıralama Örnek 6.26 Üç Tablo Birleştirme Her şube için, şubenin bulunduğu şehir ve yönettikleri mülkler de dahil olmak üzere mülkleri yöneten personeli listeleyin. b.branchNo, b.city, s.staffNo, fName, lName, özellikHayır B Şubesinden, Personel s, PropertyForRent p NEREDE b.branchNo = s.branchNo VE s.staffNo = p.staffNo ORDER BY b.branchNo, s.staffNo, propertyNo; Pearson Eğitim © 2015 83 83 Pearson Eğitim © 2015 84 84 14 Örnek 6.26 Üç Tablo Birleştirme Örnek 6.27 Çoklu Gruplama Sütunları Her personel tarafından yönetilen mülklerin sayısını bulun. myCount OLARAK COUNT(*) SEÇİN s.branchNo, s.staffNo, FROM Staff s, PropertyForRent p NEREDE s.staffNo = p.staffNo GROUP BY s.branchNo, s.personelNo SİPARİŞ s.şubeNo, s.personelNo FROM ve NEREDE için alternatif formülasyon: ; KİMDEN (Şube b JOIN Personeli KULLANAN şubeNo) AS bs JOIN PropertyForRent p staffNO KULLANARAK Pearson Eğitim © 2015 85 85 Pearson Eğitim © 2015 86 86 Örnek 6.27 Çoklu Gruplama Sütunları Bir Birleştirmeyi Hesaplamak Bir birleştirmenin sonuçlarını oluşturma prosedürü şunlardır: 1. FROM yan tümcesinde adı geçen tabloların Kartezyen çarpımını oluşturun. 2. Bir WHERE yan tümcesi varsa, koşulu sağlayan satırları koruyarak, ürün tablosunun her satırına arama koşulunu uygulayın. 3. Kalan her satır için, sonuç tablosunda tek bir satır oluşturmak için SEÇ listesindeki her bir öğenin değerini belirleyin. Pearson Eğitim © 2015 87 87 Pearson Eğitim © 2015 88 88 Bir Birleştirmeyi Hesaplamak Dış Birleşimler 4 . DISTINCT belirtilmişse, yinelenen satırları sonuç tablosundan kaldırın. 5. Bir ORDER BY yan tümcesi varsa, sonuç tablosunu gerektiği gibi sıralayın. SQL, Kartezyen ürün için özel SELECT biçimi sağlar: Birleştirilmiş bir tablonun bir satırı eşleşmezse, sonuç tablosundan satır çıkarılır. Dış birleştirme işlemleri, birleştirme koşulunu karşılamayan satırları tutar. Aşağıdaki tabloları göz önünde bulundurun: [FARKLI | TÜMÜ] {* | sütunListesi} Tablo1'DEN ÇAPRAZ BİRLEŞTİRME Tablo2 Pearson Eğitim © 2015 89 89 Pearson Eğitim © 2015 90 90 15 Dış Birleşimler Dış Birleşimler Bu iki tablonun (iç) birleşimi: b.*, s.* SEÇİN Branch1 b'den, PropertyForRent1 p Sonuç tablosu, şehirlerin aynı olduğu iki satıra sahiptir. Bristol ve Aberdeen'deki şubelere karşılık gelen sıra yok. Eşleşmeyen satırları sonuç tablosuna dahil etmek için bir Dış birleştirme kullanın. NEREDE b.bCity = p.pCity; Pearson Eğitim © 2015 91 91 Pearson Eğitim © 2015 92 92 Örnek 6.28 Sol Dış Birleştirme Örnek 6.28 Sol Dış Birleştirme Eşleşmeyen şubelerle birlikte aynı şehirdeki şubeleri ve mülkleri listeleyin. İkinci (sağ) tablodaki satırlarla eşleşmeyen ilk (sol) tablonun satırlarını içerir. İkinci tablodaki sütunlar NULL'larla doldurulur. b.*, s.* SEÇİN Şube1'den b SOL KATIL PropertyForRent1 p AÇIK b.bCity = p.pCity; Pearson Eğitim © 2015 93 93 Pearson Eğitim © 2015 94 94 Örnek 6.29 Sağ Dış Birleştirme Örnek 6.29 Sağ Dış Birleştirme Aynı şehirdeki şubeleri ve mülkleri ve eşleşmeyen mülkleri listeleyin. b.*, s.* SEÇİN Sağ Dış birleştirme, ikinci (sağ) tablonun birinci (sol) tablodaki satırlarla eşleşmeyen satırlarını içerir. İlk tablodaki sütunlar NULL'larla doldurulur. Şube1'den b SAĞ KATIL PropertyForRent1 p AÇIK b.bCity = p.pCity; Pearson Eğitim © 2015 95 95 Pearson Eğitim © 2015 96 96 16 Örnek 6.30 Tam Dış Birleştirme Örnek 6.30 Tam Dış Birleştirme Aynı şehirdeki şubeleri ve mülkleri ve eşleşmeyen şubeleri veya mülkleri listeleyin. Her iki tabloda da eşleşmeyen satırları içerir. Eşleşmeyen sütunlar NULL'larla doldurulur. b.*, s.* SEÇİN Branch1'den b FULL JOIN PropertyForRent1 p AÇIK b.bCity = p.pCity; 97 Pearson Eğitim © 2015 97 Pearson Eğitim © 2015 98 98 VAR ve VAR DEĞİL VAR ve VAR DEĞİL EXISTS ve NOT EXISTS yalnızca alt sorgularla kullanım içindir. Basit bir doğru/yanlış sonucu üretin. Yalnızca ve yalnızca alt sorgu tarafından tablosunda en az bir satır varsa doğrudur. Alt sorgu boş bir sonuç tablosu döndürürse yanlış. VAR DEĞİL, VAR'ın tersidir. döndürülen sonuç (NOT) EXISTS yalnızca alt sorgu sonuç tablosundaki satırların var olup olmadığını kontrol ettiğinden, alt sorgu herhangi bir sayıda sütun içerebilir. (NOT) EXISTS'i izleyen alt sorgular için ortak biçim: (SEÇME * ...) 99 Pearson Eğitim © 2015 99 Pearson Eğitim © 2015 100 100 Örnek 6.31 EXISTS sorgulama Londra şubesinde çalışan tüm personeli bulun. kullanarak Örnek 6.31 sorgulama EXISTS kullanarak personelNo, fName, lName, pozisyon SEÇİN Personelden NEREDE VAR (SEÇME * Şube b'den NEREDE s.branchNo = b.branchNo VE şehir = 'Londra'); Pearson Eğitim © 2015 101 101 Pearson Eğitim © 2015 102 102 17 Örnek 6.31 EXISTS kullanarak sorgulama Not, s.branchNo = b.branchNo arama koşulu, personelin her bir üyesi Örnek 6.31 sorgulama için doğru şube kaydını dikkate almak için gereklidir. Atlanırsa, alt sorgu nedeniyle tüm personel kayıtlarının listelenmesini sağlar: EXISTS kullanarak Bu sorguyu birleştirme yapısını kullanarak da yazabilir: personelNo, fName, lName, pozisyon SEÇİN Personelden, Şube b SEÇİN * ŞUBEDEN NEREDE şehir='Londra' NEREDE s.branchNo = b.branchNo VE şehir = 'Londra'; her zaman doğru olur ve sorgu şöyle olur: Personelden personelNo, fName, lName, pozisyon SEÇİN NEREDE doğrudur; Pearson Eğitim © 2015 103 103 104 Pearson Eğitim © 2015 104 Birleşim, Kesişim ve Fark (Hariç) İki veya daha fazla sorgunun sonuçlarını tek bir sonuç tablosunda birleştirmek için normal Birleştirme, Kesişme ve Fark küme işlemlerini kullanabilir. İki tablonun, A ve B'nin birleşimi, A veya B'deki veya her ikisindeki tüm satırları içeren tablodur. Kesişim, hem A hem de B için ortak olan tüm satırları içeren tablodur. Fark, A'daki tüm satırları içeren ancak B'deki olmayan tablodur. birleşim uyumlu olmalıdır . Pearson Eğitim © 2015 Birleşim, Kesişim ve Fark (Hariç) Her durumda set operatör yan tümcesinin biçimi şöyledir: op [TÜMÜ] [KARŞILIK GELEN [{sütun1 [, ...]}] TARAFINDAN]] CORRESPONDING BY belirtilirse, gerçekleştirilen işlemi ayarlayın. CORRESPONDING belirtilmiş ancak BY yan tümcesi belirtilmemişse, işlem ortak sütunlarda gerçekleştirilir. ALL belirtilirse, sonuç yinelenen satırlar içerebilir. 105 105 belirtilen sütun(lar) Pearson Eğitim © 2015 üzerinde 106 106 Birleşim, Kesişim ve Fark (Hariç) Örnek 6.32 UNION Kullanımı Şube veya mülk bulunan tüm şehirleri listeleyin. (Şehir seç Şubeden NULL OLMAYAN ŞEHİR) BİRLİĞİ (Şehir seç PropertyForRent'TEN Şehrin NULL OLMADIĞI YERLER); Pearson Eğitim © 2015 107 107 Pearson Eğitim © 2015 108 108 18 Örnek 6.32 UNION Kullanımı Örnek 6.32 UNION Kullanımı Veya Her iki sorgudan sonuç tabloları üretir ve her iki tabloyu birleştirir. (ŞEHRİN BOŞ OLMADIĞI Şubeden * SEÇİN ) Şehre GÖRE BİRLEŞME KARŞILIĞI ( ŞEHRİN NULL OLMADIĞI YERDE PropertyForRent'TEN * SEÇİN); Pearson Eğitim © 2015 109 109 Pearson Eğitim © 2015 110 110 Örnek 6.33 INTERSECT Kullanımı Örnek 6.33 INTERSECT Kullanımı Hem şube hem de mülk bulunan tüm şehirleri listeleyin. Veya (Şubeden * SEÇ) (Şubeden şehir SEÇİN) ŞEHRE GÖRE KARŞILIK GEÇEN INTERSECT KESİŞTİRME (PropertyForRent'TEN * SEÇİN); (PropertyForRent'TEN şehir SEÇİN); Pearson Eğitim © 2015 111 112 Pearson Eğitim © 2015 111 112 Örnek 6.33 INTERSECT Kullanımı Örnek 6.34 EXCEPT Kullanımı Bu sorgu INTERSECT operatörü olmadan yeniden yazılabilir: Şube bulunan ancak mülk bulunmayan tüm şehirlerin listesi. şehir SEÇİN (Şubeden şehir SEÇİN) Şubeden b PropertyForRent p HARİÇ NEREDE b.şehir = p.şehir; Veya: (PropertyForRent'TEN şehir SEÇİN); Branch b'den FARKLI ŞEHİR SEÇİN NEREDE VAR (PropertyForRent p'den * SEÇİN NEREDE p.şehir = b.şehir); Veya (Şubeden * SEÇ) ŞEHRE GÖRE KARŞILAŞMA HARİÇ (PropertyForRent'TEN * SEÇİN); Pearson Eğitim © 2015 113 113 Pearson Eğitim © 2015 114 114 19 Örnek 6.34 EXCEPT Kullanımı SOKMAK Bu sorgu şu HARİÇ olmadan yeniden yazılabilir: INSERT INTO TableName [ (columnList) ] DEĞERLER (dataValueList) Şubeden FARKLI ŞEHİR SEÇİN NEREDE şehir DEĞİL (PropertyForRent'TEN şehir SEÇİN); • sütunListesi isteğe bağlıdır; atlanırsa, SQL orijinal CREATE TABLE sırasındaki tüm sütunların bir listesini varsayar. • Sütun oluşturulurken DEFAULT belirtilmedikçe, atlanan tüm sütunlar tablo oluşturulduğunda NULL olarak bildirilmiş olmalıdır. Veya Branch b'den FARKLI ŞEHİR SEÇİN OLMAYAN YERDE (PropertyForRent p'den * SEÇİN NEREDE p.şehir = b.şehir); 115 Pearson Eğitim © 2015 115 Pearson Eğitim © 2015 116 116 SOKMAK Örnek 6.35 INSERT … DEĞERLER Tüm sütunlar için veri sağlayan Personel tablosuna yeni bir satır ekleyin. dataValueList, columnList ile aşağıdaki gibi eşleşmelidir : her listedeki öğelerin sayısı aynı olmalıdır; iki listedeki öğelerin konumunda doğrudan yazışma olmalıdır; dataValueList'teki her öğenin veri türü, karşılık gelen sütunun veri türüyle uyumlu olmalıdır. Personel İÇİNE YERLEŞTİRİN DEĞERLER ('SG16', 'Alan', 'Kahverengi', 'Asistan', 'M', Tarih'1957-05-25', 8300, 'B003'); 117 Pearson Eğitim © 2015 117 Pearson Eğitim © 2015 118 118 Örnek 6.36 Varsayılanları Kullanarak INSERT EKLE … SEÇ Tüm zorunlu sütunlar için veri sağlayan Personel tablosuna yeni bir satır ekleyin. INSERT INTO lName, Staff (personelNo, fName, INSERT'in ikinci biçimi, birden çok satırın bir veya daha fazla tablodan diğerine kopyalanmasına izin verir: INSERT INTO TableName [ (columnList) ] SEÇME ... pozisyon, maaş, şubeNo) DEĞERLER ('SG44', 'Anne', 'Jones', 'Asistan', 8100, 'B003'); Veya Personel İÇİNE YERLEŞTİRİN DEĞERLER ('SG44', 'Anne', 'Jones', 'Asistan', NULL, BOŞ, 8100, 'B003'); Pearson Eğitim © 2015 119 119 Pearson Eğitim © 2015 120 120 20 Örnek 6.37 EKLE … SEÇ Örnek 6.37 EKLE … SEÇ StaffPropCount'A EKLEYİN Personel adlarını ve yönettikleri mülk sayısını içeren bir StaffPropCount tablosu olduğunu varsayalım: (SEÇ s.personelNo, fName, lName, COUNT(*) FROM Staff s, PropertyForRent p StaffPropCount( staffNo , fName, lName, propCnt) NEREDE s.staffNo = p.staffNo GROUP BY s.staffNo, fName, lName) StaffPropCount'u doldurun. Staff ve PropertyForRent tablolarını BİRLİK kullanarak (personel SEÇİNNo, fName, lName, 0 Personelden NEREDE personelHayır İÇİNDE DEĞİL (FARKLI personel SEÇİNHayır PropertyForRent'TEN)); Pearson Eğitim © 2015 121 121 122 Pearson Eğitim © 2015 122 Örnek 6.37 EKLE … SEÇ GÜNCELLEME GÜNCELLEME TabloAdı SütunAdı1'i AYARLA = veriDeğeri1 [, sütunAdı2 = veriDeğeri2...] [WHERE arama Koşulu] • TabloAdı, bir temel tablonun veya güncellenebilir bir görünümün adı olabilir. • SET yan tümcesi, güncellenecek bir veya daha fazla sütunun adını belirtir. UNION'ın ikinci kısmı atlanırsa, şu anda herhangi bir mülkü yönetmeyen personeli hariç tutar. Pearson Eğitim © 2015 123 123 124 Pearson Eğitim © 2015 124 GÜNCELLEME Örnek 6.38/39 GÜNCELLE Tüm personele %3 maaş artışı verin. WHERE deyimi isteğe bağlıdır: atlanırsa, adlandırılmış sütunlar tablodaki tüm satırlar için güncellenir; belirtilirse, yalnızca searchCondition'ı karşılayan satırlar güncellenir. Tüm Satırları GÜNCELLEME Personeli maaşı BELİRLE = maaş*1.03; Yeni dataValue(s), ilgili sütun için veri türüyle uyumlu olmalıdır. Tüm Yöneticilere %5 maaş artışı verin. GÜNCELLEME Personeli AYARLA maaş = maaş*1.05 WHERE pozisyonu = 'Yönetici'; Pearson Eğitim © 2015 125 125 Pearson Eğitim © 2015 126 126 21 Örnek 6.40 Birden GÜNCELLEME Fazla Sütunu SİLMEK TabloAdı'ndan SİL David Ford'u (staffNo='SG14') Yöneticiliğe terfi ettirin ve maaşını £18,000 olarak değiştirin. [WHERE arama Koşulu] GÜNCELLEME Personeli SET pozisyonu = 'Yönetici', maaş = 18000 NEREDE personelNo = 'SG14'; Pearson Eğitim © 2015 • TabloAdı, bir temel tablonun veya güncellenebilir bir görünümün adı olabilir. • searchCondition isteğe bağlıdır; atlanırsa, tüm satırlar tablodan silinir. Bu tabloyu silmez. Ara_koşul belirtilirse , yalnızca koşulu sağlayan satırlar silinir. 127 127 Pearson Eğitim © 2015 128 128 Örnek 6.41/42 Belirli Satırları SİL ISO SQL Veri Türleri PG4 özelliğiyle ilgili tüm görüntülemeleri silin. Görüntülemeden SİL WHERE özellikNo = 'PG4'; Görüntüleme tablosundaki tüm kayıtları silin. Görüntülemeden SİLİN; Pearson Eğitim © 2015 129 129 Pearson Eğitim © 2015 130 130 Bütünlük Geliştirme Özelliği Bütünlük Geliştirme Özelliği Beş tür bütünlük kısıtlaması düşünün: Gerekli veriler konum VARCHAR(10) NULL DEĞİL gerekli veriler etki alanı kısıtlamaları varlık bütünlüğü bilgi tutarlılığı genel kısıtlamalar. Etki Alanı Kısıtlamaları (a) KONTROL seks CHAR BOŞ DEĞİL KONTROL (cinsiyet GİRİŞİ ('E', 'K')) Pearson Eğitim © 2015 131 131 Pearson Eğitim © 2015 132 132 22 Bütünlük Geliştirme Özelliği Bütünlük Geliştirme searchCondition bir tablo araması içerebilir: Özelliği (b) ALAN OLUŞTURMA ETKİ ALANI OLUŞTUR Etki AlanıAdı [AS] dataType CREATE DOMAIN BranchNo AS CHAR(4) KONTROL (DEĞER GİRİŞİ (Şube SEÇİNHayır) [VARSAYILAN varsayılan Seçenek] Şubeden)); [CHECK (arama Koşulu)] Örneğin: Etki alanları, DROP DOMAIN kullanılarak kaldırılabilir: DROP DOMAIN Etki AlanıAdı [KISITLAMA | ÇAĞLAYAN] CHAR OLARAK ALAN SexType OLUŞTURUN KONTROL (DEĞER GİRİŞİ ('M', 'F')); seks SexType BOŞ DEĞİL Pearson Eğitim © 2015 133 133 Pearson Eğitim © 2015 134 134 IEF - Varlık Bütünlüğü IEF - Referans Bütünlüğü Bir tablonun birincil anahtarı, her satır için benzersiz, boş olmayan bir değer içermelidir. FK, yabancı FK içeren alt tablodaki her satırı eşleşen PK içeren üst tablo satırına bağlayan sütun veya sütunlar kümesidir. ISO standardı, CREATE ve ALTER TABLE ifadelerinde FOREIGN KEY yan tümcesini destekler: Referans bütünlüğü, FK bir değer içeriyorsa, bu değerin üst tablodaki mevcut satıra atıfta bulunması gerektiği anlamına gelir. ISO standardı, CREATE ve ALTER TABLE'da FOREIGN KEY yan tümcesiyle FK'lerin tanımını destekler: BİRİNCİL ANAHTAR(personelNo) BİRİNCİL ANAHTAR(clientNo, propertyNo) YABANCI ANAHTAR(şubeNo) REFERANSLAR Şube Tablo başına yalnızca bir PRIMARY KEY yan tümcesi olabilir. UNIQUE kullanarak alternatif anahtarlar için benzersizliği sağlamaya devam edebilir: BENZERSİZ(telNo) Pearson Eğitim © 2015 135 135 Pearson Eğitim © 2015 136 136 IEF - Referans Bütünlüğü IEF - Referans Bütünlüğü Üst tablodaki CK değeriyle eşleşmeden alt tabloda FK değeri oluşturmaya çalışan herhangi bir INSERT/UPDATE reddedilir. CASCADE : Üst öğeden satırı silin ve alt satırdaki eşleşen satırları silin ve bu şekilde basamaklı şekilde devam edin. , ON UPDATE ve ON DELETE alt maddeleri kullanılarak belirtilen referans eylemine bağlıdır : NULL SET : Ebeveynden satırı silin ve alt öğedeki FK sütunlarını NULL olarak ayarlayın. Yalnızca FK sütunları NULL DEĞİLSE geçerlidir. BASAMAK - BOŞ AYARLA VARSAYILANI AYARLA - İŞLEM YOK VARSAYILAN AYARLA : Ebeveynden satırı silin ve çocuktaki FK'nin her bir bileşenini belirtilen varsayılana ayarlayın. Yalnızca FK sütunları için VARSAYILAN belirtilmişse geçerlidir. EYLEM YOK : Üst öğeden silmeyi reddet. Varsayılan. Pearson Eğitim © 2015 137 137 Pearson Eğitim © 2015 138 138 23 IEF - Referans Bütünlüğü IEF - Genel Kısıtlamalar YABANCI ANAHTAR (personelNo) REFERANSLAR Personel ON DELETE SET NULL YABANCI ANAHTAR KASKASINDA (sahipNo) REFERANSLAR Sahip CREATE ve ALTER TABLE'da CHECK/UNIQUE kullanılabilir. CHECK yan tümcesine benzer şekilde, ayrıca şunları içerir: GÜNCELLEME CREATE ASERTION AssertionName KONTROL (arama Koşulu) Pearson Eğitim © 2015 139 139 Pearson Eğitim © 2015 140 140 IEF - Genel Kısıtlamalar Veri Tanımı ONAYLAMA OLUŞTUR StaffNotHandlingTooMuch SQL DDL, şemalar, etki alanları, tablolar, görünümler ve dizinler gibi veritabanı nesnelerinin oluşturulmasına ve yok edilmesine olanak tanır. Ana SQL DDL ifadeleri şunlardır: KONTROL EDİN (MEVCUT DEĞİL (Personel SEÇİNHayır) PropertyForRent'TEN GRUP BY personelHayır ŞEMA OLUŞTUR ŞEMA BIRAK SAYISI(*) > 100) OLAN) OLUŞTUR/DEĞİŞTİR ALAN ALANINI DÜŞÜR TABLO OLUŞTUR/DEĞİŞTİR TABLOYU DÜŞÜR GÖRÜNÜM OLUŞTUR GÖRÜNÜMÜ AÇ Birçok DBMS ayrıca şunları sağlar: ENDEKS OLUŞTUR ENDEKSİ DÜŞÜR Pearson Eğitim © 2015 141 141 Pearson Eğitim © 2015 142 Veri Tanımı ŞEMA OLUŞTUR ortamda bulunur . ŞEMA OLUŞTUR [Ad | Her ortam bir veya daha fazla katalog içerir ve her katalog bir dizi şemadan oluşur. YETKİ CreatorId ] Şema, ilgili veritabanı nesnelerinin koleksiyonu olarak adlandırılır. Bir şemadaki nesneler tablolar, görünümler, etki alanları, iddialar, harmanlamalar, çeviriler ve karakter kümeleri olabilir. Hepsinin sahibi aynı. Pearson Eğitim © 2015 143 142 DÜŞÜRME ŞEMASI Adı [KISITLAMA | ÇAĞLAYAN ] 143 • RESTRICT (varsayılan) ile şema boş olmalıdır veya işlem başarısız olur. • CASCADE ile, şema ile ilişkili tüm nesneleri yukarıda tanımlanan sırayla bırakmak için işlem kademeli olarak gerçekleşir. Bu işlemlerden herhangi biri başarısız olursa, DROP SCHEMA başarısız olur. Pearson Eğitim © 2015 144 144 24 TABLO OLUŞTUR TABLO OLUŞTUR TABLO OLUŞTUR TabloAdı {(colName dataType [BOŞ DEĞİL] [BENZERSİZ] [VARSAYILAN varsayılan Seçenek] [ARAMA KOŞULUNU KONTROL ET] [,...]} [PRİMER ANAHTAR (listOfColumns),] {[BENZERSİZ (listOfColumns),] […,]} {[YABANCI ANAHTAR (listOfFKColumns) REFERANSLAR ParentTableName [(listOfCKColumns)], [GÜNCELLEME referans Eyleminde] [ON DELETE referentialAction ]] [,…]} {[CHECK (searchCondition)] [,…] }) 145 Pearson Eğitim © 2015 145 Belirtilen dataType'ın bir veya daha fazla sütununu içeren bir tablo oluşturur . NOT NULL ile sistem, sütuna boş değer ekleme girişimlerini reddeder. Sütun için bir VARSAYILAN değer belirtebilir. Birincil anahtarlar her zaman NOT NULL olarak belirtilmelidir. FOREIGN KEY yan tümcesi, referans eylemiyle birlikte FK'yi belirtir. Pearson Eğitim © 2015 146 146 Örnek 7.1 - TABLO OLUŞTUR Örnek 7.1 - TABLO OLUŞTUR CREATE DOMAIN OwnerNumber AS VARCHAR(5) TABLO OLUŞTUR PropertyForRent ( KONTROL (DEĞER GİRİŞİ (PrivateSahipten SEÇİNSahipNo)); özellikNo PNumber NULL DEĞİL, …. CREATE DOMAIN StaffNumber AS VARCHAR(5) KONTROL (DEĞER Hayır)); GİRİŞİ (Personel odalar PROoms NULL DEĞİL VARSAYILAN 4, SEÇİNPersonelden kira PRent NULL DEĞİL, VARSAYILAN 600, sahibiNo OwnerNumber NULL DEĞİL, VARCHAR(5) OLARAK DOMAIN PNumarası OLUŞTURUN; personelNo PersonelNumarası SMALLINT OLARAK DOMAIN PROOMLARI OLUŞTURUN; Kısıtlama StaffNotHandlingTooMuch…. KONTROL(1 İLE 15 ARASINDAKİ DEĞER); şubeNo BranchNumber NULL DEĞİL, ALAN OLUŞTURUN ONDALIK OLARAK YAZIN(6,2) BİRİNCİL ANAHTAR (özellikNo), CHECK(0 İLE 9999,99 ARASINDAKİ DEĞER); YABANCI ANAHTAR (personelNo) REFERANSLAR Personel SİLME ÜZERİNE GÜNCELLEME KASKASINDA NULL AYARLA ….); Pearson Eğitim © 2015 147 147 Pearson Eğitim © 2015 148 148 TABLOYU DEĞİŞTİR Bir tabloya yeni bir sütun ekleyin. Tablodan bir sütun bırakın. Yeni bir tablo kısıtlaması ekleyin. Bir tablo kısıtlaması bırakın. Bir sütun için bir varsayılan ayarlayın. Bir sütun için bir varsayılan bırakın. Örnek 7.2(a) - ALTER TABLOSU Konum sütunu için 'Asistan' varsayılanını kaldırarak ve cinsiyet sütunu için varsayılanı kadın ('F') olarak ayarlayarak Personel tablosunu değiştirin. ALTER TABLO Personeli ALTER konumu DROP DEFAULT; ALTER TABLO Personeli ALTER sex SET DEFAULT 'F'; Pearson Eğitim © 2015 149 149 Pearson Eğitim © 2015 150 150 25 Örnek 7.2(b) - ALTER TABLOSU DÜŞME TABLOSU PropertyForRent'ten, personelin aynı anda 100'den fazla mülkü işlemesine izin verilmeyen kısıtlamayı kaldırın. İstemci tablosuna yeni sütun ekleyin. DROP TABLE TabloAdı [KISITLAMA | ÇAĞLAYAN] örneğin DROP TABLE PropertyForRent; ALTER TABLE PropertyForRent DÜŞÜK KISITLAMA StaffNotHandlingTooMuch; ALTER TABLO İstemcisi Adlandırılmış tabloyu ve içindeki tüm satırları kaldırır. RESTRICT ile, başka herhangi bir nesnenin varlığı bu tablonun varlığının devam etmesine bağlıysa, SQL isteğe izin vermez. CASCADE ile SQL, tüm bağımlı nesneleri (ve bu nesnelere bağlı nesneleri) bırakır. prefNoRooms ODA EKLE; 151 Pearson Eğitim © 2015 151 Pearson Eğitim © 2015 152 Görüntüleme Görüntüleme Görüş Başka bir ilişki üretmek için temel ilişkiler üzerinde çalışan bir veya daha fazla ilişkisel işlemin dinamik sonucu. • Veritabanında fiilen var olması gerekmeyen ancak istek üzerine, istek anında üretilen sanal ilişki. Bir görünümün içeriği, bir veya daha fazla temel ilişkide sorgu olarak tanımlanır. Görünüm çözünürlüğü ile , görünümdeki tüm işlemler otomatik olarak türetildiği ilişkiler üzerindeki işlemlere çevrilir. Görünüm materyalizasyonu ile görünüm, temel alınan temel tablolar güncellendikçe korunan geçici bir tablo olarak saklanır. 153 Pearson Eğitim © 2015 153 Pearson Eğitim © 2015 154 154 SQL - GÖRÜNÜM OLUŞTUR GÖRÜNÜM OLUŞTUR (yeniSütunAdı [,...]) ] GörünümAdı SQL - GÖRÜNÜM OLUŞTUR [ AS alt seçimi [[BASKALAMALI | YEREL] SEÇENEĞİ KONTROL ET] • Görünümdeki her sütuna bir ad atayabilir. • Sütun adları listesi belirtilirse, subselect tarafından üretilen sütun sayısı ile aynı sayıda öğeye sahip olmalıdır . • Atlanırsa, her sütun alt seçimde karşılık gelen sütunun adını alır . Pearson Eğitim © 2015 155 152 Sütun adında bir belirsizlik varsa liste belirtilmelidir. Alt seçim tanımlayıcı sorgu olarak bilinir . İLE KONTROL SEÇENEĞİ, bir satır tanımlayıcı sorgunun WHERE yan tümcesini karşılayamazsa, temel tabloya eklenmemesini sağlar. Alt seçimde başvurulan tüm tablolarda SEÇ ayrıcalığı ve başvurulan sütunlarda kullanılan tüm etki alanlarında USAGE ayrıcalığı gerekir. 155 Pearson Eğitim © 2015 156 156 26 Örnek 7.3 - Yatay Görünüm Oluşturun Örnek 7.4 Oluşturma B003 şubesindeki maaşlar hariç B003 şubesindeki yöneticinin yalnızca kendi ofisinde çalışan personelin ayrıntılarını görebilmesi için görünüm oluşturun. Dikey Görünüm personel detaylarının görünümünü oluşturun. GÖRÜNÜM OLUŞTURMA Manager3Staff GÖRÜNÜM OLUŞTUR Personel3 SEÇİM OLARAK * Personelden NEREDE şubeNo = 'B003'; AS SELECT personelNo, fName, lName, pozisyon, cinsiyet Personelden NEREDE şubeNo = 'B003'; 157 Pearson Eğitim © 2015 158 Pearson Eğitim © 2015 157 158 Örnek 7.5 Gruplanmış ve Birleştirilmiş Görünümler Çalıştıkları şube numarası, personel sayısı ve yönettikleri mülk sayısı da Örnek 7.3 Gruplanmış Birleştirilmiş Görünümler ve dahil olmak üzere, kiralık mülkleri yöneten personelin görünümünü oluşturun. GÖRÜNÜM OLUŞTUR (branchNo, staffNo, cnt) StaffPropCnt SEÇİM OLARAK s.branchNo, s.personelNo, COUNT(*) FROM Staff s, PropertyForRent p NEREDE s.staffNo = p.staffNo GROUP BY s.branchNo, s.personelNo; Pearson Eğitim © 2015 159 159 Pearson Eğitim © 2015 160 160 SQL - GÖRÜNÜMÜ DÜŞÜR SQL - GÖRÜNÜMÜ DÜŞÜR DROP GÖRÜNÜM GörünümAdı [KISITLAMA | ÇAĞLAYAN] Görünüm tanımının veritabanından silinmesine neden olur. Örneğin: CASCADE ile ilgili tüm bağımlı nesneler silinir; yani, bırakılan görünümde tanımlanan tüm görünümler. RESTRICT (varsayılan) ile, diğer nesnelerin varlığı, bırakılan görünümün varlığının devam etmesine bağlıysa, komut reddedilir. DROP GÖRÜNÜM Manager3Staff; Pearson Eğitim © 2015 161 161 Pearson Eğitim © 2015 162 162 27 Çözünürlüğü Görüntüle Çözünürlüğü Görüntüle B003 şubesindeki her bir üye tarafından yönetilen mülk sayısını sayın. (a) SELECT listesindeki görünüm sütun adları, tanımlayıcı sorguda karşılık gelen sütun adlarına çevrilir: personel SEÇİNNo, cnt SEÇİN s.personelNo Kadro olarakNo, COUNT(*) Cnt olarak StaffPropCnt'TEN (b) FROM'daki görünüm adları, karşılık gelen FROM tanımlayıcı sorgu listeleriyle değiştirilir: NEREDE şubeNo = 'B003' SİPARİŞE GÖRE personelNo; FROM Staff s, PropertyForRent p 163 Pearson Eğitim © 2015 163 Çözünürlüğü Görüntüle Kullanıcı sorgusundan WHERE, AND kullanılarak sorgu tanımlamanın WHERE'si ile birleştirilir: (f) Son birleştirilmiş sorgu şimdi sonucu üretmek için yürütülür: SEÇİN s.personelNo AS staffNo, COUNT(*) AS cnt NEREDE s.staffNo = p.staffNo VE şubeNo = 'B003' (d) FROM Staff s, PropertyForRent p GROUP BY ve HAVING yan tümceleri tanımlayıcı sorgudan kopyalandı: NEREDE s.staffNo = p.staffNo VE şubeNo = 'B003' GROUP BY s.branchNo, s.personelNo (e) 164 164 Çözünürlüğü Görüntüle (c) Pearson Eğitim © 2015 GROUP BY s.branchNo, s.personelNo SİPARİŞ BY sorgudan kopyalandı ve görünüm sütunu adı tanımlayıcı sorgu sütunu adına çevrildi SİPARİŞ s.personelNo; SİPARİŞ TARAFINDAN s.staffNo 165 Pearson Eğitim © 2015 165 166 166 Görünümlerle İlgili Kısıtlamalar SQL, Pearson Eğitim © 2015 görünümlerin oluşturulması kısıtlamalar getirir. ve kullanılması konusunda Görünümlerle İlgili Kısıtlamalar çeşitli Örneğin, aşağıdaki sorgu başarısız olur: SAYI SEÇİN(sayı) (a) Görünümdeki sütun bir toplama işlevine dayalıysa: StaffPropCnt'TEN; Sütun, yalnızca görünüme erişen sorguların SELECT ve ORDER BY yan tümcelerinde görünebilir. SEÇME * StaffPropCnt'TEN Sütun, WHERE'de kullanılamaz veya görünüme dayalı herhangi bir sorguda bir toplama işlevinin argümanı olamaz. Pearson Eğitim © 2015 167 Benzer şekilde, aşağıdaki sorgu da başarısız olur: NEREDE cnt > 2; 167 Pearson Eğitim © 2015 168 168 28 Görünümlerle İlgili Kısıtlamalar (b) Gruplanmış görünüm asla bir temel tablo veya Güncellenebilirliği Görüntüle görünümle Temel tablodaki tüm güncellemeler, temel tabloyu kapsayan tüm görünümlere yansır. Benzer şekilde, görünüm güncellenirse temel tabloların değişikliği yansıtması beklenebilir. birleştirilemez. • Örneğin, StaffPropCnt görünümü gruplandırılmış bir görünümdür, dolayısıyla bu görünümü başka bir tablo veya görünümle birleştirme girişimleri başarısız olur. Pearson Eğitim © 2015 169 169 170 Pearson Eğitim © 2015 170 Güncellenebilirliği Görüntüle Ancak, StaffPropCnt'i yeniden görüntülemeyi düşünün. B003 şubesinde SG5'in 2 özelliği yönettiğini gösteren bir kayıt eklemeye çalışırsak: • Güncellenebilirliği Görüntüle Görünümün tanımını değiştirirseniz numaralarıyla değiştirirseniz: ve gerçek mülk GÖRÜNÜM OLUŞTUR StaffPropList (branchNo, StaffPropCnt'E EKLE personelNo, özellikNo) DEĞERLER ('B003', 'SG5', 2); SEÇİM OLARAK s.branchNo, s.staffNo, s.propertyNo FROM Staff s, PropertyForRent p SG5'in hangi mülkleri yönettiğini gösteren PropertyForRent'e 2 kayıt eklemeniz gerekir. Ancak bunların hangi özellikler olduğunu bilmiyorum; yani birincil anahtarları bilmiyorum! Pearson Eğitim © 2015 sayımı NEREDE s.staffNo = p.staffNo; 171 171 Pearson Eğitim © 2015 172 172 Güncellenebilirliği Görüntüle Güncellenebilirliği Görüntüle Şimdi kaydı eklemeye çalışın: StaffPropList'E EKLE - DISTINCT belirtilmemiş. DEĞERLER ('B003', 'SG5', 'PG19'); • Yine de sorun, çünkü PropertyForRent'te posta kodu/staffNo dışındaki tüm sütunlara boş değer verilmesine izin verilmez. • Ancak, kalan boş olmayan sütun değerleri vermenin bir yolu yoktur. ISO, bir görünümün ancak ve ancak şu durumlarda güncellenebileceğini belirtir: - Sorguyu tanımlayan SEÇ listesindeki her öğe bir sütun adıdır ve hiçbir sütun birden fazla görünmez. - FROM yan tümcesi, birleştirme, birleşim, kesişme veya farka dayalı tüm görünümleri hariç tutarak yalnızca bir tablo belirtir. - Dış tabloya başvuran iç içe SELECT yok. - GROUP BY veya HAVING yan tümcesi yok. - Ayrıca, view üzerinden eklenen her satır, temel tablonun bütünlük kısıtlamalarını ihlal etmemelidir. Pearson Eğitim © 2015 173 173 Pearson Eğitim © 2015 174 174 29 Güncellenebilir Görünüm KONTROL SEÇENEĞİ İLE Görünümün güncellenebilir olması için, DBMS herhangi bir satırı veya sütunu kaynak tablodaki satırına veya sütununa kadar izleyebilmelidir. Pearson Eğitim © 2015 Satırlar, sorgu tanımlamanın WHERE koşulunu karşıladıkları için bir görünümde bulunur. Bir satır değişirse ve artık koşulu karşılamıyorsa, görünümden kaybolur. Görünümde ekleme/güncelleme, WHERE koşulunu neden olduğunda, görünümde yeni satırlar görünür. geçiş satırları denir . İLE KONTROL SEÇENEĞİ, görünümün dışına taşınan bir satırı yasaklar. 175 175 karşılamalarına Pearson Eğitim © 2015 176 176 KONTROL SEÇENEĞİ İLE Örnek 7.6 - KONTROL SEÇENEĞİ İLE Hiyerarşileri görüntülemek için LOCAL/CASCADED uygulanır. LOCAL ile, görünümdeki herhangi bir satır ekleme/güncelleme ve bu görünümde doğrudan veya dolaylı olarak tanımlanan herhangi bir görünüm, türetilmiş görünümden/tablodan satır da kaybolmadıkça, satırın görünümden kaybolmasına neden olmamalıdır. GÖRÜNÜM OLUŞTURMA Manager3Staff SEÇİM OLARAK * Personelden NEREDE şubeNo = 'B003' KONTROL SEÇENEĞİ İLE; Basamaklı (varsayılan) ile, bu görünümdeki ve bu görünümde doğrudan veya dolaylı olarak tanımlanan herhangi bir görünümdeki herhangi bir satır ekleme/güncelleme, satırın görünümden kaybolmasına neden olmamalıdır. Pearson Eğitim © 2015 B003 satırının dal numarası B002 olarak güncellenemiyor çünkü bu, satırın görünümden taşınmasına neden olur. Ayrıca, B003'e eşit olmayan bir şube numarasıyla görünüme bir satır ekleyemezsiniz. 177 177 Pearson Eğitim © 2015 178 178 Örnek 7.6 - KONTROL SEÇENEĞİ İLE Örnek 7.6 - KONTROL SEÇENEĞİYLE Şimdi aşağıdakileri göz önünde bulundurun: GÜNCELLEME Manager3Staff SET maaş = 9500 GÖRÜNÜM OLUŞTUR Düşük Maaş NEREDE personelNo = 'SG37'; SEÇİM OLARAK * Personelden NEREDE maaş > 9000; • Bu güncelleme başarısız olur: güncelleme HighSalary'den satırın kaybolmasına neden olsa da LowSalary'den satır kaybolmaz. • Ancak, güncelleme maaşı 8000 olarak ayarlamaya çalışırsa, satır artık LowSalary'nin bir parçası olmayacağından güncelleme başarılı olur. GÖRÜNÜM OLUŞTUR Yüksek Maaş SEÇİM OLARAK * DüşükÜcretli NEREDE maaş > 10000 YEREL KONTROL SEÇENEĞİ İLE; GÖRÜNÜM OLUŞTURMA Manager3Staff SEÇİM OLARAK * Yüksek Maaştan NEREDE şubeNo = 'B003'; Pearson Eğitim © 2015 179 179 Pearson Eğitim © 2015 180 180 30 Örnek 7.6 - KONTROL SEÇENEĞİ İLE Görünümlerin Avantajları HighSalary, KASCADED KONTROL SEÇENEĞİ İLE belirtmiş olsaydı, maaşın 9500 veya 8000 olarak ayarlanması reddedilirdi çünkü HighSalary'deki satır kaybolacaktı. Bunun gibi anormallikleri önlemek için, her bir görünüm, İLE KASCADELİ KONTROL SEÇENEĞİ kullanılarak oluşturulmalıdır. Pearson Eğitim © 2015 Veri bağımsızlığı Para birimi Geliştirilmiş güvenlik Azaltılmış karmaşıklık Kolaylık özelleştirme Veri bütünlüğü 181 181 182 Görünümlerin Dezavantajları Güncelleme kısıtlaması Yapı kısıtlaması Verim Pearson Eğitim © 2015 Gerçekleştirmeyi Görüntüle Görünüm çözümleme mekanizması, erişiliyorsa yavaş olabilir. Görünüm materyalizasyonu, görünüm ilk sorgulandığında görünümü geçici tablo olarak saklar. Bundan sonra, gerçekleştirilmiş görünüme dayalı sorgular, seferinde yeniden hesaplama görünümünden daha hızlı olabilir. Zorluk, temel korumaktır. 183 183 tablo(lar) özellikle görünüme sık güncellenirken görüşün sık her geçerliliğini Pearson Eğitim © 2015 184 184 Bakımı Görüntüle Gerçekleştirmeyi Görüntüle Görünüm bakımı, yalnızca görünümü güncel tutmak için gerekli değişiklikleri uygulamayı amaçlar. Aşağıdaki görünümü göz önünde bulundurun: GÖRÜNÜM OLUŞTUR StaffPropRent(staffNo) SEÇİLMİŞ OLARAK FARKLI personelHayır PropertyForRent'TEN NEREDE şubeNo = 'B003' VE kira > 400; Pearson Eğitim © 2015 185 182 Pearson Eğitim © 2015 185 400 ile satır eklerseniz , görünüm değişmeyecektir. B003 şubesindeki PG24 özelliği için staffNo = SG19 ve kira = 550 ile satır eklerseniz, satır gerçekleştirilmiş görünümde görünür. B003 şubesindeki PG54 özelliği için staffNo = SG37 ve kira = 450 ile satır eklerseniz, gerçekleştirilmiş görünüme yeni satır eklenmesi gerekmez. PG24 özelliği silinirse, materyalleştirilmiş görünümden satır silinmelidir. PG54 özelliği silinirse, PG37 satırı silinmemelidir (mevcut PG21 özelliği nedeniyle). Pearson Eğitim © 2015 186 186 31 İşlemler İşlemler SQL, işlem modelini COMMIT ve ROLLBACK'e dayalı olarak tanımlar. İşlem, kurtarma açısından atomik olduğu garanti edilen bir veya daha fazla SQL deyimiyle mantıksal iş birimidir. - COMMIT, işlemi başarıyla sonlandırarak değişiklikleri kalıcı hale getirir. Bir SQL işlemi, otomatik olarak işlemi başlatan bir SQL deyimiyle (örn. SELECT, INSERT) başlar. İşlem tarafından yapılan değişiklikler, işlem tamamlanana kadar aynı anda yürütülen diğer işlemler tarafından görülmez. - ROLLBACK, işlem tarafından yapılan değişiklikleri geri alarak işlemi iptal eder. - 187 Programatik SQL için başarılı program sonlandırması, yürütülmemiş olsa bile nihai işlemi başarıyla sonlandırır. COMMIT - Programlı SQL için, anormal program sonu işlemi iptal eder. 187 Pearson Eğitim © 2015 Pearson Eğitim © 2015 188 188 İşlemler Acil ve Ertelenmiş Bütünlük Kısıtlamaları Yeni işlem, bir sonraki işlem başlatıcı ifadeyle başlar. SQL işlemleri iç içe olamaz. SET TRANSACTION, işlemi yapılandırır: İŞLEMİ AYARLA Kısıtlamaların her zaman hemen değil, bunun yerine işlem yapılırken kontrol edilmesini isteyin. Kısıtlama, BAŞLANGIÇTA HEMEN veya BAŞLANGIÇTA ERTELENMİŞ olarak tanımlanabilir ve kısıtlamanın her işlemin başlangıcında üstlendiği modu belirtir. Önceki durumda, [NOT] DEFERRABLE niteleyicisi kullanılarak modun sonradan değiştirilip değiştirilemeyeceğini belirtmek de mümkündür. Varsayılan mod BAŞLANGIÇ HEMEN'dir. [SADECE OKUYUN | OKUYUN YAZIN] | [İZOLASYON OKUMA | SEVİYESİ TAAHHÜTLENMEMİŞ READ COMMITTED|TEKRARLANABİLİR |SERİ YAPILABİLİR ] OKUMA Pearson Eğitim © 2015 189 189 Pearson Eğitim © 2015 190 190 Erişim Kontrolü - Yetki Tanımlayıcıları ve Sahiplik Acil ve Ertelenmiş Bütünlük Kısıtlamaları Geçerli işlem için belirtilen kısıtlamalar için modu ayarlamak için kullanılan SET CONSTRAINTS ifadesi: KISITLAMALAR AYARLAYIN Yetkilendirme tanımlayıcısı, bir kullanıcının kimliğini oluşturmak için kullanılan normal SQL tanımlayıcısıdır. Genellikle ilişkili bir şifreye sahiptir. Kullanıcının hangi nesnelere başvurabileceğini ve bu nesneler üzerinde hangi işlemlerin gerçekleştirilebileceğini belirlemek için kullanılır. SQL'de oluşturulan her nesnenin, nesnenin ait olduğu şemanın AUTHORIZATION yan tümcesinde tanımlandığı gibi bir sahibi vardır. Sahibi, bunu bilebilecek tek kişidir. {TÜMÜ | kısıtlamaAdı [, . . . ]} {ERTELENDİ ¦ HEMEN} Pearson Eğitim © 2015 191 İşlem dört yoldan biriyle tamamlanabilir: 191 Pearson Eğitim © 2015 192 192 32 Ayrıcalıklar Ayrıcalıklar Belirli bir temel tablo veya görünümde kullanıcının gerçekleştirmesine izin verilen eylemler: SEÇ Bir tablodan veri al. INSERT Bir tabloya yeni satırlar ekleyin. INSERT/UPDATE/REFERENCES adlı sütunları sınırlandırabilir. Tablo sahibi, GRANT deyimini kullanarak diğer kullanıcılara gerekli yetkileri vermelidir. Görünüm oluşturmak için, kullanıcının görünümü oluşturan tüm tablolarda SELECT yetkisine ve adlandırılmış sütunlarda REFERENCES yetkisine sahip olması gerekir. UPDATE Bir tablodaki veri satırlarını değiştirin. SİL Bir tablodan veri satırlarını silin. REFERANSLAR Bütünlük kısıtlamalarında adlandırılmış tablonun referans sütunları. KULLANIM Etki alanlarını, harmanlamaları, karakter kümelerini ve çevirileri kullanın. Pearson Eğitim © 2015 193 193 Pearson Eğitim © 2015 194 194 HİBE ETMEK HİBE ETMEK GRANT {Ayrıcalık Listesi | TÜM AYRICALIKLAR} KAMU, mevcut ve gelecekteki tüm yetkili kullanıcılara erişim verilmesine izin verir. NesneAdı bir temel tablo, görünüm, etki alanı, karakter kümesi, harmanlama veya çeviri olabilir. GRANT SEÇENEĞİ İLE ayrıcalıkların aktarılmasına izin verir. AÇIK NesneAdı {AuthorizationIdList | HALK} [HİBE SEÇENEĞİ İLE] PrivilegeList, virgülle ayrılmış yukarıdaki ayrıcalıklardan bir veya daha fazlasından oluşur. TÜM AYRICALIKLAR, bir kullanıcıya tüm ayrıcalıkları verir. Pearson Eğitim © 2015 195 195 Pearson Eğitim © 2015 196 196 Örnek 7.9 - KAMUYA ÖZEL AYRICALIKLAR VERİN Örnek 7.7/8 - HİBE Şube tablosunda tüm kullanıcılara SEÇ verin. Yöneticiye, Personel tablosuna tam ayrıcalıklar verin. HİBE SEÇİMİ TÜM AYRICALIKLARI VERİN AÇIK Personel ON Şubesi HİBE SEÇENEĞİ İLE YÖNETİCİYE; KAMUYA; Kullanıcılara Personel ve Yönetici SEÇİMİ verin ve Personel sütun maaşında GÜNCELLEME yapın. HİBE SEÇİMİ, GÜNCELLEME (maaş) AÇIK Personel K Personele, Direktör; Pearson Eğitim © 2015 197 197 Pearson Eğitim © 2015 198 198 33 GERİ ÇEKMEK GERİ ÇEKMEK REVOKE, GRANT ile verilen ayrıcalıkları geri alır. İPTAL ET [ŞUNUN İÇİN HİBE SEÇENEĞİ] GRANT OPTION FOR, GRANT'ın GRANT SEÇENEĞİ ile aktarılan ayrıcalıkların, ayrıcalıklardan ayrı olarak iptal edilmesini sağlar. CASCADE anahtar sözcüğü belirtilmedikçe, görünüm gibi terk edilmiş bir nesneyle sonuçlanırsa REVOKE başarısız olur. Bu kullanıcıya etkilenmez. {Ayrıcalık Listesi | TÜM AYRICALIKLAR} AÇIK NesneAdı {AuthorizationIdList | HALK} diğer kullanıcılar tarafından verilen ayrıcalıklar [KISITLAMA | ÇAĞLAYAN] • TÜM AYRICALIKLAR, bir kullanıcıya ayrıcalıkları iptal eden kullanıcı tarafından verilen tüm ayrıcalıkları ifade eder. Pearson Eğitim © 2015 199 199 200 200 GERİ ÇEKMEK Örnek 7.10/11 - Belirli Ayrıcalıkları İPTAL ETMEK Şube tablosundaki SELECT ayrıcalığını tüm kullanıcılardan iptal edin. SEÇİMİ İPTAL ET ON Şubesi KAMUDAN; Personel tablosunda Yöneticiye verilen tüm ayrıcalıkları iptal edin. TÜM AYRICALIKLARI İPTAL ET AÇIK Personel KİMDEN Direktör; 201 201 202 202 34