740 likes | 797 Views
SELECT CONVERT(CHAR(8), GETDATE(), 112) exec sp_changedbowner 'BUKET-PCBUKET'.
E N D
SELECT CONVERT(CHAR(8), GETDATE(), 112) • exec sp_changedbowner 'BUKET-PC\BUKET'
DECLARE @now DATETIME SET @now = GETDATE() PRINT dbo.FormatDateTime(@now, 'LONGDATE') PRINT dbo.FormatDateTime(@now, 'LONGDATEANDTIME') PRINT dbo.FormatDateTime(@now, 'SHORTDATE') PRINT dbo.FormatDateTime(@now, 'SHORTDATEANDTIME') PRINT dbo.FormatDateTime(@now, 'UNIXTIMESTAMP') PRINT dbo.FormatDateTime(@now, 'YYYYMMDD') PRINT dbo.FormatDateTime(@now, 'YYYY-MM-DD') PRINT dbo.FormatDateTime(@now, 'YYMMDD') PRINT dbo.FormatDateTime(@now, 'YY-MM-DD') PRINT dbo.FormatDateTime(@now, 'MMDDYY') PRINT dbo.FormatDateTime(@now, 'MM-DD-YY') PRINT dbo.FormatDateTime(@now, 'MM/DD/YY') PRINT dbo.FormatDateTime(@now, 'MM/DD/YYYY') PRINT dbo.FormatDateTime(@now, 'DDMMYY') PRINT dbo.FormatDateTime(@now, 'DD-MM-YY') PRINT dbo.FormatDateTime(@now, 'DD/MM/YY') PRINT dbo.FormatDateTime(@now, 'DD/MM/YYYY') PRINT dbo.FormatDateTime(@now, 'HH:MM:SS 24') PRINT dbo.FormatDateTime(@now, 'HH:MM 24') PRINT dbo.FormatDateTime(@now, 'HH:MM:SS 12') PRINT dbo.FormatDateTime(@now, 'HH:MM 12') PRINT dbo.FormatDateTime(@now, 'goofy')
USE northwind • SELECT Customers.CustomerId,Contactname,COUNT(*) fromCustomers • INNER JOIN orders ON Customers.CustomerID=Orders.CustomerID GROUP BY Customers.CustomerId,Contactname
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: • DECLARE @degisken_adi veritipi(boyut) • DECLARE @enpahali_Urun VARCHAR(100)
declare @sayı int • print 'deger ' • set @sayı=233 • print @sayı • -------------------------------------- • declare @sayı int • set @sayı=233 • print 'deger = '+ convert(varchar(5), @sayı)
T-SQL • Değişkene değer atamak için: • SET @degisken_adi=deger • SET@enpahali_Urun=‘Cep Telefonu’
useNorthwind • DECLARE @enyüksek_fiyat MONEY • SELECT @enyüksek_fiyat= max(UnitPrice) from Products • SELECT @enyüksek_fiyat
useNorthwind • DECLARE @enyüksek_fiyat MONEY • set @enyüksek_fiyat= (select max(UnitPrice) from Products ) • SELECT @enyüksek_fiyat • --PRINT @enyüksek_fiyat
“ • 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)
useNorthwind • DECLARE @enyüksek_fiyat MONEY,@urünkod INT,@urunad VARCHAR(100) • set @enyüksek_fiyat= (select max(UnitPrice) from Products ) • SELECT @urunad=ProductName,@urünkod=ProductId from Products where UnitPrice=@enyüksek_fiyat • SELECT @urünkod,@urunad
T-sql IF IF (şartlar1) BEGIN --Kodlar END ELSE IF (şartlar2) BEGIN -- END ELSE BEGIN ----- END
DECLARE @ksayısıint • SET @ksayısı= (SELECT COUNT(*) FROM CUSTOMERS) • IF @ksayısı>80 • BEGIN • PRINT 'kayıtsayısı 80 den fazla' • PRINT @ksayısı • END
declare @ksayısıint • select @ksayısı=count(*) fromcustomers • if @ksayısı>500 • print 'kayıt sayısı 500 den fazla' • else • print 'kayıt sayısı 500 den az' • print @ksayısı
CREATE PROCEDURE TabloKontrol • @TableNameVarChar(128) • AS • IF EXISTS(SELECT * FROM sysobjects WHERE name = @TableName WHERE xtype=‘u’ ) • PRINT @TableName + ' var' • ELSE • PRINT @TableName + ' yok' • GO • EXEC TabloKontrol 'Employees' • GO
DECLARE @tablo varchar(10) • SET @tablo='Customers' • IF EXISTS(SELECT * FROM sysobjects WHERE name = @tablo WHERE xtype=‘u’ ) • PRINT @Tablo + ' var' • ELSE • PRINT @tablo + ' yok' • GO
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
SELECT contactname,contacttitle,country, • CASE country • WHEN 'germany' THEN 'Avrupa' • ELSE 'bilinmiyor' END as kıta • FROM customers
selectcontactname,contacttitle,country, • case • whencountry in • ( 'germany','france','sweden') then 'Avrupa' • else 'bilinmiyor' end as kıta • fromcustomers
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
selecttitle, • case • when price < 12.00 then 'UCUZ' • when price < 3.00 then 'ÇOK UCUZ' • when price< 20.00 then 'NORMAL' • else 'PAHALI' • end durum • fromtitles
selectproductname,Unitprice, • case • when Unitprice <= 10.00 then 'UCUZ' • when Unitprice <= 30.00 then 'NORMAL' • when Unitprice<= 50.00 then 'PAHALI' • else 'ÇOK PAHALI' • end AS durum • fromproducts
SELECTproductname,UnitsInStock, • CASE • WHENUnitsInStock <= 10.00 then • 'Stokta ürün azaldı' • ELSE 'ürün var' • END AS durum • FROM products
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 'TypeorAvailability' • fromproducts
UPDATE titles SET price = CASEWHENprice < 5 THEN price * 1.25WHEN price < 10 THEN price * 1.15 WHEN price <15 • THEN price * 1.2ELSE price END
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
UPDATE Products • SET UnitPrice = • CASE • WHEN UnitPrice<10 THEN • UnitPrice * 1.25 • WHEN UnitPrice<20 THEN • UnitPrice * 1.20 • WHEN UnitPrice < 30 THEN • UnitPrice * 1.15 • ELSE UnitPrice*1.1 • END
selectlastname,firstname,case whenTitleofcourtesy in • ( 'Mr.') then 'BAY‘ • else 'BAYAN' • end as CİNSİYET fromemployees
CURSOR • SCROLL CURSOR • FETCH • Deyimlerinin T-SQL’de kullanım amacı nedir ve birer örnek uygulama
usenorthwind DECLARE deneme CURSOR FOR SELECT UnitsInStockfromproducts GO DECLARE @stok INT OPEN deneme WHILE (@@FETCH_STATUS=0) BEGIN FETCH deneme INTo @stok PRINT @stok END DEALLOCATE deneme
usenorthwind • DECLARE deneme2 CURSOR FOR • SELECT UnitsInStock,Productnamefromproducts • GO • DECLARE @stok INT • DECLARE @ad nvarchar(40) • OPEN deneme2 • WHILE (@@FETCH_STATUS=0) • BEGIN • FETCH deneme2 INTo @stok,@ad • PRINT convert(varchar(10),@stok)+ ' ' + @ad • END • DEALLOCATE deneme2
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
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'
C:Checkconstraint • D:Defaultconstraint • F:ForeignKeyconstraint • L:Log • P:Storedprocedure • PK:PrimaryKeyconstraint • RF:ReplicationFilterstoredprocedure • S:Systemtable • TR:Trigger • U:Usertable • UQ:Uniqueconstraint • V:View • X:Extendedstoredprocedure
SELECT sysobjects.name, syscolumns.name, • syscolumns.length FROM sysobjects JOIN • syscolumns ON sysobjects.id = syscolumns.id WHERE sysobjects.xtype='U' ORDER BY sysobjects.name
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
WHILE • WHILE (ŞART) • BEGIN • --KODLAR • END
WHILE (SELECT AVG(UnitPrice) FROM Products) < 35 • BEGIN • UPDATE Products SET UnitPrice = UnitPrice * 1.25 • END • PRINT 'Done.' • GO
Declare @say int • Set @say=0 • WHILE (SELECT AVG(UnitPrice) FROM Products) < 100 • BEGIN • set @say=@say+1 • UPDATE Products SET UnitPrice = UnitPrice * 1.25 • END • PRINT CONVERT(VARCHAR(10),@say) • PRINT 'Done.' • GO
IF NOT EXISTS(SELECT * FROM sysobjects WHERE name = ‘yenitablo') • begin • CREATE TABLE yenitablo(a int) • INSERT INTO yenitablovalues (10) • INSERT INTO yenitablovalues (20) • end • DECLARE @counterint • SET @counter = 1 • WHILE @counter < =100 • BEGIN • UPDATE yenitabloSET a = a + 1 • SET @counter = @counter + 1 • END • Go
IF NOT EXISTS(SELECT * FROM sysobjects WHERE name = 'd1') • begin • CREATE TABLE d1 (degerint) • END • GO • DECLARE @counterint • SET @counter = 1 • WHILE @counter < =100 BEGIN • INSERT INTO D1 VALUES(@counter) • SET @counter = @counter + 1 • END
T-SQL’de • CASE • IF • WHILE • kullanımına ait birer tane örnek sorgu oluşturunuz.
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 • DECLARE @counterint • SET @counter = 1 • WHILE @counter <= 100 BEGIN • INSERT INTO newtable1 VALUES(@counter) • SET @counter = @counter + 1 • END
SELECT Customers.CustomerId,Contactname,OrderId,OrderDatefromCustomers INNER JOIN orders ON Customers.CustomerID=Orders.CustomerID
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.
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
Fetch • Fetchcursor hareketlerini yönetir • Fetch First: ilk satıra gider. • Fetchnext: Sonraki satır. • Fetchlast: bir sonraki kayıta gider. • Fetchabsolute n olarak ifade ettiğimizde ise kaç kayıt gidileceğini belirtir. • FetchRelative n olarak ifade ettiğimizde ise kayıt ilerleme miktarını o an bulunan kayıta göre yapar.
@@FETCH_STATUS • @@FETCH_STATUS 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 @@FETCH_STATUS = 0 ifadesi ile hata olmadığı sürece bir sonraki kayıt elde edilir.
usenorthwind DECLARE deneme CURSOR FOR SELECT UnitsInStockfromproducts GO DECLARE @stok INT OPEN deneme FETCH deneme INTo @stok WHILE (@@FETCH_STATUS=0) BEGIN FETCH deneme INTo @stok PRINT @stok END DEALLOCATE deneme