© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Slides:



Advertisements
Benzer bir sunumlar
T sql-diğer komutlar Metin Akbulut.
Advertisements

SQL de Değişken Tanımlama
SQL Komutlar 5 Sibel SOMYÜREK.
Veri Tabanı Yönetim Sistemleri
T-SQL-2.Konu Akış Kontrolleri.
VeriTabanı Uygulama. Tabloları yaratmak için MySQL komutları.
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.
SQL (STRUCTURED QUERY LANGUAGE)
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 de Değişken Tanımlama
VeriTabanı Uygulama.
SQL Sibel SOMYÜREK.
SQL Komutları (2) Uzm. Murat YAZICI.
FONKSİYONLAR İbrahim Onur Sığırcı.
RAISE RECORD/CURSOR TRIGGER
Bilgisayar Mühendisliği Bölümü
Bilgisayar Mühendisliği Bölümü
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ı.
Veri Tabanı Yönetimi Dersi 4. Laboratuvarı Arş. Gör. Pınar CİHAN.
Veri Tabanı Yönetim Sistemleri 2 Ders 5 PL/SQL'e Giriş, Prosedür ve Fonksiyonlar Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
İNTERNET PROGRAMLAMA -2. Veritabanı Nedir? Veritabanı, bilgilerin düzenli bir ş ekilde saklandı ğ ı yapılardır. De ğ i ş kenlerdeki bilgiler ve formlardan.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı Arş. Gör. Pınar CİHAN.
6. HAFTA Mart Mantıksal Operatörler & Ve | Veya ~ Değil / Bölme.
Saklı Prosedürler (Stored Procedures) kalibi Create Procedure Procedure_Adi [Parametre_Listesi] As Procedure_Bloğu Create Proc Procedure_Adi [Parametre_Listesi]
BİLGİSAYAR PROGRAMLAMA DERSİ
BÖLÜM 9 VERİ TABANI NESNELERİ.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© 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ı
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Transaction ve Örnekler
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
TETİKLEYİCİ ( Trigger)
TETİKLEYİCİLER ve HATA KONTROLÜ
14.DERS Örnekler, Sorular BUKET DOĞAN.
5. HAFTA Öğr. Gör. Yunus KÖKVER
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
SQL.
Öğ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
FONKSİYONLAR İbrahim Onur Sığırcı.
Veri Tabanı Yönetim Sistemleri 2 Ders 7 Paket ve Tetikleyiciler
Sorgu / dml / ddl komutları
RAISE RECORD/CURSOR TRIGGER
SQL (STRUCTURED QUERY LANGUAGE)
VERİTABANI YÖNETİM SİSTEMLERİ 3-Normalizasyon
Stored Procedure Öğr.Gör.Metin Akbulut.
SQL Server - Triggers.
SQL Server - Stored Procedures
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
SQL Server - Views.
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-4-DML
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
SQL VIEW.
Bellek içi raporlama sistemleri için denormalizasyon uygulaması
Sunum transkripti:

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi HAFTA 10 © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi İÇERİK Hatırlatma: Kullanıcı Tanımlı Fonksiyonlar Bu hafta örnekler ile kullanıcı tanımlı fonksiyonlar konusunu ve tetikleyici (trigger) konusunu inceleyeceğiz. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Öğrenci Numarası (otomatik artan olabilir), Adı Soyadı, Ders Adı, Vize, Final, Ortalama , Durum değerlerini içeren bir tablo oluşturunuz. İçerisine örnek değerler giriniz (en az 10 adet) Ortalama degeri Vizenin %40’ı ile finalin %60’ı alınarak hesaplanmaktadır. Durum alanı ise Ortalama ve Final değerleri kontrol edilerek hesaplanmaktadır. Ortalama>=50 ve Final>=50 ise GEÇTİNİZ yazılsın Final alanında -1 değeri varsa SINAVA GİRİLMEDİ yazılsın Bunların dışındaki durumda ise KALDINIZ yazılsın. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Geçen Haftaki Sunumdaki Hatalı Kısım UPDATE ogrenciler SET durum = CASE WHEN ort<50 OR final<50 THEN 'Kaldı' WHEN final=-1 THEN 'Sınava Girmedi' ELSE 'Geçti' END GO SELECT * FROM Ogrenciler © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi ALTER Table Personeller Add Maas money, NetMaas Money, Durum varchar(20) © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Örnek DECLARE deneme3 CURSOR FOR SELECT PersonelID,Unvan from Personeller DECLARE @maasi int, @unvani varchar(20) DECLARE @id int OPEN deneme3 FETCH NEXT FROM DENEME3 INTO @id, @unvani WHILE (@@FETCH_STATUS=0) BEGIN if @unvani='Sales Representative' update Personeller set Maas=Maas +1000 where PersonelID=@id else if @unvani= 'Sales Manager' update Personeller set Maas=maas+2000 where PersonelID=@id else update Personeller set Maas=maas+2500 where PersonelID=@id FETCH NEXT FROM DENEME3 INTO @id,@unvani END close deneme3 DEALLOCATE deneme3 SELECT PersonelID,Adi,SoyAdi,Unvan, Maas from Personeller © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Saklı yordam içinde kullanıcı tanımlı fonksiyon kullanılabilir mi? © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Fonksiyon Örneği CREATE FUNCTION NetMaasHesapla ( @BurutMaas numeric(10,2) ) RETURNS numeric(10,2) AS BEGIN DECLARE @NetMaas numeric(10,2) IF (@BurutMaas > 5000) SET @NetMaas = @BurutMaas*0.80 ELSE SET @NetMaas = @BurutMaas*0.85 RETURN @NetMaas END

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi CREATE PROCEDURE NetHesap1 as begin update Personeller set NetMaas=dbo.NetMaasHesapla(Maas) Select PersonelID, Adi, Unvan, Maas,NetMaas from Personeller end exec NetHesap1 © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi BREAK While döngüsü belirli bir koşul sağlandığı sürece bir ifadeyi veya bloğu tekrar eder. Aşağıdaki döngü Personel tablosundaki ortalama maaş 7000'den küçük olduğu sürece tüm personelin maaşını %10 arttırır. Ayrıca en yüksek maaş 10.000'den büyük olursa da Break ile döngüden çıkılır. WHILE (SELECT AVG(Maas) FROM Personeller) < 7000 BEGIN UPDATE Personeller SET Maas = Maas * 1.1 IF (SELECT MAX(Maas) FROM Personeller) > 10000 BREAK ELSE CONTINUE END SELECT MAX(Maas) AS "En Yüksek Maaş" FROM Personeller © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

