«BM364» Veritabanı Uygulamaları



Benzer belgeler
VERİ TABANI ve YÖNETİMİ

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

KULLANICI TANIMLI FONKSİYONLAR (Devam)

KULLANICI TANIMLI FONKSİYONLAR (Devam)

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

Sayfa 1 / 8. Tabo yapıları

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

KULLANICI TANIMLI FONKSİYONLAR

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

STORED PROCEDURE LER (Saklı Yordamlar)

Güz Yarıyılı MT 487 Bilgisayarda Veri Yapıları Final Çalışma Soruları

VERİ TABANI YÖNETİM SİSTEMLERİ II. 4. SQL PROGRAMLAMADA PROCEDURE ve FUNCTION

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir, aksi durumda hata olur.

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

2- Total de 8000 byte yer tutup 4000 karakter olarak kullanabildiğimiz tip aşağıdakilerden hangisidir?

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

EXISTS VE NOT EXISTS fonksiyonları

PostgreSQL ve PL/pgSQL

//bu ifadelerin ikisi de gerçekleşiyorsa havale işlemi gerçekleşmiştir fakat 1 tanesini çalışmazsa havale olmamıştır.

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

SQL Stored Procedure

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

PostgreSQL ve PL/pgSQL

SQL TRIGGERS (Tetikleyiciler)

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

SQL Komutları (2) Uzm. Murat YAZICI

Oracle da kullanılan veri tipleri:

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR

Cursor. Bir veri tipi olarak da ele alınabilen Transact-SQL Sunucu Cursor şu aşamalardan geçirilerek kullanılır.

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Bir çeşit prosedür. Ancak bu prosedür kendiliğinden çalışır. Çalışması için tabloya veri eklemek, veri silmek, veri değiştirmek yeterlidir.

Mysql Veritabanı Komutları

T-SQL NEDİR? Microsoft T-SQL Transact-SQL

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

«BM364» Veritabanı Uygulamaları

MT487_2005guz_final_cevaplar (cevaplar vurgulu ve koyu yazılmıştır)

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Eki Öğr. Gör. Murat KEÇECĠOĞLU

1. Araçların tüm bilgilerini ve bağlı oldukları kiralama noktasının adres ve telefonunu içeren tam listesi:

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BİLGİSAYAR SİSTEMLERİ LABORATUVARI- DENEY NO:3 CLIENT SERVER ORTAMINDA VERİTABANI KULLANIMI

Gruplama (aggregate) fonksiyonları bir dizi değer üzerinde hesaplama yaparlar ve bir sonuç

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

MSSQL. 4. Hafta Uygulama - 1 BPR255 Veritabanı CREATE DATABASE OKUL GO USE OKUL GO

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

Tetikleyiciler (TRIGGER) Tetikleyiciler ne zaman kullanılırlar. Ardı Sıra Tetikleyiciler (After Triggers) Örnek

Veri Tabanı ve Yönetimi

Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler

«BM364» Veritabanı Uygulamaları

SQL Kod ile Tablo Oluşturma

Nesneler üzerinde değişiklik yapmak için kullanılır. Veri tabanındaki nesnelerin oluşturulabilmesi için CREATE komutu kullanılır.

Veritabanına Uygulanması

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

TEMEL SQL SORGU ÖRNEKLERİ. Yukarıdaki sorguyu yazıp çalıştırdığımızda db_market adında bir veritabanı oluşturulur.

«BM364» Veritabanı Uygulamaları

Microsoft SQL Server Sorgulama

C#.Net & Linq (Language Integrated Query)

SQL e Giriş. Uzm. Murat YAZICI

VERİ TABANI YÖNETİM SİSTEMLERİ II. 3. SQL PROGRAMLAMA BLOKLARI ve AKIŞ DENETİMİ

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

VERİ TABANI YÖNETİM SİSTEMİ 2

Veri Tabanı-I 9.Hafta

VERİTABANI ve YÖNETİMİ

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

Veri Tabanı Programlamaya Giriş

1 - Adi A Harfi İle Biten Kişilerin Listesi İçin Hangisi Kullanılmalıdır? Select * From Kisiler Where Adi End A Select * From Kisiler Where Adi Like

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

SORGULAR. Öğr.Gör.Volkan Altıntaş

VERİ TABANI YÖNETİM SİSTEMLERİ II. 5. SQL PROGRAMLAMADA CURSOR (İMLEÇ) ve TRIGGERS (TETİKLEMELER)

