sql temelleri bilgisayar mühendisleri odası sql başlangıç seviye eğitimi

79
SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi Hüseyin AKKAYA, Nisan 2013

Upload: nyla

Post on 23-Feb-2016

84 views

Category:

Documents


0 download

DESCRIPTION

SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi Hüseyin AKKAYA, Nisan 2013. Neler Öğreneceğiz?. Eğitim sorasında, aşağıdaki konularda bilgi ve beceri sahibi olacağız : Veritabanı yapılarını tanımlayacağız. SELECT ile satır ve sütunlardan veri çekebileceğiz. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

SQL TemelleriBilgisayar Mühendisleri OdasıSQL Başlangıç Seviye EğitimiHüseyin AKKAYA, Nisan 2013

Page 2: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Neler Öğreneceğiz?

Eğitim sorasında, aşağıdaki konularda bilgi ve beceri sahibi olacağız: • Veritabanı yapılarını tanımlayacağız.• SELECT ile satır ve sütunlardan veri çekebileceğiz.• İstediğimiz ve istenilen sırada verilerle raporlar

çekebileceğiz.• SQL fonksiyonları ile varolan verilerden yeni veriler

türeteceğiz. • DML (Data Manipulation Language) komutları ile verileri

güncelleyebileceğiz.

Page 3: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

İlişkisel Veritabanı

İlişkisel veritabanı, birbirleriyle ilişkili iki boyutlu tablolar kümesidir.

VeritabanıSunucusu

Tablo ismi: EMPLOYEES Tablo ismi: DEPARTMENTS

… …

Page 4: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Tablolar Arası İlişki

• Tablodaki her satır ‘benzersiz’ birincil anahtar (primary key - PK) ile ifade edilir.

• Tablolar referans anahtarlar (foreign key - FK) kullanılarak birbirleri ile bağlanılabilir.

Tablo ismi: EMPLOYEESTablo ismi: DEPARTMENTS

Primary key Primary keyForeign key

Page 5: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

İlişkisel Veritabanı Terminolojisi

1

23 4

6

5

Page 6: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

İlişkisel Veritabanı Özellikleri

İlişkisel Veritabanı:• SQL (Structured Query Language) kullanılarak

ulaşılabilir ve üzerinde değişiklik yapılabilir.• İlişkili tabloları içerir.• Operatör kümeleri kullanır.

Page 7: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

SQL ile Veritabanı (RDBMS) Bağlantısı

SQL cümlesi girilir. SQL cümlesi veritabanı sunucusuna yollanır.

sunucu

SELECT department_name FROM departments;

Page 8: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

SQL Yapıları

Data manipulation language (DML)

Data definition language (DDL)

Transaction control

Data control language (DCL)

SELECT INSERTUPDATEDELETEMERGE

CREATEALTERDROPRENAMETRUNCATECOMMENT

GRANTREVOKE

COMMITROLLBACKSAVEPOINT

Page 9: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Eğitimde Kullanılacak TablolarEMPLOYEES

DEPARTMENTS JOB_GRADES

Page 10: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Birinci Bölüm

SQL SELECT Yapısı ile Veri Çekmek

Page 11: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

SQL SELECT Yapısı Neler Yapabilir?

SelectionProjection

Tablo 1 Tablo 2

Tablo 1Tablo 1

Join

Page 12: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Temel SELECT Yapısı

SELECT *|{[DISTINCT] column|expression [alias],...}FROM table;

• SELECT görüntülenmek istenilen kolonları ifade eder.• FROM ise bu kolonları içeren tabloyu ifade eder.

Page 13: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Tüm Kolonların Seçilmesi

SELECT *FROM departments;

Page 14: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

İstenilen Kolonların Seçilmesi

SELECT department_id, location_idFROM departments;

Page 15: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Aritmetik Operatörler

Aritmetik operatörler kullanılarak yeni veriler çekilebilir.

Operatör Tanım+ Toplama- Çıkarma

* Çarpma/ Bölme

Page 16: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Aritmetik Operatör Kullanımı

SELECT last_name, salary, salary + 300FROM employees;

Page 17: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Aritmetik Operatör Kullanımı (Devam)

SELECT last_name, salary, 12*salary+100FROM employees;

SELECT last_name, salary, 12*(salary+100)FROM employees;

1

2

Page 18: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Null Değer

• Null bilinmeyen bir değerdir.• Null, sıfır ya da boşluk ile aynı şey değildir.

SELECT last_name, job_id, salary, commission_pctFROM employees;

Page 19: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Kolon Alias Tanımları