TRIGGER SQL de bir tabloda herhangi bir işlem yapıldığı anda otomatik olarak aynı tabloda veya başka bir tabloda başka işlemlerinde yapılmasını istediğimiz zamanlarda, Trigger'lar yapılmasını istediğimiz bu işlemi bizim adımıza otomatik olarak gerçekleştirirler. create trigger Isim on TabloAdi for Insert, Update, Delete (Tek tek veya hepsi birden yazılabilir) as islemler

Trigger (Tetikleyici) Bir tabloda değişiklik olduğunda otomatik olarak başlatılan prosedürlere DML Trigger, veritabanı tanımlarında değişiklik olduğunda tetiklenenlere ise DDL Trigger denir. DML Trigger insert, delete veya update ifadelerin belirtilen tabloda oluşması gibi bir olaydan ve bir hareketten (ilgili prosedür) oluşur. Örneğin; personel tablosundan bir kaydın silinmesi olayı gerçekleştiğinde, eski_personel tablosuna personelin numarasını ve işten ayrılma tarihini belirtmek için o anki tarihi kaydeden bir prosedür yazılması ile bir DML Trigger oluşturulabilir.

CREATE TRIGGER Guncelle on [SatisDetaylari] for insert AS DECLARE @UrunNo int,@adet int SELECT @UrunNo=UrunID from Inserted SELECT @adet=Miktar from inserted UPDATE Urunler set HedefStokDuzeyi=HedefStokDuzeyi-@adet WHERE UrunID=@UrunNo

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi INSERT INTO SatisDetaylari (SatisID, UrunID, BirimFiyati, Miktar) VALUES (10324, 14,334,10) © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Trigger (Tetikleyici) Kullanımı Trigger'ın tetiklenmesini engellemek için Disable trigger <triggerAdı> on <tabloAdı> Sadece DML Trigger içinden kullanılabilen ve geçici olarak hafızada saklanan inserted ve deleted adında iki tablo vardır. INSERT işleminde yeni eklenen kayıt inserted tablosunda saklanır. DELETE işleminde silinen kayıt deleted tablosunda saklanır. UPDATE işleminde ise güncelleme öncesi eski değer deleted tablosunda, değişen yeni değer inserted tablosunda saklanır.

