SlideShare a Scribd company logo
1 of 16
Veri Tabanı
Hafta 3
SQL: Gelişmiş Sorgular
Sibel Kuzgun Akın
SQL ile Sorgulama
SELECT [DISTINCT] kolon1, kolon2
FROM tablo-adı
[WHERE koşul]
[GROUP BY kolon1, kolon2
[HAVING koşul]]
[ORDER by kolon1, kolon2];
[] içine yazılan ifadeler isteğe bağlıdır.
İtalik yazılan ifadelerin yerine kolon ve tablo
adları gelecektir.
DISTINCT

Tekrar eden sorgu sonuçlarını önlemek için
kullanılır.

Sorgu sonucunda elde edilen aynı satırlar
yalnızca bir kez gösterilir.

SELECT komutunun hemen ardından
yazılır.

Kullanımı isteğe bağlıdır.
ORDER BY

Sorgu sonuçlarını sıralamak için kullanılır.

SELECT'ten sonra belirtilen kolonlar
sıralama için kullanılabilir.

Sıralamanın yönü:
− ASC: Ascending, artan sırada
− DESC: Descending, azalan sırada

Birden fazla kolondan sıralama yapılabilir.
O zaman öncelik soldan sağa doğru
belirlenir.
DISTINCT ve ORDER BY
SELECT DISTINCT sehir
FROM musteri;
Sorgu sonucunda müşterilerin bulunduğu şehirlerin
listesini verir. Şehir adları tekrar etmez.
SELECT sehir, firma_adi
FROM musteri
ORDER BY sehir DESC, firma_adi ASC;
Sorgu sonuçlarını şehirden tersine, firma adından
alfabetik olarak sıralanmış şekilde getirir.
Sorgu sonuçlarını sayma

Bir tabloda kaç satır olduğunu saymak için
COUNT() işlevini kullanırız.

Müşteri tablosunda kaç satır var?
SELECT COUNT(*)
FROM musteri;
Gruplama

Örneğin müşterilerin şehirlere göre
dağılımını merak edersek, gruplama
yapmamız gerekir.

GROUP BY ifadesini kullanarak gruplama
yapılır.
SELECT sehir, COUNT(*)
FROM musteri
GROUP BY sehir;
Grupta Koşulu Sağlayanlar...

Gruplama yaptıktan sonra, o grup içinde bir
koşulu sağlayanları süzmek için HAVING
ifadesini kullanırız.

Örneğin 3 veya daha fazla müşterimiz olan
şehirleri sorgulamak için:
SELECT sehir, COUNT(*)
FROM musteri
GROUP BY sehir
HAVING COUNT(*) >= 3;
En Büyük, En Küçük, Ortalama

MAX(): En büyük değeri getirir.

MIN(): En küçük değeri getirir.

AVG(): Ortalama değeri hesaplar.

Bu işlevlerin hepsi MySQL'in
kütüphanesinde tanımlıdır ve aynı
zamanda veriyi gruplar.
MIN(), MAX(), AVG()
CREATE TABLE kisi (
kisi_no INT NOT NULL PRIMARY KEY,
ad VARCHAR(20) NOT NULL,
soyad VARCHAR(20) NULL,
yas INT NULL,
sehir VARCHAR(20) NULL
);
-- Varsayalım ki, INSERT ile tabloyu
doldurduk.
SELECT MAX(yas), MIN(yas), AVG(yas)
FROM kisi;
AUTO_INCREMENT

MySQL'e özel bir komut. ANSI SQL'in bir
parçası değil!

1'den veya belirttiğiniz başka bir sayıdan
başlayarak, her yeni kayıtta otomotik birer
birer artar.

Birincil anahtar (primary key) ile birlikte
kullanılır.
ALTER TABLE `kisi` CHANGE
`kisi_no` `kisi_no` INT(11) NOT
NULL AUTO_INCREMENT;
Arka planda neler oluyor?

Sorgu en iyileyici (query optimizer)

Sorgu motoru (query engine)

Depolama yönetimi (storage management)

Hareket yönetimi (transaction
management)
− Aynı anda kullanım (Concurrency)
− Asıl haline dönme (Recovery)
Hareketler

Veri tabanınde SQL ile işlem yaparken,
hareket (transaction) kullanabiliriz.

Bir dizi işlemin ya toplu olarak ardışık bir
şekilde yapılacağını ya da hiç
yapılmayacaklarını bize garanti eder.

Örneğin art arda 5 kayıt girerken, 2. kayıtı
girdikten sonra bir hata oluşursa, sistem
kayıt girmeye başlamadan önceki haline
geri döner.
Hareketlerin Özellikleri (1)