Kolon alias’ı:• Kolon başlığını yeniden isimlendirir.• Hesaplamaların olduğu kolonlarda faydalıdır.• Kolon isminin hemen ardından gelir ( Ayrıca kolon

ismi ve alias arasında AS anahtar kelimesi de yer alabilir).

• Eğer özel karakterlerler veya boşuk içeriyorsa çift tırnak («») kullanılır.

Page 20: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Kolon Alias Kullanımı

SELECT last_name "Name" , salary*12 "Annual Salary"FROM employees;

SELECT last_name AS name, commission_pct commFROM employees;

Page 21: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Birleştirme Operatörü

Birleştirme Operatörü:• Kolonları veya karakterleri diğer kolonlara bağlar• İki dik çizgi ile ifade edilir (||)

SELECT last_name||job_id AS "Employees"FROM employees;

Page 22: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Karakter Stringleri Kullanımı

SELECT last_name ||' is a '||job_id AS "Employee Details"FROM employees;

Page 23: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Aynı Satırlar – DISTINCT Kullanımı

SELECT department_idFROM employees;

SELECT DISTINCT department_idFROM employees;

1

2

Page 24: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

İkinci Bölüm

Verilerin Kısıtlanması Ve Sınırlanması

Page 25: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Seçilen Satırları Sınırlandırma

• WHERE ile dönen satırlar sınırlandırılır:

SELECT *|{[DISTINCT] column|expression [alias],...}FROM table[WHERE condition(s)];

Page 26: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

WHERE Kullanımı

SELECT employee_id, last_name, job_id, department_idFROM employeesWHERE department_id = 90 ;

Page 27: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

WHERE Kullanımı (Devam)

SELECT last_name, job_id, department_idFROM employeesWHERE last_name = 'Whalen' ;

• Karakterler ve tarih değerleri tek tırnak içine alınır.• Karakterler büyük küçük harf duyarlı, tarihler ise format

duyarlıdır.• Default tarih formatı DD-MON-RR şeklindedir..

Page 28: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Karşılaştırma OperatörleriOperatör Anlamı

= ‘e eşit> ‘den büyük

>= ‘den büyük veya eşit< ‘den küçük

<= ‘den küçük veya eşit<> ‘e eşit değil

BETWEEN...AND...

İki değer arasında

IN(set) Listedeki verilerle eşeleşmeLIKE Karakter benzerliğiIS NULL Null değer

Page 29: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Karşılaştırma Operatörleri Kullanımı

SELECT last_name, salaryFROM employeesWHERE salary <= 3000 ;

Page 30: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

BETWEEN Kullanımı

SELECT last_name, salaryFROM employeesWHERE salary BETWEEN 2500 AND 3500 ;

BETWEEN belli aralıktaki satırları gösterir:

Lower limit Upper limit

Page 31: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

IN Kullanımı

SELECT employee_id, last_name, salary, manager_idFROM employeesWHERE manager_id IN (100, 101, 201) ;

Page 32: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

LIKE Kullanımı

• Benzer karakterleri içeren veriler çağrılabilir:

• _ aranan karakterden önce kaç harf olduğunu, % ise karakter sonrası (belirsiz sayıda) harf olduğunu gösterir.

SELECT last_nameFROM employeesWHERE last_name LIKE '_o%' ;

Page 33: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

NULL Kullanımı

SELECT last_name, manager_idFROM employeesWHERE manager_id IS NULL ;

IS NULL operatörü ile çekilen sorgu:

Page 34: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Mantıksal OperatörlerOperatör AnlamıAND Eğer her iki kondisyon doğru ise

TRUE döndürür.OR İki kondisyondan herhangi biri

doğru ise TRUE döndürür. NOT Eğer izleyen kondisyon yanlış ise

TRUE döndürür.

Page 35: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

AND Kullanımı

SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary >=10000AND job_id LIKE '%MAN%' ;

Her iki kondisyon da doğru olmalı:

Page 36: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

OR Kullanımı

SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary >= 10000OR job_id LIKE '%MAN%' ;

OR herhangi biri doğru olduğunda doğru:

Page 37: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

NOT Kullanımı

SELECT last_name, job_idFROM employeesWHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;

Page 38: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

ORDER BY Kullanımı• ORDER BY ile sıralama yapılır:

– ASC: artarak sıralama, default– DESC: azalarak sıralama

• SELECT cümlesinde ORDER BY en sonda yer alır:

SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date ;

Page 39: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

ORDER BY Kullanımı (Devam)

• Sorting in descending order:

• Sorting by column alias:

• Sorting by multiple columns:

SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date DESC ; 1

SELECT employee_id, last_name, salary*12 annsalFROM employeesORDER BY annsal ;

