Veritabanı Tasarımı. Alt Sorgu Temelleri

Benzer belgeler
Veritabanı Tasarımı. Çoklu Satır Alt Sorgular

Veri Tabanı II Alt Sorgular

BÖLÜM- 13: ALT SORGULAR İLE VERİ İŞLEME

Veritabanı Tasarımı. Büyük/Küçük Harf ve Karakter İşleme

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme

BÖLÜM -2: VERİLERİ SINIRLAMA VE SIRALAMA

Basit SQL Sorguları Veritabanından verilerin SELECT cümleleri ile alınması işlemine sorgulama denir.

VERİTABANI. SQL (Structured Query Language)

BÖLÜM- 5: BİRDEN FAZLA TABLODAN VERİ GETİRMEK

Veritabanı Tasarımı. Join Yantümceleri

Veritabanı Tasarımı. Kartezyen Çarpım ve Join İşlemleri

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

Veritabanı Tasarımı. SQL Deyimi Anatomisi

Veritabanı Tasarımı COUNT, DISTINCT, NVL

Veritabanı. SQL (Structured Query Language)

Veri Tabanı Yönetim Sistemleri Bölüm - 5

Veritabanı Tasarımı. İlişkisel Veritabanı Kavramlarına Giriş

İleri Seviye Select Cümlecikleri

Veritabanı Tasarımı. Sütunlar, Karakterler ve Satırlar ile Çalışma

Veri Tabanı Tasarım ve Yönetimi

1. IT bölümünde çalışan tüm çalışanların isimlerini gösteren bir sorgu yazınız.

Veritabanı Tasarımı. Self-Join ve Hiyerarşik Sorgular

SQL e Giriş. Uzm. Murat YAZICI

Veritabanı Yönetim Sistemleri (Başarım Eniyileme Performance Tuning)

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

Emrah UYSAL 1

SQL Query and Table Application

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

BÖLÜM- 11: BÜYÜK VERİ KÜMELERİ

Veritabanı Tasarımı. Basit Eşleme: Dönüşüm İşlemi

SQL DİĞER Deyimler ve Komutlar

Veri Tabanı Yönetim Sistemleri Bölüm - 7

Veri Tabanı Programlamaya Giriş

IN ve NOT IN Tablodaki alan içeriklerine ulaşmak için IN deyimi kullanılır.

İLİŞKİSEL VERİTABANI. İlişkisel veritabanlarının ortak özelliği verilerin tablolar aracılığı ile tutulmasıdır.

PostgreSQL ve PL/pgSQL

Veritabanı Tasarımı. Düzenli İfadeler

PostgreSQL ve PL/pgSQL

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

Lıke Joker Karakterler, Is [not] Null, Order By, Group By, As

VERİTABANI Veritabanı Sorgulama

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

Oracle da kullanılan veri tipleri:

SQL Kod ile Tablo Oluşturma

BMB202. Veritabanı Yönetimi Ders 5. İlişkisel Cebir ve SQL. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

Her bölüm için kısa bazı girişler yapılacak ve bölüm içerisinde anlatılacak olan konuların genel başlıkları belirtilecektir.

Birden Çok Tabloda Sorgulama (Join)

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Veritabanı Tasarımı. Tablo Değiştirme

Veri Tabanı Yönetim Sistemleri Bölüm - 4

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