SQL'e Giriş 2. CREATE TABLE tabloadı (kolon isimleri ve veri türleri) (BOLUM_NO NUMBER, BOLUM_ADI CHAR(10));

Üst Düzey Programlama

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

İNTERNET PROGRAMCILIĞI DERSİ

YAPISAL SORGULAMA DİLİ (SQL)

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

EBE-368 Veri Tabanı Yönetim Sistemleri İlişkisel Model (The Relational Model)

MODÜL. Verileri Sorgulamak" Yaşar GÖZÜDELİ.

Bölüm 4: DDL Veri Tanımlama Dili

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

1.adım : Sql serverda Stored procedure oluşturmamız gerekiyor. Şu adımları izliyoruz.

İnternet Programcılığı Dersi 2.Dönem Ders Notu

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

Veritabanı Tasarımı. Alt Sorgu Temelleri

DML işlemleri. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı May Öğr. Gör. Murat KEÇECĠOĞLU

«BM364» Veritabanı Uygulamaları

ACCESS PLATFORMUNDA SQL

AOSB 2017 EĞİTİM PROGRAMI

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

SORGULAR VE ÇEŞİTLERİ II

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) BİLİŞİM TEKNOLOJİLERİ VERİ BÜTÜNLÜĞÜ

«BM364» Veritabanı Uygulamaları-2

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) BİLİŞİM TEKNOLOJİLERİ T-SQL

SQL sorguları çalıştırıldığında veriler tablo üzerinden iki yöntemle alınır.

Transkript:

HAFTA 6 T-SQL ile Programlar Yazmak" Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli «BM364» Veritabanı Uygulamaları

Konu Akışı Programlama dili olarak T-SQL Fonksiyonlar Programlamak Prosedürler Programlamak 2

Programlama Dili Olarak T-SQL Değişkenler Değişkenler ve Sorgular İç İçe Döngü ve Karar Yapıları Hata Fırlatma ve Hata Yakalama Cursor ve Tablo Tipi Değişkenler 3

Değişkenler Programlama Dillerindeki Değişkenler DECLARE @degisken_adi veritipi[(boyut)] DECLARE @enpahaliurun VARCHAR(200); DECLARE @enpahaliurun VARCHAR(200) = ABC ; DECLARE @enpahaliurun VARCHAR(80), @urunkod INT, @enyuksekfiyat MONEY; Değer Atamak: SET veya SELECT SET @degiskenadi = deger, @degisken2=deger2 4

Değişkenler ve Sorgular SELECT @degiskenadi=degerifadesi,sutun_isimleri Normal SELECT ifadesinin devamı... DECLARE @enyuksekfiyat MONEY; SELECT @enyuksekfiyat=max(listefiyat) FROM tblurun; SELECT @enyuksekfiyat; DECLARE @enyuksekfiyat MONEY; SELECT @enyuksekfiyat= 23799.0328; İşaret Karşılığı += Kendisi ile Toplayarak Atamak -= Kendisinden çıkartıp atamak *= Kendisi ile çarpıp atamak /= Kendisini bölüp atamak %= Kendisinin modunu alıp atamak DECLARE @sayac INT=0; SET @sayac +=7; SELECT @sayac as arti7; SET @sayac -=2; SELECT @sayac as eksi2; SET @sayac *=10; SELECT @sayac as carpi10; SET @sayac /=5; SELECT @sayac as bolu5; SET @sayac %=8; SELECT @sayac as mod8; 5

Değişkenler ve Sorgular-2 ~ Değil ^ Bit seviye XOR & Bit seviye AND DECLARE @dogrumu BIT SET @dogrumu =1 SELECT ~@dogrumu Bit seviye OR 6

Batch Kavramı : Batch sonu USE dukkan -- Bir T-SQL sorgu yığını bitti ve yenisi başladı. (hata yok) DECLARE @degisken VARCHAR(50) SELECT @degisken = 'Merhaba Dünya.' PRINT @degisken -- (Hata yapıldı! Çünkü değişken bir önceki yığında tanımlanmıştı. Artık geçersiz) --açıklama buraya yazılamamalıdır!!! sp_who --Yeni yığın başladı ve hemen SP çağrıldı. (hata yok) SELECT @@VERSION --Ardından başka bir sorgu..(hata yok) sp_who --(hata var!) doğrusu, EXEC sp_who olacaktı. 7