2

SELECT last_name, department_id, salaryFROM employeesORDER BY department_id, salary DESC;

3

Page 40: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Üçüncü Bölüm

Tek-Satır Fonksiyonların Kullanımı

function_name [(arg1, arg2,...)]

Page 41: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Tek-satır (single-row) Fonksiyonlar

Dönüştürme

Karakter

Sayı

Tarih

Genel Tek-satırFonksiyonlar

Page 42: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Karakter Fonksiyonları

Karakter Fonksiyonları

LOWERUPPERINITCAP

CONCATSUBSTRLENGTHINSTRLPAD | RPADTRIMREPLACE

Büyük-KüçükFonksiyonlar

Karakter DeğiştirenFonksiyonlar

Page 43: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Büyük-Küçük Fonksiyonları

Fonksiyon SonuçLOWER('SQL Egitimi') sql egitimiUPPER('SQL Egitimi') SQL EGITIMIINITCAP('SQL Egitimi') Sql Egitimi

Page 44: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Büyük-Küçük Fonksiyonları Kullanımı

SELECT employee_id, last_name, department_idFROM employeesWHERE LOWER(last_name) = 'higgins';

SELECT employee_id, last_name, department_idFROM employeesWHERE last_name = 'higgins';no rows selected

Page 45: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Karakter Değitiştiren Fonksiyonlar

Fonksiyon SonuçCONCAT('Hello', 'World') HelloWorldSUBSTR('HelloWorld',1,5) HelloLENGTH('HelloWorld') 10INSTR('HelloWorld', 'W') 6LPAD(salary,10,'*') *****24000RPAD(salary, 10, '*') 24000*****REPLACE('JACK and JUE','J','BL')

BLACK and BLUE

TRIM('H' FROM 'HelloWorld') elloWorld

Page 46: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Karakter Değitiştiren Fonksiyonların Kullanımı

SELECT employee_id, CONCAT(first_name, last_name) NAME, job_id, LENGTH (last_name), INSTR(last_name, 'a') "Contains 'a'?"FROM employeesWHERE SUBSTR(job_id, 4) = 'REP';

2

31 2

1

3

Page 47: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Tarih (Date) FonksiyonlarıFonksiyon SonuçMONTHS_BETWEEN İki tarih arasındaki ayların sayısıADD_MONTHS Tarihe ay eklemeNEXT_DAY Tarihten sonraki günLAST_DAY Ayın son günü

ROUND Tarihi yuvarlarTRUNC Tarihi keser

Page 48: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Tarih (Date) Fonksiyonları Kullanımı

Fonksiyon SonuçMONTHS_BETWEEN ('01-SEP-95','11-JAN-94')

19.6774194

ADD_MONTHS ('11-JAN-94',6) '11-JUL-94'NEXT_DAY ('01-SEP-95','FRIDAY') '08-SEP-95'LAST_DAY ('01-FEB-95') '28-FEB-95'

Page 49: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Tarih (Date) Fonksiyonları Kullanımı

Function ResultROUND(SYSDATE,'MONTH') 01-AUG-03ROUND(SYSDATE ,'YEAR') 01-JAN-04TRUNC(SYSDATE ,'MONTH') 01-JUL-03TRUNC(SYSDATE ,'YEAR') 01-JAN-03

SYSDATE = '25-JUL-03':

Page 50: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

TO_CHAR Fonksiyonunun Kullanımı

Format model:• Tek tırnak arasına alınmalı• Büyük-küçük harf duyarlı• Tarih değerinden virgül ile ayrılmalı

TO_CHAR(date, 'format_model')

Page 51: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

TO_CHAR Fonksiyonunun KullanımıElement ResultYYYY Sayıyla yılYEAR Yazıyla yıl (İngilizce)MM Ayın iki digit ile gösterimiMONTH Ayın tam isminin yazılması

MON Ayın üç harfinin yazılmasıDAY Günün tam isminin yazılmasıDD Ayın gününün sayosayl değeri

Page 52: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

TO_CHAR Fonksiyonunun Kullanımı

SELECT last_name, TO_CHAR(hire_date, 'DD Month YYYY') AS HIREDATEFROM employees;

Page 53: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

NVL Fonksiyonu

Null değeri istenilen değere değiştirir:• Veri tipi olarak sayı, tarih ve karakter kullanılabilir.• Örnek:

