Uploaded by mumosch

SQL 2023

advertisement
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
Download