Tablo Tipi Değişken 8

Karar Yapıları IF WHILE CE(X) TRY-CATCH DECLARE @enyuksekfiyat Money SELECT @enyuksekfiyat=max(listefiyat) FROM tblurun if (@enyuksekfiyat>20000) BEGIN --20.0000'den pahalı ürün varsa print 'Bu ürünlerden bazıları çok pahalı' END else if(@enyuksekfiyat>2000) BEGIN --2.000-20.000 arası ise: print 'Bu ürünler çok da pahalı değil' END else BEGIN END -- 200'dan da az ise: print 'Bu ürünler ucuz ürün kategorisinde' IF(şartlar1) BEGIN kodlar... END ELSE IF(şartlar2) BEGIN... END ELSE BEGIN... END DECLARE @sayac INT SELECT @sayac = 1 WHILE (@sayac < 15) BEGIN SELECT @sayac = @sayac + 1 IF (@sayac=11) CONTINUE PRINT 'sayac=' PRINT @sayac END 9

Konu Akışı Programlama dili olarak T-SQL Prosedürler Programlamak Fonksiyonlar Programlamak 10

Stored Procedure ler Programlamak En Basit Stored Procedure Dışarıdan Parametreler Dışarıya Parametreler SP Ayarlarını Yapmak 11

SP Oluşturmak-Değiştirmek CREATE PROC[EDURE] prosedur_adi [WITH seçenekler] CREATE PROC SP$bugunkiSiparisler SELECT K.isim + ' ' + K.Soyad, K.email, S.* FROM tblsiparis S JOIN tblkullanici K ON K.kullaniciKod=S.KullaniciKod WHERE siparistarih < GETDATE()-1 AND siparistarih > GETDATE()+1 EXEC SP$bugunkiSiparisler ALTER PROC[EDURE] prosedur_adi [WITH seçenekler] T-SQL ifadeleri... ALTER PROC SP$GunlukSatis WITH ENCRYPTION SET NOCOUNT ON SELECT COUNT(*) FROM tblsiparisdetay SD JOIN tblsiparis S ON SD.faturaKOD = S.faturaKOD WHERE S.siparisTarih > GETDATE()-1 AND S.siparisTarih < GETDATE()+ 1 SET NOCOUNT OFF 12

Parametrik SP ler INPUT RETURN CREATE PROC SP$UrunListele ( @marka VARCHAR(50) = NULL ) IF (@marka IS NULL) RETURN. Prosedür veya Fonksiyondan çıkmak için Tek başına return de denilebilir. Devam eden yerler işletilmeden çıkılır Parametre geçerliliğini denetlerken kullanılır Bir durum kodu döndürmek için Sadece ve sadece int tipten bir tek değer döndürebilir. Genellikle kaç kaydın etkilendiğini döndürmede kullanılır CREATE PROC <proc_ismi>( @girdiparametre1 tipi [, @girdiparametre2] ) <SECENEKLER> CREATE PROC SP$sepetim(. Sorgu. {sabit değeri parametre @kullanicikod ile değiştir} INT ) SET NOCOUNT ON SELECT S.UrunKod,U.UrunAd,S.Adet FROM tblsepet S INNER JOIN tblurun U ON U.UrunKod=S.UrunKod WHERE S.KullaniciKod=@KullaniciKod SET NOCOUNT OFF Sp$sepetim @kullanicikod=2 EXEC sp$sepetin 2 13

SP lerde Parametrelerle Çalışmak CREATE PROC Merhaba( @DogumTarih DateTime, ) @AdSoyad Varchar(50) = Sarı Çizmeli Mehmet Ağa, @Mesaj VARCHAR(50) = Merhaba OUTPUT Input parameter, Default Değer SELECT @Mesaj = CT(GETDATE()-@DogumTarih var bu parametre VARCHAR) isteğe + bağlı Yaşındasınız RETURN GETDATE()-@DogumTarih --Nasıl Çalıştırılır?EXEC veya dan sonra SP DECLARE @msg VARCHAR(50),@Yas INT EXEC @Yas=Merhaba, @DogumTarih= 01.01.1974, @AdSoyad= Can CERRAH, @mesaj=@msg OUTPUT --Sonuçları Görmek için: SELECT @msg,@yas Input Parameter Bir tek Integer değer döndürebilir.