Bölünemezler (atomicity):
− Bir çok SQL komutundan oluşsalar da,
tek bir komut gibi davranırlar.
− Hareket içindeki tüm komutlar sırayla
çalıştırılır. Eğer biri başarısız olursa, o
ana kadar yapılan tüm işlemler geri alınır.

Tutarlıdırlar (consistency)
− Sınırlamalar, ardışık işlemler, tetikleyiciler
gibi veri tabanının tutarlılığını sağlayan
kurallara uyarlar.
Haraketlerin Özellikleri (2)

Yalıtılmışlardır (isolation)
− Yapılan bir işlem diğerleri tarafından ne
zaman görülebilir?
− Hedef: Aynı anda kullanım kontrolü
(concurrency control)

Süreklidirler (durability)
− Bir hareket kesinleştiğinde (commit),
sistem çökse, kapansa, vb. bile
kesinleşmiş olarak kalır. Diske yazılır.
Hareket Kontrol Komutları

TCL: Transaction Control Language

START TRANSACTION;
− Hareketi başlatır.

COMMIT;
− Hareketi kesinleştirir, işlemleri diske yazar.

ROLLBACK;
− Hareket başlangıcındaki duruma geri döner.

SET autocommit = {0 | 1}
− MySQL varsayılan olarak autocommit durumda.

More Related Content

What's hot

Meraki Solution Overview
Meraki Solution OverviewMeraki Solution Overview
Meraki Solution OverviewClaudiu Sandor
 
Active Directory Proposal
Active Directory ProposalActive Directory Proposal
Active Directory ProposalMJ Ferdous
 
Splunk Enterprise Security
Splunk Enterprise Security Splunk Enterprise Security
Splunk Enterprise Security Md Mofijul Haque
 
What is a Firewall Risk Assessment?
What is a Firewall Risk Assessment?What is a Firewall Risk Assessment?
What is a Firewall Risk Assessment?VISTA InfoSec
 
The Evolution of the Data Centre
The Evolution of the Data CentreThe Evolution of the Data Centre
The Evolution of the Data CentreCisco Canada
 
Secure collab on premise
Secure collab on premiseSecure collab on premise
Secure collab on premiseCisco Canada
 
Splunk Overview
Splunk OverviewSplunk Overview
Splunk OverviewSplunk
 
Microsoft Azure Security Overview
Microsoft Azure Security OverviewMicrosoft Azure Security Overview
Microsoft Azure Security OverviewAlert Logic
 
Industrial Cyber Security: What is Application Whitelisting?
Industrial Cyber Security: What is Application Whitelisting?Industrial Cyber Security: What is Application Whitelisting?
Industrial Cyber Security: What is Application Whitelisting?honeywellgf
 
Huaweinetworkicondatabasev2 130509181727-phpapp02
Huaweinetworkicondatabasev2 130509181727-phpapp02Huaweinetworkicondatabasev2 130509181727-phpapp02
Huaweinetworkicondatabasev2 130509181727-phpapp02taipm1986
 
Maturing your organization from DevOps to DevSecOps
Maturing your organization from DevOps to DevSecOpsMaturing your organization from DevOps to DevSecOps
Maturing your organization from DevOps to DevSecOpsAmazon Web Services
 
Strategies for Managing OT Cybersecurity Risk
Strategies for Managing OT Cybersecurity RiskStrategies for Managing OT Cybersecurity Risk
Strategies for Managing OT Cybersecurity RiskMighty Guides, Inc.
 
Enterprise Security Architecture
Enterprise Security ArchitectureEnterprise Security Architecture
Enterprise Security ArchitecturePriyanka Aash
 
CIS 2303 LO1: Introduction to System Analysis and Design
CIS 2303 LO1: Introduction to System Analysis and DesignCIS 2303 LO1: Introduction to System Analysis and Design
CIS 2303 LO1: Introduction to System Analysis and DesignAhmad Ammari
 
Secure Software Development Lifecycle
Secure Software Development LifecycleSecure Software Development Lifecycle
Secure Software Development Lifecycle1&1
 

What's hot (20)

CA_Module_1.pptx
CA_Module_1.pptxCA_Module_1.pptx
CA_Module_1.pptx
 
Meraki Solution Overview
Meraki Solution OverviewMeraki Solution Overview
Meraki Solution Overview
 
Active Directory Proposal
Active Directory ProposalActive Directory Proposal
Active Directory Proposal
 
Splunk Enterprise Security
Splunk Enterprise Security Splunk Enterprise Security
Splunk Enterprise Security
 
Techowl- Wazuh.pdf
Techowl- Wazuh.pdfTechowl- Wazuh.pdf
Techowl- Wazuh.pdf
 
