Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-usewww.db-book.com Bölüm 4: İleri SQL.

Benzer bir sunumlar


... konulu sunumlar: "Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-usewww.db-book.com Bölüm 4: İleri SQL."— Sunum transkripti:

1 Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Bölüm 4: İleri SQL

2 ©Silberschatz, Korth and Sudarshan4.2Database System Concepts - 5 th Edition, June 15, 2005 Bölüm 4 Tarih ve Saat Fonksiyonları Dönüşüm Fonksiyonları Zorlayıcı İfadeler (devam) Tetikleyiciler (Triggers in SQL) Veri Kontrol Dili (DCL)

3 ©Silberschatz, Korth and Sudarshan4.3Database System Concepts - 5 th Edition, June 15, 2005 Tarih ve Saat Fonksiyonları Tarih türündeki veriler için kullanılır Eğer, tarih tüüründeki veriler karakter tipi olarak kullanılıyorsa bu fonksiyonlar kullanılamaz Bu tip veriler üzerinde işlem yaparken tekrar tarih türüne dönüştürülmesi gerekir  Dönüşüm Fonksiyonları kullanılmalıdır.

4 ©Silberschatz, Korth and Sudarshan4.4Database System Concepts - 5 th Edition, June 15, 2005 Güncel Tarih ve Saat bilgisini alma Kullanılan VTYS’ye bağlı olarak güncel tarih ve saat bilgisini almak için kullanılan fonksiyonlar vardır Bu fonksiyonun kullanımı sonucunda tarih ve saat bilgisi döner. ORACLE veritabanında kullanımı: CURRENT_TIMESTAMP fonksiyonu: Ör:  select CURRENT_TIMESTAMP from dual –17 Mar , ÖS –Bu fonkisiyon kullanıldığı zaman Türkiye’nin bulunduğu saat diliminden dolayı saat bilgisi 2 saat eksik olacaktr!

5 ©Silberschatz, Korth and Sudarshan4.5Database System Concepts - 5 th Edition, June 15, 2005 Güncel Tarih ve Saat bilgisi(devam) SYSTIMESTAMP, SYSDATE, CURRENT_DATE fonksiyonları: ORACLE’ın yüklü olduğu sistemin tarih-saat bilgisini alacağından saat bilgisi doğru olur. Ör:  SELECT SYSTIMESTAMP FROM DUAL –17 Mar , ÖS +02:00  SELECT SYSDATE FROM DUAL –17/03/2010  SELECT CURRENT_DATE FROM DUAL –17/03/2010

6 ©Silberschatz, Korth and Sudarshan4.6Database System Concepts - 5 th Edition, June 15, 2005 Güncel Tarih ve Saat bilgisi(devam) EXTRACT fonksiyonu: Tarih-saat bilgisi içeren bir sütundan istenilen bölümün (gün, ay, yıl, vb) alınması için kullanılır Kullanımı: EXTRACT (alınacak bilgi FROM tarih_saat bilgisi)  Alınacak_bilgiyi, yıl, ay, gün vb. Belirtir  Tarih_saat bilgisi: sorgulan tablo içerisindeki tarih-saat türündeki sütun veya kullanıcı tarafından girilen veya güncel tarih-saat bilgisi olabilir. Ör:  SELECT EXTRACT (YEAR FROM SYSDATE) FROM dual –2010  SELECT EXTRACT (HOUR FROM SYSDATE) FROM dual –18  Örnekler: Özseven Kısım de

7 ©Silberschatz, Korth and Sudarshan4.7Database System Concepts - 5 th Edition, June 15, 2005 Dönüşüm Fonksiyonları Veri tipini değiştirmek için kullanılır. Kullanılan VTYS’ye göre farklı fonksiyonlar ve fonksiyobların kullanım şekilleri vardır. ORACLE için kullanımı: CAST ( değer AS veri_tipi) FROM dual  Mevcut verinin istenilen veri tipine dönüştürülmesini sağlar.  Veri tipi dönüşümleri arasında sınırlamalar vardır. TO_CHAR (değer, format)  Değer parametresi ile verilen veriyi belirtilen formatta karakter tüürüne çevirir. TO_NUMBER (değer, format)  Karakter tüüründeki veriyi sayısal türe dönüştürmek için kullanılır. TO_DATE (değer, format)  Karakter tüüründeki veriyi tarih türüne dönüştürmek için kullanılır. Örnekler: Özseven, Kısım de

