Bölüm 4: İleri SQL.

Slides:



Advertisements
Benzer bir sunumlar
Veri Tabanı Tasarlama İlk kuralımız, olabildiğince bilgileri parçalamaktır.
Advertisements

4 SQL- Yapısal Sorgulama Dili
Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
SQL (Structured Query Language)
SQL FONKSİYONLARI.
VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş
SQL KOMUTLARI.
VERİ TABANI YÖNETİMİ Ders 10: Oracle Nesneleri
SQL de Değişken Tanımlama
SQL Komutlar 5 Sibel SOMYÜREK.
VERİ TABANI ve YÖNETİMİ
Veri Tabanı Yönetim Sistemleri
Tek Tablo İçinde Sorgulamalar
Fonksiyonlar Hafta 4.
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
VERİ TABANI ve YÖNETİMİ
Transaction.
Veri Tabanı Yönetim Sistemleri
BÖLÜM 6 SQL SERVER KOMUTLARI.
Tetikleyici. Nedir? Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır.
4 Veri Bütünlüğü ve Constraint’ler
Veri Bütünlüğü Sibel SOMYÜREK.
Veritabanı Yönetim Sistemleri-I
11 ekim 2011 VTYS –II Dersi. Kalıp İfadelerle Sorgu (Pattern) Eğer bir sözel verinin sadece belli kriterlere uyanlarını seçeceksek sütun_adı LIKE kalıp.
MYSQL 4. HAFTA. mySQL veri türleri INTTamsayı: 'den kadar değişen diziye "signed" (işaretli), 0'dan 'e kadar değişenine.
VIEW (BAKIŞ) OLUŞTURMA
ÖRNEKLER. musteri Id adi soyadi mus_satis Id barkod adet Urunlar barkod urun_adi kodu fiyati Stok_hareket tarih barkod gelen giden.
SQL Dili ve MySQL Komutları
SQL’e Giriş ve SELECT Komutu
SQL de Değişken Tanımlama
Veritabanı Kavramları
SQL Sibel SOMYÜREK.
SQL Komutları (2) Uzm. Murat YAZICI.
RAISE RECORD/CURSOR TRIGGER
Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetim Sistemleri 2 Ders 5 PL/SQL'e Giriş
SQL’ e Giriş Uzm. Murat YAZICI.
Bilgisayar Mühendisliği Bölümü
Bölüm 3: SQL.
Bölüm 6: Varlık-İlişki Modeli (Entity-Relationship Model)
Bölüm 8: SQL’de Yetkilendirmeler (Veri Kontrol Dili – DCL)
Bölüm 1 Giriş.
Veritabanı Kavramları
ADRESİNDEN ÖRNEK VERİ TABANLARINI İNDİRİNİZ
Yeni Veritabanı Oluşturma
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı Arş. Gör. Pınar CİHAN.
S ORGU / DML / DDL KOMUTLARı İbrahim Onur Sığırcı.
Yapısal Sorgulama Dili SQL VTYS Giriş Hafta 5 Ders Notu.
Yapısal Sorgulama Dili SQL Hafta 7. TEKRARLI SATIRLARI ÖNLEMEK  DISTINCT komutu ile sorgu sonucunda birden fazla kayıt aynı verileri içeriyorsa tekrarlı.
Altıncı hafta. Müfredat programı Ödev teslim edenler Mantıksal tasarım ödevini teslim edenler: Belediye Projesi Valilik Projesi Mekan Projesi Konaklama.
Veri Tabanı Yönetim Sistemleri 2 Ders 7 Paket ve Tetikleyiciler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü.
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı Arş. Gör. Pınar CİHAN.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı
VIEW lerle çalışmak 11.BÖLÜM.
TETİKLEYİCİ ( Trigger)
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
DML ile veri ekleme, silme ve değiştirme
Sorgu / dml / ddl komutları
RAISE RECORD/CURSOR TRIGGER
SQL (STRUCTURED QUERY LANGUAGE)
SQL Server - Triggers.
SQL Server - Stored Procedures
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
Transaction.
Sunum transkripti:

Bölüm 4: İleri SQL

Bölüm 4 Tarih ve Saat Fonksiyonları Dönüşüm Fonksiyonları Zorlayıcı İfadeler (devam) Tetikleyiciler (Triggers in SQL) Veri Kontrol Dili (DCL)

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.

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-10 09.38.45,421000 ÖS Bu fonkisiyon kullanıldığı zaman Türkiye’nin bulunduğu saat diliminden dolayı saat bilgisi 2 saat eksik olacaktr!

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-10 09.38.45,421000 ÖS +02:00 SELECT SYSDATE FROM DUAL 17/03/2010 SELECT CURRENT_DATE FROM DUAL

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 7.2.3 de

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 7.2.4.2 de

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,000.00 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)

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.

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.

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))

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.

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))

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.

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.

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ı.

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

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.

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.