– NVL(commission_pct,0)– NVL(hire_date,'01-JAN-97')– NVL(job_id,‘Henuz Issiz')

Page 54: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

NVL Fonksiyonu Kullanımı

SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SALFROM employees;

1

1 2

2

Page 55: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

NVL2 Fonksiyonu Kullanımı

SELECT last_name, salary, commission_pct, NVL2(commission_pct, 'SAL+COMM', 'SAL') incomeFROM employees WHERE department_id IN (50, 80);

1 2

21

Page 56: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Dördüncü Bölüm

Grup Fonksiyonlarının Kullanımı

Page 57: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Grup Fonksiyon Tipleri

• AVG • COUNT • MAX• MIN • STDDEV • SUM• VARIANCE

GrupFoksiyonları

Page 58: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Grup Fonksiyon (Syntax)

SELECT [column,] group_function(column), ...FROM table[WHERE condition][GROUP BY column][ORDER BY column];

Page 59: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Grup Fonksiyon (Syntax)

SELECT [column,] group_function(column), ...FROM table[WHERE condition][GROUP BY column][ORDER BY column];

Page 60: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

COUNT Fonksiyonu Kullanımı

COUNT(*) tablo üzerindeki satırların sayısını getirir:

COUNT(expr) null olmayan satır sayısını getirir:

SELECT COUNT(commission_pct)FROM employeesWHERE department_id = 80;

SELECT COUNT(*)FROM employeesWHERE department_id = 50;

1

2

Page 61: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

COUNT Fonksiyonu Kullanımı

Grup fonksiyonları kolondaki null değerleri yok sayar:

NVL fonksiyonu grup fonksiyonların null değerleri de saymalarını sağlar:

SELECT AVG(commission_pct)FROM employees;

SELECT AVG(NVL(commission_pct, 0))FROM employees;

1

2

Page 62: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

GROUP BY Syntax

SELECT column, group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][ORDER BY column];

Page 63: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

GROUP BY Kullanımı

SELECT department_id, AVG(salary)FROM employeesGROUP BY department_id ;

SELECT ile listelenen tüm kolonlar (grup fonksiyonu içinde olmayanlar) GROUP BY sonrasına eklenir.

Page 64: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

GROUP BY Kullanımı

GROUP BY yapılan kolon, SELECT listesinde olmak zorunda değildir.

SELECT AVG(salary)FROM employeesGROUP BY department_id ;

Page 65: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

HAVING ile Grupları Kısıtlama

SELECT column, group_functionFROM table[WHERE condition][GROUP BY group_by_expression][HAVING group_condition][ORDER BY column];

Page 66: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

HAVING Kullanımı

SELECT department_id, MAX(salary)FROM employeesGROUP BY department_idHAVING MAX(salary)>10000 ;

Page 67: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

HAVING Kullanımı (Devam)

SELECT job_id, SUM(salary) PAYROLLFROM employeesWHERE job_id NOT LIKE '%REP%'GROUP BY job_idHAVING SUM(salary) > 13000ORDER BY SUM(salary);

Page 68: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Beşinci Bölüm

Birden Fazla Tablodan Veri ÇekmeJOIN

Page 69: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

JOIN

EMPLOYEES DEPARTMENTS

Page 70: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

JOIN

EMPLOYEES DEPARTMENTS

Foreign key Primary key

… …

Page 71: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

ON İle JOIN

SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_idFROM employees e JOIN departments dON (e.department_id = d.department_id);

Page 72: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Self-Join Yapısı

WORKER tablosundaki MANAGER_ID ile MANAGER tablosundaki EMPLOYEE_ID aynıdır.

EMPLOYEES (WORKER) EMPLOYEES (MANAGER)

… …

Page 73: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Self-Join Yapısı (Devam)

SELECT e.last_name emp, m.last_name mgrFROM employees e JOIN employees mON (e.manager_id = m.employee_id);

Page 74: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Self-Join Yapısına Yeni Kısıtlar

SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_idFROM employees e JOIN departments dON (e.department_id = d.department_id)AND e.manager_id = 149 ;

Page 75: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Üç Tablo ile Join

SELECT employee_id, city, department_nameFROM employees e JOIN departments dON d.department_id = e.department_id JOIN locations lON d.location_id = l.location_id;

Page 76: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Outer Join

EMPLOYEESDEPARTMENTS

190 nolu departmanda çalışan bulunmuyor.

Page 77: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Left Outer Join

SELECT e.last_name, e.department_id, d.department_nameFROM employees e LEFT OUTER JOIN departments dON (e.department_id = d.department_id) ;

Page 78: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Right Outer Join

SELECT e.last_name, e.department_id, d.department_nameFROM employees e RIGHT OUTER JOIN departments dON (e.department_id = d.department_id) ;

Page 79: SQL Temelleri Bilgisayar  Mühendisleri Odası SQL Başlangıç Seviye Eğitimi

Teşekkürler !