8 ©Silberschatz, Korth and Sudarshan4.8Database System Concepts - 5 th Edition, June 15, 2005 Zorlayıcı İfadeler (Integrity Constraints) -devam Veri tabanında sağlanması gereken koşulları yerine getirmek için kullanılan ifadelerdir. Ör: Mevduat hesabında en az $10, bulunmalıdır. Bir banka çalışanının saatlik ücreti en az $4.00 olmalıdır. Her müşterinin sisteme kayıtlı en az bir telefon numarası bulunmalıdır. ( telefon numarası null olamaz)

9 ©Silberschatz, Korth and Sudarshan4.9Database System Concepts - 5 th Edition, June 15, 2005 Tek bir tablo üzerinde sınırlamalar not null: ilgili sütunda null değeri olamayacağını gösterir. primary key: birincil anahtarı tanımlar. unique: ilgili sütun veya sütunlar için her bir satırda farklı değerler olması gerektiği koşulunu koyar. check (P ): bir tabloda sağlanacak genel bir koşulu ifade eder. P burada sağlanacak koşuldur.

10 ©Silberschatz, Korth and Sudarshan4.10Database System Concepts - 5 th Edition, June 15, 2005 Not Null Sube_isim sütunun null değeri alamayacağını tanımla. sube_isim char(15) not null birincil anahtarlar null olamaz Yabancıl anahtarlar null olabilir unique ( A 1, A 2, …, A m ) A 1, A 2, … A m sütunlarında beraber kullanılan değerlerin her bir satır için farklı olması gerektiğini belirtir.

11 ©Silberschatz, Korth and Sudarshan4.11Database System Concepts - 5 th Edition, June 15, 2005 check ifadesi check (P ) P, sağlanacak koşul. Örnek: sube_isim sütununu sube tablosu için birincil anahtar olarak tanımla ve her şubedeki mevduat birikiminin sıfırın üzerinde olmasını sağla. create table sube (sube_isim char(15), sube_sehir char(30), mevduat_birikimiinteger, primary key (sube_isim), check (mevduat_birikimi >= 0))

12 ©Silberschatz, Korth and Sudarshan4.12Database System Concepts - 5 th Edition, June 15, 2005 Anahtar tanımlama Birincil ve yabancıl anahtarlar SQL create table ifadesinin içerisinde yer alabilirler primary key ifadesi birincil anahtarı oluşturan sütun/sütunları içerir. unique key ifadesi aday anahtarı oluşturan sütun/sütunları içerir. foreign key ifadesi yabancıl anahtarı oluşturan sütun/sütunları içerir.  Bir tabloda tanımlanmış yabancıl anahtar başvurulan tablodaki birincil anahtarı oluşturan sütunlardan oluşur.

13 ©Silberschatz, Korth and Sudarshan4.13Database System Concepts - 5 th Edition, June 15, 2005 Anahtar tanımlama - Örnek create table musteri (musteri_isimchar(20), musteri_sokakchar(30), musteri_sehirchar(30), primary key (musteri_isim )) create table sube (sube_isimchar(15), sube_sehirchar(30), mevduat_birikiminumeric(12,2), primary key (sube_isim))

14 ©Silberschatz, Korth and Sudarshan4.14Database System Concepts - 5 th Edition, June 15, 2005 Anahtar tanımlama - Örnek create table hesap (hesap_no char(10), sube_isim char(15), mevduat_miktariinteger, primary key (hesap_no), foreign key (sube_isim) references sube) create table depositor (musteri_isim char(20), hesap_no char(10), primary key (musteri_isim, hesap_no), foreign key (hesap_no) references hesap, foreign key (musteri_isim) references musteri) Not: sube tablosu musteri ile hesap varllıkları arasındaki ilişkiyi temsil eder.