INSTEAD OF TRIGGER 'lar tetikleyici sorgunun YERİNE çalışırlar INSTEAD OF TRIGGER 'lar tetikleyici sorgunun YERİNE çalışırlar. Ayırdedici tek özellikleri ise BEGIN END satırları arasına yazılıyor olmasıdır..

-- ihtiyaç: Urunler tablosundan ürün silinmeye çalışıldığında bu ürünün Sonlandi kolonunu 1 yapsın (Yani Silmesin, Update etsin): CREATE TRIGGER SatisiDurdur ON Urunler INSTEAD OF delete -- Delete 'in çalışmasına izin vermeden trigger çalışsın AS BEGIN DECLARE @Urunno int SELECT @Urunno=UrunID FROM deleted UPDATE Urunler SET Sonlandi=1 WHERE UrunID=@Urunno END

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Personeller tablosunda kayıt güncellendiğinde işlem tarihi alanına o anki tarih bilgisi eklensin alter table Personeller add IslemTarihi Datetime © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi CREATE TRIGGER [dbo].[TrigDegisimTarihi] ON [dbo].[Personeller] AFTER UPDATE AS declare @Personel int SELECT @Personel = PersonelID FROM inserted UPDATE Personeller SET IslemTarihi = GETDATE() WHERE Personeller.PersonelID = @Personel --Değişken tanımlamadan da yapılabilir: FROM inserted WHERE Personeller.PersonelID = inserted.PersonelID © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi UPDATE Personeller SET Maas=Maas*1.2 WHERE PersonelID=13 SELECT PersonelID, Adi, SoyAdi,Maas, IslemTarihi FROM Personeller WHERE PersonelID>=12 © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi INSERT INTO [Personeller] ([SoyAdi] ,[Adi] ,[Unvan] ,[Maas]) VALUES ('Demir','Ahmet','Genel Müdür Yrd.',7500) GO © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Personeller tablosuna SicilNo alanı eklenecek ve bu alana 1000’den başlayarak birer birer artarak her kayıt için ekleme yapacak T-sql kodunu yazınız. Personeller tablosunda yapılacak unvan değişimlerinde(güncellemelerinde) Eskigörevler isimli bir tabloya personelin Id, isim ve eski görevi, görev değişim tarihi ve yeni görevi bilgilerini yazan bir trigger yazınız. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Örnek Alter table Personeller add sicil integer go DECLARE deneme3 CURSOR FOR SELECT PersonelID from Personeller DECLARE @id int Declare @sayac int Set @sayac=1000 OPEN deneme3 FETCH NEXT FROM DENEME3 INTO @id WHILE (@@FETCH_STATUS=0) BEGIN update Personeller set sicil=@sayac where PersonelID=@id Set @sayac=@sayac+1 END close deneme3 DEALLOCATE deneme3 SELECT PersonelID,Adi,SoyAdi,Unvan, sicil from Personeller © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Ödev Açıklaması Ödevler için Bir konu belirleniyor ve 6 aralık ilk kontrol tarihi teslim tarihi:13 Aralık 2016 Veritabanı tabloları, alanları, türleri, ilişkiler normalizasyon kurallarına göre tanımlanacak Ödevde Derste yapılan her konu ile ilgili en az bir örnek bulunmalı Ödevle ilgili bir rapor hazırlanmalıdır. İçerisinde soruların hangi görevi yerine getirdiği açıklanmalı altında ise sorgu yer almalılır. Sorgular (DDL create, alter, drop, DML komutları,Exist, some, any, like, inner join, MAX, AVG,COUNT, Having , TARİH fonksiyonları, IF, CASE,WHILE karmaşık sorgular) Saklı yordam, kursör kullanımı, kullanıcı tanımlı fonksiyon ve tetikleyici © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi