830 likes | 1.17k Views
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.
E N D
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. • SELECTile 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 ManipulationLanguage)komutları ile verileri güncelleyebileceğiz.
İlişkisel Veritabanı Veritabanı Sunucusu Tabloismi: DEPARTMENTS Tabloismi: EMPLOYEES … … İlişkisel veritabanı, birbirleriyle ilişkili iki boyutlu tablolar kümesidir.
Tablolar Arası İlişki Tabloismi: DEPARTMENTS Tabloismi: EMPLOYEES … Primary key Foreign key Primary key • 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.
İlişkisel Veritabanı Terminolojisi 3 4 2 5 6 1
İlişkisel Veritabanı Özellikleri İlişkisel Veritabanı: • SQL (StructuredQueryLanguage)kullanılarak ulaşılabilir ve üzerinde değişiklik yapılabilir. • İlişkili tabloları içerir. • Operatör kümeleri kullanır.
SQL ile Veritabanı (RDBMS) Bağlantısı SQL cümlesi girilir. SQL cümlesi veritabanı sunucusuna yollanır. SELECT department_name FROM departments; sunucu
SQL Yapıları • SELECT • INSERT • UPDATE • DELETE • MERGE • CREATE • ALTER • DROP • RENAME • TRUNCATE • COMMENT • GRANT • REVOKE • COMMIT • ROLLBACK • SAVEPOINT Data manipulation language (DML) Data definition language (DDL) Data control language (DCL) Transaction control
Eğitimde Kullanılacak Tablolar EMPLOYEES JOB_GRADES DEPARTMENTS
Birinci Bölüm SQL SELECTYapısı ile Veri Çekmek
SQL SELECTYapısı Neler Yapabilir? Projection Selection Tablo 1 Tablo 1 Join Tablo2 Tablo 1
TemelSELECTYapısı SELECT *|{[DISTINCT] column|expression [alias],...} FROM table; • SELECTgörüntülenmek istenilen kolonları ifade eder. • FROMise bu kolonları içeren tabloyu ifade eder.
Tüm Kolonların Seçilmesi SELECT * FROM departments;
İstenilen Kolonların Seçilmesi SELECT department_id, location_id FROM departments;
Aritmetik Operatörler Aritmetik operatörler kullanılarak yeni veriler çekilebilir.
Aritmetik Operatör Kullanımı … SELECT last_name, salary, salary + 300 FROM employees;
Aritmetik Operatör Kullanımı (Devam) … … SELECT last_name, salary, 12*salary+100 FROM employees; 1 SELECT last_name, salary, 12*(salary+100) FROM employees; 2
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_pct FROM employees; … …
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.
Kolon Alias Kullanımı SELECT last_name AS name, commission_pct comm FROM employees; … SELECT last_name "Name" , salary*12 "Annual Salary" FROM employees; …
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;
Karakter Stringleri Kullanımı SELECT last_name ||' is a '||job_id AS "Employee Details" FROM employees; …
Aynı Satırlar – DISTINCT Kullanımı … SELECT department_id FROM employees; 1 SELECT DISTINCT department_id FROM employees; 2 …
İkinci Bölüm Verilerin Kısıtlanması Ve Sınırlanması
Seçilen Satırları Sınırlandırma • WHEREile dönen satırlar sınırlandırılır: SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [WHERE condition(s)];
WHEREKullanımı SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90 ;
WHEREKullanımı (Devam) • 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.. SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'Whalen' ;
Karşılaştırma Operatörleri Kullanımı SELECT last_name, salary FROM employees WHERE salary <= 3000 ;
BETWEENKullanımı BETWEENbelli aralıktaki satırları gösterir: SELECT last_name, salary FROM employees WHERE salary BETWEEN 2500 AND 3500 ; Lower limit Upper limit
IN Kullanımı SELECT employee_id, last_name, salary, manager_id FROM employees WHERE manager_id IN (100, 101, 201) ;
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_name FROM employees WHERE last_name LIKE '_o%' ;
NULL Kullanımı IS NULL operatörü ile çekilen sorgu: SELECT last_name, manager_id FROM employees WHERE manager_id IS NULL ;
ANDKullanımı Her iki kondisyon da doğru olmalı: SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >=10000 AND job_id LIKE '%MAN%' ;
ORKullanımı ORherhangi biri doğru olduğunda doğru: SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 OR job_id LIKE '%MAN%' ;
NOTKullanımı SELECT last_name, job_id FROM employees WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;
ORDER BYKullanımı … • ORDER BYile sıralama yapılır: • ASC: artarak sıralama, default • DESC: azalarak sıralama • SELECTcümlesinde ORDER BY en sonda yer alır: SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date ;
ORDER BYKullanımı (Devam) • Sorting in descending order: • Sorting by column alias: • Sorting by multiple columns: SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date DESC ; 1 SELECT employee_id, last_name, salary*12 annsal FROM employees ORDER BY annsal ; 2 SELECT last_name, department_id, salary FROM employees ORDER BY department_id, salary DESC; 3
Üçüncü Bölüm Tek-Satır Fonksiyonların Kullanımı function_name [(arg1, arg2,...)]
Tek-satır (single-row) Fonksiyonlar Karakter Tek-satır Fonksiyonlar Genel Sayı Dönüştürme Tarih
Karakter Fonksiyonları Karakter Fonksiyonları Karakter Değiştiren Fonksiyonlar Büyük-Küçük Fonksiyonlar LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD | RPAD TRIM REPLACE
Büyük-Küçük Fonksiyonları Kullanımı SELECT employee_id, last_name, department_id FROM employees WHERE last_name = 'higgins'; no rows selected SELECT employee_id, last_name, department_id FROM employees WHERE LOWER(last_name) = 'higgins';
Karakter Değitiştiren Fonksiyonların Kullanımı 1 SELECT employee_id, CONCAT(first_name, last_name) NAME, job_id, LENGTH (last_name), INSTR(last_name, 'a') "Contains 'a'?" FROM employees WHERE SUBSTR(job_id, 4) = 'REP'; 2 3 2 1 3
Tarih (Date) Fonksiyonları Kullanımı SYSDATE = '25-JUL-03':
TO_CHAR Fonksiyonunun Kullanımı TO_CHAR(date, 'format_model') Format model: • Tek tırnak arasına alınmalı • Büyük-küçük harf duyarlı • Tarih değerinden virgül ile ayrılmalı