Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

1. SELECT CONVERT(CHAR(8), GETDATE(), 112) exec sp_changedbowner 'BUKET-PC\BUKET' 2.

Benzer bir sunumlar


... konulu sunumlar: "1. SELECT CONVERT(CHAR(8), GETDATE(), 112) exec sp_changedbowner 'BUKET-PC\BUKET' 2."— Sunum transkripti:

1 1

2 SELECT CONVERT(CHAR(8), GETDATE(), 112) exec sp_changedbowner 'BUKET-PC\BUKET' 2

3 DATETIME = GETDATE() PRINT 'LONGDATE') PRINT 'LONGDATEANDTIME') PRINT 'SHORTDATE') PRINT 'SHORTDATEANDTIME') PRINT 'UNIXTIMESTAMP') PRINT 'YYYYMMDD') PRINT 'YYYY-MM-DD') PRINT 'YYMMDD') PRINT 'YY-MM-DD') PRINT 'MMDDYY') PRINT 'MM-DD-YY') PRINT 'MM/DD/YY') PRINT 'MM/DD/YYYY') PRINT 'DDMMYY') PRINT 'DD-MM-YY') PRINT 'DD/MM/YY') PRINT 'DD/MM/YYYY') PRINT 'HH:MM:SS 24') PRINT 'HH:MM 24') PRINT 'HH:MM:SS 12') PRINT 'HH:MM 12') PRINT 'goofy') 3

4 USE northwind SELECT Customers.CustomerId,Contactname,COUNT(*) from Customers INNER JOIN orders ON Customers.CustomerID=Orders.CustomerID GROUP BY Customers.CustomerId,Contactname 4

5 T-SQL Değişken tanımlama, döngü kurma, koşul tanımlamayı sağlayan basit bir programlama ortamıdır. Değişken tanımlamak için: veritipi(boyut) VARCHAR(100) 5

6 int print 'deger ' int print 'deger = '+ 6

7 T-SQL Değişkene değer atamak için: Telefonu’ 7

8 select 8

9 use Northwind MONEY max(UnitPrice) from Products 9

10 use Northwind MONEY (select max(UnitPrice) from Products ) 10

11 “ Go komut SQL komut yığınlarını birbirinden ayırmak için kullanılır. ALTER TABLE Products ADD Kdvli MONEY GO UPDATE Products set Kdvli=(UnitPrice*1.2) 11

12 use Northwind VARCHAR(100) (select max(UnitPrice) from Products ) SELECT from Products where SELECT 12

13 T-sql IF IF (şartlar1) BEGIN --Kodlar END ELSE IF (şartlar2) BEGIN -- END ELSE BEGIN END 13

14 int (SELECT COUNT(*) FROM CUSTOMERS) BEGIN PRINT 'kayıt sayısı 80 den fazla' END 14

15 int from customers print 'kayıt sayısı 500 den fazla' else print 'kayıt sayısı 500 den az' 15

16 CREATE PROCEDURE VarChar(128) AS IF EXISTS(SELECT * FROM sysobjects WHERE name WHERE xtype=‘u’ ) + ' var' ELSE + ' yok' GO EXEC TabloKontrol 'Employees' GO 16

17 varchar(10) IF EXISTS( SELECT * FROM sysobjects WHERE name WHERE xtype=‘u’ ) + ' var' ELSE + ' yok' GO 17