15 ©Silberschatz, Korth and Sudarshan4.15Database System Concepts - 5 th Edition, June 15, 2005 Tetikleyiciler (Triggers) Veritabanında yapılan bir değişiklik tarafından otomatik olarak çalıştırılan ifadelere tetikleyici (trigger) denir. Bir tetikleyici tasarlayabilmek için aşağıdakiler tanımlamak gereklidir: Tetikleyicinin çalıştırılması için gerekli koşul. Tetikleyici çalıştırıldıktan sonra yapılamsı gerekenler. Bu anlamada tetikleyiiciler programla dillerindeki if-then ifadesi gibi düşünülebilir.

16 ©Silberschatz, Korth and Sudarshan4.16Database System Concepts - 5 th Edition, June 15, 2005 Tetikleyiciler (örnek) Bu örnekte, bir hesaptan mevduat miktarından fazla para çekildiği zaman ortaya çıkan sıfırdan küçük mevduat miktarı yerine bankanın bu tip mevuduatlara karşın aşağıdakileri yaptığını varsayalım. Mevduat miktarı sıfıra eşitlenir Sıfırın altına düşen miktar için bir borç hesabı açılır Borç hesabı için kullanılacak borc hesap numarası için para çekilen hesabın hesap nıumarası kullanılır. Bu örnekte tetikleyicinin çalıştırılması için gereken koşul: Hesap tablosunda yapılan bir tabloda veri değiştirme işlemi (update) sonucunda mevduat_miktari sütununda sıfırdan küçük bir değer oluşması.

17 ©Silberschatz, Korth and Sudarshan4.17Database System Concepts - 5 th Edition, June 15, 2005 Tetikleyiciler (SQL 1999 örneği) create trigger sıfırdan_kucuk_tetikleyici after update on hesap referencing new row as yenisatır for each row when yenisatır.mevduat_miktari < 0 begin atomic insert into borc_sahibi (select musteri_isim, hesap_no from mevduat_sahibi where yenisatır.hesap_no = mevduat_sahibi.hesap_no); insert into borc values (yenisatır. hesap_no yenisatır.sube_isim, – yenisatır. mevduat_miktari); update hesap set mevduat_miktari = 0 where hesap. hesap_no = yenisatır. hesap_no end

18 ©Silberschatz, Korth and Sudarshan4.18Database System Concepts - 5 th Edition, June 15, 2005 Tetikleyiciler (devam) Tetikleyici insert, delete veya update ifadeleri ile birlikte kullanılabilir. Update tetikleyicileri tablodaki tek bir sütuna dayalı olabilir. Ör:  create trigger overdraft-trigger after update of balance on account Sütunların update öncesi ve sonrası oluşan değerlerine işaret edilebilir. referencing old row as : veri değiştirme (update) ve veri silme (delete) ifadeleri ile birlikte kullanılabilir. referencing new row as : veri değiştirme (update) ve yeni veri girme (insert) ifadeleri ile birlikte kullanılabilir.

19 ©Silberschatz, Korth and Sudarshan4.19Database System Concepts - 5 th Edition, June 15, 2005 Tetikleyiciler (devam) Update ifadesi tablodaki birden fazla satırı etkileyebileceğinden: for each row ifadesi: değerleri değişem tüm satırları içerir. referencing new row as ifadesi: veri değiştirme işlemi sonrasında oluşan değerleri tutmak için kullanılan bir geçiş değişkeni yaratır referencing old row as ifadesi: veri değiştirme işlemi öncesindeki değerleri tutmak için kullanılan bir geçiş değişkeni yaratır when ifadesi: tetikleyicinin çalıştırılması için gerekli koşulu tanımlar. ( sistem geriye kalan komutları sadece değişiklikten etkilenen satırlar için çalıştırır) begin atomic …. end ifadesi: birden fazla SQL ifadesini bileşik bir ifade olarak çalıştırır.


"Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-usewww.db-book.com Bölüm 4: İleri SQL." indir ppt

Benzer bir sunumlar


Google Reklamları