M.S. ile OUTPUT parametreleri Test Etmek Örnek SP(Pratikte böyle bir SP kullanılmaz!) CREATE PROC ortalayici( @sayi1 smallint, @sayi2 smallint, @sayi3 smallint, @ortalama decimal OUTPUT) SELECT @ortalama = (@sayi1 + @sayi2 + @sayi3) / 3 Önce Değişken Tanımlanır: DECLARE @sonuc smallint Sonra SP Çağrılır EXEC ortalayici 1,2,12,@sonuc OUTPUT Veya EXEC ortalayici @sayi1=1, @sayi2=2, @sayi3=12, @ortalama=@sonuc Sonra değişkenler SELECT edilir SELECT 'ORTALAMA',@sonuc

Konu Akışı Programlama dili olarak T-SQL Prosedürler Programlamak Fonksiyonlar Programlamak 16

Fonksiyonlar Programlamak Skaler Fonksiyonlar Çoklu İfade ile Tablo Döndüren Fonksiyonlar Satırdan Tablo Döndüren Fonksiyonlar 17

Skaler Fonksiyonlar Kodlamak CREATE FUNCTION dbo.sepetteki_urun_sayisi( @kullanicikod INT = NULL ) SELECT kullaniciad, isim, soyad RETURNS int FROM tblkullanici WITH ENCRYPTION WHERE dbo.sepetteki_urun_sayisi(kullanicikod) > 5 BEGIN DECLARE @urunsayisi INT SELECT @urunsayisi=sum(adet) FROM tblsepet WHERE kullanicikod=@kullanicikod RETURN @urunsayisi END CREATE FUNCTION fn$siparistoplamibul( @faturakod INT ) RETURNS MONEY BEGIN DECLARE @Toplam MONEY SELECT @Toplam= SUM(fiyat*adet) FROM tblsiparisdetay WHERE FaturaKod=@faturaKod RETURN @Toplam END SELECT *, dbo.fn$siparistoplamibul(faturakod) as Toplam FROM tblsiparis 18

Satırdan Tablo Döndüren Fonksiyonlar CREATE FUNCTION FN_AlanlarinKodu(@urunKod INT) RETURNS TABLE RETURN SELECT kullanicikod FROM tblsiparisdetay SD INNER JOIN tblsiparis S ON S.faturaKod=SD.FaturaKod WHERE urunkod=@urunkod CREATE FUNCTION FN_BunuAlanBunlariAldi(@urunKod INT) RETURNS TABLE SELECT * RETURN FROM FN_BunuAlanBunlariAldi(2627) SELECT U.urunKod,U.urunAd FROM tblurun U JOIN tblsiparisdetay SD ON SD.urunKod=U.UrunKod JOIN tblsiparis S ON S.faturaKod=SD.FaturaKod JOIN FN_AlanlarinKodu(@urunKod) FNA ON FNA.KullaniciKod=S.kullaniciKod 19

Çoklu İfade ile Sonuç Döndüren Fonksiyonlar CREATE FUNCTION FN_SEVDIGIM_URUNLER(@KullaniciKod INT) RETURNS @FN_SEPETIM TABLE( urunkod INT,urunAd VARCHAR(250), Adet INT ) BEGIN INSERT @FN_SEPETIM SELECT SD.UrunKod,U.UrunAd,SD.Adet FROM tblsiparisdetay SD INNER JOIN tblurun U ON U.UrunKod=SD.UrunKod INNER JOIN tblsiparis S ON S.FaturaKod=SD.FaturaKod WHERE S.KullaniciKod=@KullaniciKod INSERT @FN_SEPETIM SELECT S.UrunKod,U.UrunAd,S.Adet FROM tblsepet S INNER JOIN tblurun U ON U.UrunKod=S.UrunKod WHERE S.KullaniciKod=@KullaniciKod RETURN END SELECT * FROM FN_SEVDIGIM_URUNLER(2) 20

Ödev Dukkan veritabanındaki(tblurun,tblmarka,tbldoviz tabloları) için Kayıt ekleme, silme ve update etme prosedürlerinin parametre imzalarını oluşturun tblurun tablosu üstünde ürün adı ve ürün marka kodundan arama yapacak bir stored Procedure nasıl kodlarsınız? Ürünleri sepete ekleyecek bir stored procedure kodlayınız. 21

Sonuç Verilere erişim programlanabilir! Prosedürler doğrudan pipeline a çıktı verir. Fonksiyonlar context içerisinde çalışır ve sorgularda çalışabilir. 22