18 CASE CASE kontrol edilecek değer WHEN aldığı değer 1 THEN değer1 [WHEN aldığı değer2 THEN değer2] [ELSE değer_n] END CASE WHEN karşılaştırma işlemi1 THEN değer1 [WHEN karşılaştırma işlemi2 THEN değer2 [ELSE değer_n] END 18

19 SELECT contactname,contacttitle,country, CASE country WHEN 'germany' THEN 'Avrupa' ELSE 'bilinmiyor' END as kıta FROM customers 19

20 select contactname,contacttitle,country, case when country in ( 'germany','france','sweden') then 'Avrupa' else 'bilinmiyor' end as kıta from customers 20

21 USE northwind SELECT UnitsInStock,sonuc= CASE WHEN (UnitsInStock<40) THEN ‘SİPARİŞ VERİNİZ' ELSE 'YETERLİ STOK VAR' END FROM products USE northwind SELECT ProductName,UnitsInStock, CASE WHEN (UnitsInStock<40) THEN 'SÝPARÝÞ VERÝNÝZ' ELSE 'YETERLÝ STOK VAR' END AS sonuc FROM products 21

22 select title, case when price < then 'UCUZ' when price < 3.00 then 'ÇOK UCUZ' when price< then 'NORMAL' else 'PAHALI' end durum from titles 22

23 select productname,Unitprice, case when Unitprice <= then 'UCUZ' when Unitprice <= then 'NORMAL' when Unitprice<= then 'PAHALI' else 'ÇOK PAHALI' end AS durum from products 23

24 SELECT productname,UnitsInStock, CASE WHEN UnitsInStock <= then 'Stokta ürün azaldı' ELSE 'ürün var' END AS durum FROM products 24

25 Select top 8 ProductName, case when QuantityPerUnit like '%Tins%' and Discontinued = 0 then 'Tins' when QuantityPerUnit like '%bottles%' and Discontinued = 0 then 'Bottles' else 'Not Tins, Not Bottles, or is Discontinued' end 'Type or Availability' from products 25

26 UPDATE titles SET price = CASE WHEN price < 5 THEN price * 1.25 WHEN price < 10 THEN price * 1.15 WHEN price < 15 THEN price * 1.2 ELSE price END 26

27 UPDATE titles SET price = CASE WHEN price<5THEN price * 1.25 WHEN price<10THEN price * 1.15 WHEN price < 15 THEN price * 1.2 else price END 27

28 UPDATE Products SET UnitPrice = CASE WHEN UnitPrice<10THEN UnitPrice * 1.25 WHEN UnitPrice<20THEN UnitPrice * 1.20 WHEN UnitPrice < 30 THEN UnitPrice * 1.15 ELSE UnitPrice*1.1 END 28

29 select lastname,firstname,case when Titleofcourtesy in ( 'Mr.') then 'BAY‘ else 'BAYAN' end as CİNSİYET from employees 29

30 CURSOR SCROLL CURSOR FETCH Deyimlerinin T-SQL’de kullanım amacı nedir ve birer örnek uygulama 30

31 use northwind DECLARE deneme CURSOR FOR SELECT UnitsInStock from products GO INT OPEN deneme WHILE BEGIN FETCH deneme END DEALLOCATE deneme 31

32 use northwind DECLARE deneme2 CURSOR FOR SELECT UnitsInStock,Productname from products GO INT nvarchar(40) OPEN deneme2 WHILE BEGIN FETCH deneme2 INTo PRINT ' ' END DEALLOCATE deneme2 32

33 DECLARE deneme2 SCROLL CURSOR for SELECT ProductID,ProductName FROM Products OPEN deneme2 --son kayit FETCH LAST FROM deneme2 --baþtan ikinci kayit FETCH ABSOLUTE 2 FROM deneme2 --bulunduðumuz yerden 3 kayit ileri FETCH RELATIVE 3 FROM deneme2 DEALLOCATE deneme2 33

34 sysobjects Kısıtlama, varsayılan, günlük, kural ve saklı yordam gibi bir veritabanı içinde oluşturduğunuz her nesne için bir satır içerir. SELECT * FROM sysobjects where xtype='u' 34

35 C: Check constraint D: Default constraint F: Foreign Key constraint L: Log P: Stored procedure PK: Primary Key constraint RF: Replication Filter stored procedure S: System table TR: Trigger U: User table UQ: Unique constraint V: View X: Extended stored procedure 35

36 SELECT sysobjects.name, syscolumns.name, syscolumns.length FROM sysobjects JOIN syscolumns ON sysobjects.id = syscolumns.id WHERE sysobjects.xtype='U' ORDER BY sysobjects.name

37 SELECT table_name=sysobjects.name, column_name=syscolumns.name, datatype=systypes.name, length=syscolumns.length FROM sysobjects INNER JOIN syscolumns ON sysobjects.id = syscolumns.id JOIN systypes ON syscolumns.xtype=systypes.xtype WHERE sysobjects.xtype='U' ORDER BY sysobjects.name,syscolumns.colid 37

38 WHILE WHILE (ŞART) BEGIN --KODLAR END 38

39 WHILE (SELECT AVG(UnitPrice) FROM Products) < 35 BEGIN UPDATE Products SET UnitPrice = UnitPrice * 1.25 END PRINT 'Done.' GO 39

40 int WHILE (SELECT AVG(UnitPrice) FROM Products) < 100 BEGIN set UPDATE Products SET UnitPrice = UnitPrice * 1.25 END PRINT PRINT 'Done.' GO 40

41 IF NOT EXISTS(SELECT * FROM sysobjects WHERE name = ‘yenitablo') begin CREATE TABLE yenitablo(a int) INSERT INTO yenitablo values (10) INSERT INTO yenitablo values (20) end int = 1 < =100 BEGIN UPDATE yenitablo SET a = a END Go 41

42 IF NOT EXISTS(SELECT * FROM sysobjects WHERE name = 'd1') begin CREATE TABLE d1 (deger int) END GO int = 1 < =100 BEGIN INSERT INTO D END 42

43 T-SQL’de CASE IF WHILE kullanımına ait birer tane örnek sorgu oluşturunuz. 43

44 IF NOT EXISTS(SELECT * FROM sysobjects WHERE name = 'newtabLe1') begin CREATE TABLE newtable1 (a int) INSERT INTO newtable1 values (10) INSERT INTO newtable1 values (20) end int = 1 <= 100 BEGIN INSERT INTO newtable END 44

45 SELECT Customers.CustomerId,Contactname,OrderId,OrderDate from Customers INNER JOIN orders ON Customers.CustomerID=Orders.CustomerID 45

46 Sp_help [object_name]: Belirlenmiş veritabanı nesneleri üzerindeki bilgileri sağlar. Sp_helpdb [database_name]: Belirlenmiş veritabanı üzerindeki bilgileri sağlar. Sp_helpindex [table_name]: Belirlenmiş tablo için dizin üzerindeki bilgileri sağlar. 46

47 Cursor Veritabanı sistemlerinde ise, cursor’ün bulunduğu yerdeki verileri yazdırma, ele alma gibi işlemleri yerine getirebiliriz. 1.Cursor tanimlanir: DECLARE cursor_adi CURSOR FOR SELECT IFADESI 2.Cursor açılır: OPEN cursor_adi 3. Cursor üstünde dolasmak için FETCH komutundan faydalanilir: 4. Cursor kapatılır CLOSE cursor_adi 5. Cursor hafizadan silinir: DEALLOCATE cursor_adi 47

48 Fetch Fetch cursor hareketlerini yönetir Fetch First: ilk satıra gider. Fetch next: Sonraki satır. Fetch last: bir sonraki kayıta gider. Fetch absolute n olarak ifade ettiğimizde ise kaç kayıt gidileceğini belirtir. Fetch Relative n olarak ifade ettiğimizde ise kayıt ilerleme miktarını o an bulunan kayıta göre yapar. 48

49 ifadesi döngünün kontrol birimidir. "Fetch" ifadesinin sonucuna göre üç farklı değer alabilir. Bunlar ; 0: Bir önceki "fetch" ifadesi başarılı -1: Bir önceki "fetch" ifadesi hata ile karşılaştı -2: Son kayıt. WHILE = 0 ifadesi ile hata olmadığı sürece bir sonraki kayıt elde edilir. 49

50 use northwind DECLARE deneme CURSOR FOR SELECT UnitsInStock from products GO INT OPEN deneme FETCH deneme WHILE BEGIN FETCH deneme END DEALLOCATE deneme 50

51 use northwind DECLARE deneme2 CURSOR FOR SELECT UnitsInStock,Productname from products GO INT nvarchar(40) OPEN deneme2 FETCH deneme2 INTo WHILE BEGIN FETCH deneme2 INTo PRINT ' ' END CLOSE deneme2 DEALLOCATE deneme2 51

52 DECLARE deneme2 SCROLL CURSOR for SELECT ProductID,ProductName FROM Products OPEN deneme2 --son kayit FETCH LAST FROM deneme2 --baþtan ikinci kayit FETCH ABSOLUTE 2 FROM deneme2 --bulunduðumuz yerden 3 kayit ileri FETCH RELATIVE 3 FROM deneme2 DEALLOCATE deneme2 52

53 DECLARE deneme3 CURSOR FOR SELECT EmployeeID,SicilNo from Employees int int int OPEN deneme3 FETCH NEXT FROM DENEME3 INTO WHILE BEGIN update Employees set where SET FETCH NEXT FROM DENEME3 INTO END DEALLOCATE deneme3 SELECT EmployeeID,SicilNo from Employees 53

54 Order Details tablosu Modify seçeneği ile düzenleme modunda açılır ve aşağıdaki gibi Amount alanı eklenir. 54

55 SAKLI YORDAM(STORED PROCEDURE) Belli bir işlevi yerine getirmek için yapılandırılmış program parçacığıdır. Sık yapılan işlemler için bir kere kodlama yapıp çok kez kullanmayı amaçlar. 55

56 CREATE PROCEDURE onkisi AS SELECT TOP 10 * FROM Customers ORDER BY CustomerID Çalıştırmak için: EXEC onkisi 56

57 Sistem SP Sp_ öneki ile başlayan master veritabanında saklanan prosedürlerdir. Exec sp_helpdb USE Northwind EXEC sp_depends 'Customers' 57

58 CREATE PROC int) as SELECT * FROM ORDERS WHERE Çalıştırırken exec deneme

59 CREATE PROCEDURE grupla nvarchar(30)) AS SELECT City, COUNT(*) AS Müşteri_sayısı FROM Customers WHERE Country GROUP BY City GO Çalıştırırken : exec grupla 'spain' 59

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

61 CREATE TRIGGER Guncelle on [Order Details] for insert AS int from Inserted from inserted UPDATE Products set WHERE 61

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

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

64 SELECT * FROM Products WHERE ProductID=2 DELETE FROM Products WHERE ProductID=2 SELECT * FROM Products WHERE ProductID=2 64

65 Use Northwind GO CREATE TRIGGER supp_Delete ON Suppliers FOR DELETE AS IF (SELECT COUNT(*) FROM Deleted) > 1 BEGIN print('Birden fazla tedarik kaydını silemezsiniz.') ROLLBACK TRANSACTION END 65

66 Use Northwind GO CREATE TRIGGER Empl_Delete ON Employees FOR DELETE AS IF (SELECT COUNT(*) FROM Deleted) > 1 BEGIN RAISERROR( 'You cannot delete more than one employee at a time.', 16, 1) ROLLBACK TRANSACTION END 66

67 RAISERROR Sisteme eklenen mesajların hata oluşması durumunda devreye girmesi için kullanılan fonksiyondur. RAISERROR  Mesaj_kodu: message_id sütunundaki koda karşılık gelir.  Seviye: 0-25 arasında bir sayı olup, mesajın kritik seviyesini gösterir.  Durum: arasında bir sayı olup, hata mesajı birden fazla yerde oluştuğunda hata oluşan yerleri ayırt etmek için kullanılır. 67