What is a Firewall Risk Assessment?
What is a Firewall Risk Assessment?What is a Firewall Risk Assessment?
What is a Firewall Risk Assessment?
 
The Evolution of the Data Centre
The Evolution of the Data CentreThe Evolution of the Data Centre
The Evolution of the Data Centre
 
Secure collab on premise
Secure collab on premiseSecure collab on premise
Secure collab on premise
 
Arcsight explained
Arcsight explainedArcsight explained
Arcsight explained
 
Splunk Overview
Splunk OverviewSplunk Overview
Splunk Overview
 
Microsoft Azure Security Overview
Microsoft Azure Security OverviewMicrosoft Azure Security Overview
Microsoft Azure Security Overview
 
Industrial Cyber Security: What is Application Whitelisting?
Industrial Cyber Security: What is Application Whitelisting?Industrial Cyber Security: What is Application Whitelisting?
Industrial Cyber Security: What is Application Whitelisting?
 
04. SAKTTI Introduction
04. SAKTTI Introduction04. SAKTTI Introduction
04. SAKTTI Introduction
 
Huaweinetworkicondatabasev2 130509181727-phpapp02
Huaweinetworkicondatabasev2 130509181727-phpapp02Huaweinetworkicondatabasev2 130509181727-phpapp02
Huaweinetworkicondatabasev2 130509181727-phpapp02
 
Maturing your organization from DevOps to DevSecOps
Maturing your organization from DevOps to DevSecOpsMaturing your organization from DevOps to DevSecOps
Maturing your organization from DevOps to DevSecOps
 
Strategies for Managing OT Cybersecurity Risk
Strategies for Managing OT Cybersecurity RiskStrategies for Managing OT Cybersecurity Risk
Strategies for Managing OT Cybersecurity Risk
 
Enterprise Security Architecture
Enterprise Security ArchitectureEnterprise Security Architecture
Enterprise Security Architecture
 
CIS 2303 LO1: Introduction to System Analysis and Design
CIS 2303 LO1: Introduction to System Analysis and DesignCIS 2303 LO1: Introduction to System Analysis and Design
CIS 2303 LO1: Introduction to System Analysis and Design
 
Voting protocol
Voting protocolVoting protocol
Voting protocol
 
Secure Software Development Lifecycle
Secure Software Development LifecycleSecure Software Development Lifecycle
Secure Software Development Lifecycle
 

More from Sibel Kuzgun AKIN

More from Sibel Kuzgun AKIN (11)

Requirements Analysis
Requirements AnalysisRequirements Analysis
Requirements Analysis
 
Cost Estimation
Cost EstimationCost Estimation
Cost Estimation
 
User Interface and User Experience
User Interface and User ExperienceUser Interface and User Experience
User Interface and User Experience
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Testing Software
Testing SoftwareTesting Software
Testing Software
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Normal Formlar
Normal FormlarNormal Formlar
Normal Formlar
 
ER Şemaları
ER ŞemalarıER Şemaları
ER Şemaları
 
Veri Tabani: SQL'e Giriş (Hafta 2)
Veri Tabani: SQL'e Giriş (Hafta 2)Veri Tabani: SQL'e Giriş (Hafta 2)
Veri Tabani: SQL'e Giriş (Hafta 2)
 
Veri Tabanı: Temel Kavramlar (Hafta 1)
Veri Tabanı: Temel Kavramlar (Hafta 1)Veri Tabanı: Temel Kavramlar (Hafta 1)
Veri Tabanı: Temel Kavramlar (Hafta 1)
 

