Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Bölüm 4: İleri SQL
2
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
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
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
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
6
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
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
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
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
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 ( A1, A2, …, Am) A1, A2, … Am sütunlarında beraber kullanılan değerlerin her bir satır için farklı olması gerektiğini belirtir.
11
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_birikimi integer, primary key (sube_isim), check (mevduat_birikimi >= 0))
12
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
Anahtar tanımlama - Örnek
create table musteri (musteri_isim char(20), musteri_sokak char(30), musteri_sehir char(30), primary key (musteri_isim )) create table sube (sube_isim char(15), sube_sehir char(30), mevduat_birikimi numeric(12,2), primary key (sube_isim))
14
Anahtar tanımlama - Örnek
create table hesap (hesap_no char(10), sube_isim char(15), mevduat_miktari integer, 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
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
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
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
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
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.
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.