68 Empoyees 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. 68

69 use northwind DECLARE deneme3 CURSOR FOR SELECT EmployeeID,SicilNo from Employees GO int int int OPEN deneme3 FETCH NEXT FROM DENEME3 INTO WHILE BEGIN update Employees set where SET FETCH NEXT FROM DENEME3 INTO END DEALLOCATE deneme3 SELECT EmployeeID,SicilNo from Employees 69

70 CREATE PROC AS varchar(50) AS AS NVARCHAR(1000) = 'SELECT * FROM ' EXEC 70

71 select OrderId,Count(*)from [Order details] group by OrderId 71

72 select [order details].OrderId,count(*),contactName from orders inner join [Order details] on orders.OrderId=[Order details].OrderId inner join Customers on Customers.CustomerId=orders. CustomerID group by [order details].OrderId, contactName 72

73 select [order details].OrderId,count(*),contactName from orders inner join [Order details] on orders.OrderId=[Order details].OrderId inner join Customers on Customers.CustomerId=orders. CustomerID group by [order details].OrderId, contactName having count(*)>=4 73

74 select * from orders where CONVERT(varchar,orderdate,103)='04/07/1996' 74


"1. SELECT CONVERT(CHAR(8), GETDATE(), 112) exec sp_changedbowner 'BUKET-PC\BUKET' 2." indir ppt

Benzer bir sunumlar


Google Reklamları