sql temelleri bilgisayar mühendisleri odası sql başlangıç seviye eğitimi
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 PresentationTRANSCRIPT
![Page 1: SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/3.jpg)
İ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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/5.jpg)
İlişkisel Veritabanı Terminolojisi
1
23 4
6
5
![Page 6: SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/6.jpg)
İ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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/9.jpg)
Eğitimde Kullanılacak TablolarEMPLOYEES
DEPARTMENTS JOB_GRADES
![Page 10: SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/13.jpg)
Tüm Kolonların Seçilmesi
SELECT *FROM departments;
![Page 14: SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/14.jpg)
İ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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/24.jpg)
İ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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/40.jpg)
Üçü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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/43.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/44.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/45.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/46.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/47.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/48.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/49.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/50.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/51.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/52.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/53.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/54.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/55.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/56.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/57.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/58.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/59.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/60.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/61.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/62.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/63.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/64.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/65.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/66.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/67.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/68.jpg)
Beşinci Bölüm
Birden Fazla Tablodan Veri ÇekmeJOIN
![Page 69: SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/69.jpg)
JOIN
EMPLOYEES DEPARTMENTS
…
…
![Page 70: SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/70.jpg)
JOIN
EMPLOYEES DEPARTMENTS
Foreign key Primary key
… …
![Page 71: SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/71.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/72.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/73.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/74.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/75.jpg)
Üç 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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/76.jpg)
Outer Join
EMPLOYEESDEPARTMENTS
190 nolu departmanda çalışan bulunmuyor.
…
![Page 77: SQL Temelleri Bilgisayar Mühendisleri Odası SQL Başlangıç Seviye Eğitimi](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/77.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/78.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061610/568163a5550346895dd4ad38/html5/thumbnails/79.jpg)
Teşekkürler !