17 Kasım 2009 Salı

Sql de Yuvarlama Fonksiyonları

FLOOR = Aşağı yuvarla (Herhangi bir ondalık için sayının kendinden küçük, en büyük tam sayıyı verir)
CEILING = Aşağı yuvarla (Herhangi bir ondalık için sayının kendinden büyük, en küçük tam sayıyı verir)
ROUND = Sayının yakın olduğu tam sayı değerini verir.

SELECT FLOOR(12.252141),Ceiling(12.252141),Round(12.252141,0)

Sonuç : 12 13 12.000000

SELECT FLOOR(12.987363),Ceiling(12.987363),Round(12.987363,0)

Sonuç : 12 13 13.000000

Not : Round fonksiyonu 2 parametre alır. Birincisi yuvarlayacağı sayı ikincisi ise yuvarlarken virgülden sonra dikkate alacağı hane sayısını ifade eder.

Round(12.252141,0) =12.000000
Round(12.252141,1) = 12.300000
Round(12.252141,2) = 12.250000
Round(12.252141,3) = 12.252000
Round(12.252141,4) = 12.252100

Tsql xml Çıktısı üretmek

SELECT a.* FROM tablom a FOR XML AUTO

Backup Önemli Arkadaşlar

USE veritabani_ismi

GO

BACKUP DATABASE veritabani_ismi

TO DISK = 'C:\backup\sqlbackup.bck'

WITH FORMAT,

NAME = 'veritabani_ismi yedeği'

GO

Tsql SAyı Biçimlendirme Örneği

SELECT CONVERT(varchar(50), CONVERT(money, ToplamPara), 1) AS Tutar

Çeşitli Veritabanlarında Rastgele Veri Çekmek

Select a random record with Oracle:
SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1
---
Select a random row with IBM DB2
SELECT column, RAND() as IDX
FROM table
ORDER BY IDX FETCH FIRST 1 ROWS ONLY
---
Select a random row with Microsoft SQL Server:
SELECT TOP 1 column FROM table
ORDER BY *NEWID()*
---
Select a random row with MySQL:
SELECT column FROM table
ORDER BY *RAND()*
LIMIT 1
---
Select a random row with PostgreSQL:
SELECT column FROM table
ORDER BY *RANDOM()*
LIMIT 1

Tsql ile Dosyaya yazdırma

EXEC master..xp_cmdshell 'osql -S Localhost -U Mir -P 1234 -q "select * from pubs..authors" -o c:\authors.txt'

-U parametresi user bendeki user -->Mir
-P paremetresi Kullanıcı şifresi
-S Parametresi Hangi serverda calısacak

Bir Triger örneği

Table1 ve Table2 adlarında iki tablomuz varsa ve Table1 deki bir satır silindiğinde Table2 deki ilgili satırın da silinmesi için:

Table1 (ID-Adı-Soyadı)
Table2 (ID-Table1ID-Adres)

Yani Table1 deki bir kayıt silindiğinde Adres bilgilerinin de silinmesi isteniyor.
CREATE TRIGGER Table1_DELETE ON Table1
FOR DELETE
AS
DECLARE @ID int
Select @ID = ID From deleted
DELETE Table2 Where Table1ID = @ID

Tsql Exec komutuna örnek

DECLARE @sql varchar(1000), @Tablo varchar(100)
SET @Tablo = 'STOKLAR'
SET @sql = 'Select * From ' + @Tablo
EXEC(@sql)

For next in MsSql deki karşılığına Örnek

DECLARE @i int
SELECT @i = 1

WHILE (@i<440)
BEGIN
DECLARE @ID int

update usrKasa set Kapandi = 1 where ID = @ID

SELECT @i = @i + 1
END