SQL NEDİR?... 4 Transact-SQL... 4 SQL Veri İşleme Dili (Data Manipulation Language-DML)... 4 SQL Veri Tanımlama Dili (Data Definition

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

--Tüm personel kayıtlarını seçiniz. SELECT* FROM employees ;

Birleştirme (JOIN) işlemi

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

SQL Komutları (2) Uzm. Murat YAZICI

Emrah UYSAL 1

Veritabanı Yönetim Sistemleri İleri SQL

Transact-SQL SQL NEDİR? Transact-SQL. SQL Veri İşleme Dili (Data Manipulation Language-DML) SQL Veri Tanımlama Dili (Data Definition Language-DDL)

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME

5 Sorgulama İşlemleri. Veritabanı 1

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

YAPISAL SORGULAMA DİLİ (SQL)

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

SORGULAR. Öğr.Gör.Volkan Altıntaş

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

Sql Komutlarından Select Sorgusu Ve Myadmin Üzerinden Anlatımı

VERİ TABANI ve YÖNETİMİ

Veriyi ve Bilgiyi Organize Etmek. Bilgisayar Mühendisliğine Giriş 1

BTP203 VERİTABANI YÖNETİM SİSTEMLERİ

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Fonksiyonlar, Count, Sum, Avg, Max, Mın, Lower, Upper, Length, Round, Mod, Left, Right, Concat, If

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Mantıksal İşlemler. 7.1 true, false, nil

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

VERİTABANI ve YÖNETİMİ

VERİ TABANI YÖNETİM SİSTEMLERİ I

Oracle Database 11g: Introduction to SQL

«BM364» Veritabanı Uygulamaları

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

SQL (Structured Query Language)

Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler

İlişkisel Veri Tabanları I

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR

Bilgisayar Uygulamaları. MySql

Veritabanı Tasarımı. DML İşlemleri ve Görünümler

Veri Tabanı Yönetim Sistemleri Bölüm - 6

Microsoft SQL Server Sorgulama

TEMEL SQL SORGU ÖRNEKLERİ. Yukarıdaki sorguyu yazıp çalıştırdığımızda db_market adında bir veritabanı oluşturulur.

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

Transkript:

Veritabanı Tasarımı Alt Sorgu Temelleri

Konular Verilerin elde edilmesi için alt sorguların tanımlanması ve açıklanması WHERE yantümcesinde tek satır alt sorgu oluşturulması ve çalıştırılması Tek satır ve çoklu satır alt sorguların arasındaki fark İkili ve ikili olmayan alt sorguların arasındaki fark EXISTS ve NOT EXISTS operatörlerini sorgulamada kullanma 2

Amaç Bu ders boyunca, bir veritabanından veri ayıklamak için sorgular oluşturduk. Tüm bilgilere sahip olmadığınız bir sorgu yazmak isterseniz ne yaparsınız? Bir sorgu içerisine başka bir sorgu yerleştirerek bu sorunu çözebilirsiniz. İç sorgu alt sorgu olarak ifade edilir. Alt sorgu bilmediğiniz bir bilgi üzerinde çalışır. Dış sorgu bu bilgiyi kullanarak bilmek istediğiniz bilgiyi ulaşır. Eğer tablodaki verilerin kendisine bağlı bir durum ile bir tablodan satırları seçmek gerekirse iki sorguyu bir sorguda birleştirmek çok yararlı olabilir. 3

Alt Sorgu Örneği Bir alt sorgu başka bir SELECT ifadesinin içine gömülü olan başka bir SELECT deyimidir. Alt sorgu ana sorgudan önce yürütülür. Alt sorgunun sonucu ana veya dış sorgu tarafından kullanılır. Alt sorgu sözdizimi: SELECT seçim_listesi FROM tablo WHERE ifade_operatörü (SELECT seçim_listesi FROM tablo); 4

Alt Sorgu Örneği Alt sorgular WHERE, HAVING ve FROM yantümcelerini içererek bir dizi SQL ifadesinin içinde yer alabilir. SELECT seçim_listesi FROM tablo WHERE ifade_operatörü (SELECT seçim_listesi FROM tablo); 5

Alt Sorguları Kullanmak için Yönergeler Yönergeler: Alt sorgu parantez içine alınır. Alt sorgu karşılaştırma ifadesinin sağ tarafına yerleştirilir. Dış ve iç sorgular farklı tablolardan veri alabilir. Sadece ORDER BY yantümcesi bir SELECT deyimi için kullanılabilir; kullanıldığı takdirde, bu dış sorguda son ifade olmalıdır. Alt sorgu kendi ORDER BY yantümcesine sahip olamaz. Alt sorgu sayısındaki tek sınırlama sorguların kullandığı tampon boyutudur. 6

Alt Sorguların İki Türü Alt sorguların iki tipi vardır: Tek satır operatörleri (> =,> =, <, <>, <=) kullanan ve iç sorgudan tek satır döndüren tek satır alt sorguları Çoklu-satır operatörleri (IN, ANY, ALL) kullanan ve iç sorgudan birden fazla satır döndürebilen çoklu satır alt sorguları 7

Alt Sorgu Örneği Monique Tuttle dan sonra doğmuş Gloabal Fast Foods personelin isimlerini öğrenmek istersek ne yaparız? Bilmeniz gereken ilk şey, "Monique ne zaman doğdu?", sorusuna cevap vermektir. Onun doğum tarihini biliyorsanız, o zaman ondan sonra kimlerin doğum tarihleri olduğunu bulabilirsiniz. SELECT staff_id, first_name, last_name, birth_date FROM f_staffs WHERE birth_date >= (SELECT birth_date FROM f_staffs WHERE last_name = Tuttle ); 8

Alt Sorgu ve NULL Bir alt sorgu, bir null değeri döndürür veya hiçbir satır döndürmezse, dış sorgu alt sorgu sonuçlarını(null) alır ve WHERE yantümcesinde bu sonucu kullanır. SELECT last_name WHERE department_id = (SELECT department_id WHERE last_name = Grant ); No data found. Dış sorgu herhangi bir satır döndürmez çünkü herhangi bir değeri NULL ile karşılaştırmak NULL sonucu verir. 9

Alt Sorgu ve NULL Grant gibi aynı bölümde kimler çalışır? Grant'ın department_id değeri null. Null ile karşılaştıran bir şey null döndürür. SELECT last_name WHERE department_id = (SELECT department_id WHERE last_name = Grant ); No data found. 10

Çoklu Sütun Alt Sorguları Alt sorgular, bir veya daha fazla sütun kullanabilir. Birden fazla sütun kullanılırsa, çoklu sütun alt sorgu denir. Bir çoklu sütun sorgu ikili ve ya ikili olmayan karşılaştırmalar içerebilir. SELECT employee_id, manager_id, department_id WHERE (manager_id,department_id) IN (SELECT manager_id,department_id WHERE employee_id IN (149,174)) AND employee_id NOT IN (149,174) 11

Çoklu Sütun Alt Sorguları Kırmızı vurgulanan alt sorgu ve sonucu ile çoklu-sütun ikili alt sorgu gösterilmektedir. Sorgu müdürleri ve birimleri, 149 ve 174 çalışanlarının müdürleri ve birimleriyle aynı olan kayıtları listelemektedir. SELECT employee_id, manager_id, department_id WHERE (manager_id,department_id) IN (SELECT manager_id,department_id WHERE employee_id IN (149,174)) AND employee_id NOT IN (149,174) 12

Çoklu Sütun Alt Sorguları Çift-olmayan çoklu-sütun alt sorgusu ayrıca alt sorguda birden fazla sütun kullanır, ama onları bir defada karşılaştırır, böylece karşılaştırmalar farklı alt sorgularda gerçekleşir. SELECT employee_id, manager_id, department_id WHERE manager_id IN (SELECT manager_id WHERE employee_id IN (174,199)) AND department_id IN (SELECT department_id WHERE employee_id IN (174,199)) AND employee_id NOT IN(174,199); 13

Çoklu Sütun Alt Sorguları Çift-olmayan çoklu-sütun alt sorgusu çalıştırırken karşılaştırmak istediğiniz her bir sütun için bir alt sorgu yazmalısınız. SELECT employee_id, manager_id, department_id WHERE manager_id IN (SELECT manager_id WHERE employee_id IN (174,199)) AND department_id IN (SELECT department_id WHERE employee_id IN (174,199)) AND employee_id NOT IN(174,199); 14

Çoklu Sütun Alt Sorguları Sağdaki örnekte çoklü-sütun çift olmayan alt sorgular kırmızı ile gösterilen alt sorgulardır. Bu sorgu 174 veya 199 nolu çalışanlar ile ortak bir manager_id veya department_id yesahip olan çalışanların listesidir. SELECT employee_id, manager_id, department_id WHERE manager_id IN (SELECT manager_id WHERE employee_id IN (174,199)) AND department_id IN (SELECT department_id WHERE employee_id IN (174,199)) AND employee_id NOT IN(174,199); 15

Alt Sorgularda EXISTS ve NOT EXISTS EXISTS ve onun zıttı NOT EXISTS, alt sorgulardaki eşleşmeleri test ederken kullanılan iki ifadedir. EXISTS TRUE için test eder veya alt sorguda eşleşen sonuç vardır. "Hangi çalışanlar yönetici değildir?" sorusunu yanıtlamak için, önce, "Yöneticiler kimlerdir?" sorusunu sormak ve daha sonra "Kim yöneticiler listesinde kim yok?" sorusunu sormak gerekir. 16

Alt Sorgularda EXISTS ve NOT EXISTS Aynı sorgu NOT IN yerine NOT EXISTS ile birlikte yürütülürse, sonuç çok farklı olur. Bu sorgunun sonucu da yönetici olmayan hiçbir çalışan yoktur olarak göstermektedir. Yani tüm çalışanların zaten yönetici olduğunu ifade eder. Bu sonuca sebep olan nedir? SELECT count(*) t1 WHERE t1.employee_id NOT IN (SELECT t2.manager_id t2 ); 17

Alt Sorgularda EXISTS ve NOT EXISTS Garip sonucun nedeni sorgu tarafından döndürülen NULL değerinden kaynaklanmaktadır. Çalışanlar tablosundaki satırlardan birinde yönetici yoktur ve bu tüm sonucu yanlış yapmaktadır. Alt sorgular üç değer döndürebilir: TRUE, FALSE ve UNKNOWN. Alt sorgudaki NULL değer Oracle ın değerlendiremediği UNKNOWN döndürür. SELECT count(*) t1 WHERE t1.employee_id NOT IN (SELECT t2.manager_id t2 ); 18

Alt Sorgularda EXISTS ve NOT EXISTS Oracle tarafından EXISTS ve NOT EXISTS in değerlendirilmesi IN ve NOT IN in değerlendirilmesinden çok faklıdır. Bir EXISTS çalıştırıldığında, dış tabloda tam tablo taraması gerçekleştirir ve sonra da Oracle koşulun doğru olup olmadığını görmek için döngü oluşturur. FOR x IN ( SELECT * t1 ) LOOP IF ( EXISTS ( SELECT NULL t2 WHERE t1.emplolyee_id = t2.manager_id ) THEN OUTPUT THE RECORD END IF END LOOP 19

Alt Sorgularda EXISTS ve NOT EXISTS Bu dış tablo üzerinde herhangi var olan dizinleri kullanırken daha hızlı çalıştırır. EXISTS dış tablo dizinlerini kullanamaz. Tablo boyutu da önemli bir faktördür ve ifadelerin daha hızlı çalışmasını etkiler. Büyük bir iç tablo ile birleştirilen küçük bir dış tablo EXISTS kullanarak IN kullanımından daha da hızlı çalışır. Not: NULL ile çalışırken dikkatli olunuz. 20