Veri Tabanı: SQL Gelişmiş Sorgular (Hafta 3)

  • 1. Veri Tabanı Hafta 3 SQL: Gelişmiş Sorgular Sibel Kuzgun Akın
  • 2. SQL ile Sorgulama SELECT [DISTINCT] kolon1, kolon2 FROM tablo-adı [WHERE koşul] [GROUP BY kolon1, kolon2 [HAVING koşul]] [ORDER by kolon1, kolon2]; [] içine yazılan ifadeler isteğe bağlıdır. İtalik yazılan ifadelerin yerine kolon ve tablo adları gelecektir.
  • 3. DISTINCT  Tekrar eden sorgu sonuçlarını önlemek için kullanılır.  Sorgu sonucunda elde edilen aynı satırlar yalnızca bir kez gösterilir.  SELECT komutunun hemen ardından yazılır.  Kullanımı isteğe bağlıdır.
  • 4. ORDER BY  Sorgu sonuçlarını sıralamak için kullanılır.  SELECT'ten sonra belirtilen kolonlar sıralama için kullanılabilir.  Sıralamanın yönü: − ASC: Ascending, artan sırada − DESC: Descending, azalan sırada  Birden fazla kolondan sıralama yapılabilir. O zaman öncelik soldan sağa doğru belirlenir.
  • 5. DISTINCT ve ORDER BY SELECT DISTINCT sehir FROM musteri; Sorgu sonucunda müşterilerin bulunduğu şehirlerin listesini verir. Şehir adları tekrar etmez. SELECT sehir, firma_adi FROM musteri ORDER BY sehir DESC, firma_adi ASC; Sorgu sonuçlarını şehirden tersine, firma adından alfabetik olarak sıralanmış şekilde getirir.
  • 6. Sorgu sonuçlarını sayma  Bir tabloda kaç satır olduğunu saymak için COUNT() işlevini kullanırız.  Müşteri tablosunda kaç satır var? SELECT COUNT(*) FROM musteri;
  • 7. Gruplama  Örneğin müşterilerin şehirlere göre dağılımını merak edersek, gruplama yapmamız gerekir.  GROUP BY ifadesini kullanarak gruplama yapılır. SELECT sehir, COUNT(*) FROM musteri GROUP BY sehir;
  • 8. Grupta Koşulu Sağlayanlar...  Gruplama yaptıktan sonra, o grup içinde bir koşulu sağlayanları süzmek için HAVING ifadesini kullanırız.  Örneğin 3 veya daha fazla müşterimiz olan şehirleri sorgulamak için: SELECT sehir, COUNT(*) FROM musteri GROUP BY sehir HAVING COUNT(*) >= 3;
  • 9. En Büyük, En Küçük, Ortalama  MAX(): En büyük değeri getirir.  MIN(): En küçük değeri getirir.  AVG(): Ortalama değeri hesaplar.  Bu işlevlerin hepsi MySQL'in kütüphanesinde tanımlıdır ve aynı zamanda veriyi gruplar.
  • 10. MIN(), MAX(), AVG() CREATE TABLE kisi ( kisi_no INT NOT NULL PRIMARY KEY, ad VARCHAR(20) NOT NULL, soyad VARCHAR(20) NULL, yas INT NULL, sehir VARCHAR(20) NULL ); -- Varsayalım ki, INSERT ile tabloyu doldurduk. SELECT MAX(yas), MIN(yas), AVG(yas) FROM kisi;
  • 11. AUTO_INCREMENT  MySQL'e özel bir komut. ANSI SQL'in bir parçası değil!  1'den veya belirttiğiniz başka bir sayıdan başlayarak, her yeni kayıtta otomotik birer birer artar.  Birincil anahtar (primary key) ile birlikte kullanılır. ALTER TABLE `kisi` CHANGE `kisi_no` `kisi_no` INT(11) NOT NULL AUTO_INCREMENT;
  • 12. Arka planda neler oluyor?  Sorgu en iyileyici (query optimizer)  Sorgu motoru (query engine)  Depolama yönetimi (storage management)  Hareket yönetimi (transaction management) − Aynı anda kullanım (Concurrency) − Asıl haline dönme (Recovery)
  • 13. Hareketler  Veri tabanınde SQL ile işlem yaparken, hareket (transaction) kullanabiliriz.  Bir dizi işlemin ya toplu olarak ardışık bir şekilde yapılacağını ya da hiç yapılmayacaklarını bize garanti eder.  Örneğin art arda 5 kayıt girerken, 2. kayıtı girdikten sonra bir hata oluşursa, sistem kayıt girmeye başlamadan önceki haline geri döner.
  • 14. Hareketlerin Özellikleri (1)  Bölünemezler (atomicity): − Bir çok SQL komutundan oluşsalar da, tek bir komut gibi davranırlar. − Hareket içindeki tüm komutlar sırayla çalıştırılır. Eğer biri başarısız olursa, o ana kadar yapılan tüm işlemler geri alınır.  Tutarlıdırlar (consistency) − Sınırlamalar, ardışık işlemler, tetikleyiciler gibi veri tabanının tutarlılığını sağlayan kurallara uyarlar.
  • 15. Haraketlerin Özellikleri (2)  Yalıtılmışlardır (isolation) − Yapılan bir işlem diğerleri tarafından ne zaman görülebilir? − Hedef: Aynı anda kullanım kontrolü (concurrency control)  Süreklidirler (durability) − Bir hareket kesinleştiğinde (commit), sistem çökse, kapansa, vb. bile kesinleşmiş olarak kalır. Diske yazılır.
  • 16. Hareket Kontrol Komutları  TCL: Transaction Control Language  START TRANSACTION; − Hareketi başlatır.  COMMIT; − Hareketi kesinleştirir, işlemleri diske yazar.  ROLLBACK; − Hareket başlangıcındaki duruma geri döner.  SET autocommit = {0 | 1} − MySQL varsayılan olarak autocommit durumda.