14.DERS Örnekler, Sorular BUKET DOĞAN
Haftanın Hedefi SQL server da karmaşık sorgular ve T-SQL ile çalışma
Örnek CREATE PROC random_password5 (@len int = 18) as BEGIN DECLARE @password varchar(25) SET @password='' WHILE @len > 0 SET @password = @password + CHAR(ROUND(97 + (RAND() * (10)),0)) SET @len = @len - 1 END SELECT @password end exec random_password5 10
CREATE PROC random_password (@len int = 18) BEGIN DECLARE @password varchar(25), @bitmap char(6) SET @password='' SET @bitmap = 'uaeio' WHILE @len > 0 IF (@len%2) = 0 SET @password = @password + SUBSTRING(@bitmap,CONVERT(int,ROUND(1 + (RAND() * (5)),0)),1) ELSE --Appending a random alphabet SET @password = @password + CHAR(ROUND(97 + (RAND() * (10)),0) SET @len = @len - 1 END SELECT @password exec random_password 8
create proc buket3(@tablom varchar(30)) as begin declare @sql varchar(100) IF EXISTS( SELECT * FROM sys.sysobjects WHERE name = @tablom and xtype='u' ) PRINT @Tablom + ' var' ELSE BEGIN select @sql = 'create table ' + @tablom + '(id int, adi varchar(30))' exec (@sql) PRINT @tablom + ' şimdi oluşturuldu' end
Ürünler tablosunda BirimdekiMiktar alanında İçinde box kelimesi geçen kaç tane ürün bulunmaktadır (kategorisine adı ile birlikte) SELECT u.KategoriID,[KategoriAdi], count(*) FROM [Urunler] u INNER JOIN [Kategoriler] k ON k.[KategoriID]= u.[KategoriID] WHERE [BirimdekiMiktar] LIKE '%box%' group by u.KategoriID,[KategoriAdi]
Müşterilerin ID ve isim değerleri ile birlikte toplam satış değerlerinin gözükmesini sağlayan sorgu SELECT s.SatisID, s.MusteriId,m.MusteriAdi, SUM (BirimFiyati*Miktar) as Tutar FROM SatisDetaylari AS sd INNER JOIN Satislar as s ON sd.SatisID=s.SatisID INNER JOIN Musteriler AS m ON s.MusteriID=s.MusteriID GROUP BY s.SatisID ,s.MusteriID,m.MusteriAdi
Create proc [secimle_fiyat](@secim varchar(10)) as begin declare @kod nchar(40) if @secim='enbuyuk' set @kod='select max(BirimFiyati) from Urunler' else if @secim='enkucuk' set @kod='select min(BirimFiyati) from Urunler' else if @secim='ortalama' set @kod='select avg(BirimFiyati) from Urunler' exec sp_executesql @kod end
CREATE VIEW vw_Satislar AS SELECT SatisID, SUM (BirimFiyati*Miktar) as Tutar FROM SatisDetaylari GROUP BY SatisID
© 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 © 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 integergo 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
CREATE FUNCTION Kdvli( @fiyat money ) RETURNS money AS BEGIN DECLARE @Kdvlifiyat money IF (@fiyat > 100) SET @Kdvlifiyat = @fiyat*1.1 ELSE SET @Kdvlifiyat = @fiyat*1.05 RETURN @Kdvlifiyat END
select UrunID, UrunAdi, BirimFiyati, dbo.kdvli(BirimFiyati) from Urunler