SQL de tecrübe edinilmiş hazır sorgular aşağıdaki gibidir.
SQL Tabloları, Kayıt Sayıları ve Kapasiteleri
SQL de seçilen database içerisinde bulunan tabloların satır sayıları kapasitelerini toplu olarak listeleyen sorgudur.
SELECT
s.Name AS SchemaName,
t.NAME AS TableName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM
sys.tables t
INNER JOIN
sys.schemas s ON s.schema_id = t.schema_id
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.NAME NOT LIKE 'dt%' -- filter out system tables for diagramming
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
s.Name, t.Name
SQL Ayraç Kullanımı
SQL de Ali, Veli, Can yazan bir yazıyı alt alta satırlara göndermek için fonksiyon örneğidir.
Kullanımı select [dbo].[Ayrac] (‘Ali,Veli,Can’,’,’)
CREATE FUNCTION [dbo].[Ayrac] (@Kelime varchar(8000), @Sinirlayici char(1))
RETURNS @tempTable TABLE (items varchar(8000)) --max 8000 uzunluğunda karakter olabilir
AS
BEGIN
DECLARE @Sayi int
DECLARE @Ayrilmis varchar(8000)
SELECT @Sayi = 1
IF LEN(@Kelime)<1 OR @Kelime IS NULL RETURN
WHILE @Sayi != 0
BEGIN
SET @Sayi = CHARINDEX(@Sinirlayici, @Kelime)
IF @Sayi !=0
SET @Ayrilmis = LEFT(@Kelime, @Sayi-1 )
ELSE
SET @Ayrilmis = @Kelime
IF (LEN(@Ayrilmis) > 0)
INSERT INTO @tempTable (items) VALUES (@Ayrilmis)
SET @Kelime = RIGHT(@Kelime, LEN(@Kelime) - @Sayi)
IF LEN(@Kelime) = 0 BREAK
END
RETURN
END
INSERT TRIGER, ROOLBACK
Girilen kaydın 14 karakterden fazla olmasını engellemek için aşağıdaki yapıyı kullanabilirsiniz.
CREATE TRIGGER [dbo].[frt_STOK_KODU_14CH_KONTROLU] on [dbo].[STOKLAR]
for INSERT
AS
BEGIN
declare @stokkod nvarchar(50)
select @stokkod=x.sto_kod FROM INSERTED x
if LEN(@stokkod)<>'20' --STOK KODUNUN KARAKTER SAYISINI BULUYOR. 14' E EŞİT OLUP OLMADIĞINI SORGULUYOR.
begin
RAISERROR('STOK KODU 20 KARAKTERDEN AZ VEYA FAZLA OLAMAZ. KONTROL!!!',16,1)
ROLLBACK
goto cik
end
cik:
END
WHILE BEGIN KULLANIMI
truncate table UKN_yuklemeozetdurum
DECLARE @Sayac TINYINT =1
declare @dongu int = (select count(*) from UKN_PaletList )
declare @siraen int = 1
declare @siraboy int=1
declare @konteynerno int =1
--LİSTEDEKİ PALET SAYISI KADAR DÖNER
WHILE (@Sayac<=@dongu)
BEGIN
declare @stokkod nvarchar(20)=(select paletkod from #SanalTablo where sirano=@Sayac)
INSERT INTO STOKLAR (stokkod) VALUE(@stokkod)
select @sayac=@sayac+1
END
Tam Sayıyı Binlik Decimale Ayırma
select
REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(varchar(20),CAST(txt_odeme_tutar as money),1),',','@'),'.',','),'@','.'),',00','') as "Amount"
TCMB Döviz Kurlarını Getiren Procedure
--Öncelikle bunu çalıştırın
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE;
GO
#########################################
USE [DATABASE]
GO
/****** Object: StoredProcedure [dbo].[GunlukDovizKuruGetir] Script Date: 10.4.2020 20:34:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[LCN_GunlukDovizKuruGetir]
AS BEGIN
CREATE TABLE #DovizKuru
(
Tarih DATE,
ParaBirimAdeti NVARCHAR(100),
ParaBirimi NVARCHAR(200),
ParaBirimiAdi NVARCHAR(200),
DovizAlis FLOAT,
DovizSatis FLOAT,
EfektifAlis FLOAT,
EfektifSatis FLOAT
);
DECLARE @MerkezBankasiURL VARCHAR(500); SET @MerkezBankasiURL = 'https://www.tcmb.gov.tr/kurlar/today.xml';
DECLARE @OBJ AS INT;
DECLARE @RESULT AS INT;
EXEC @RESULT = sp_OACreate 'MSXML2.XMLHTTP', @OBJ OUT;
EXEC @RESULT = sp_OAMethod @OBJ,
'open',
NULL,
'GET',
@MerkezBankasiURL,
false;
EXEC @RESULT = sp_OAMethod @OBJ, send, NULL, '';
CREATE TABLE #XML ( XMLDegeri VARCHAR(MAX) );
INSERT INTO #XML ( XMLDegeri ) EXEC @RESULT = sp_OAGetProperty @OBJ, 'responseXML.xml';
DECLARE @XMLYazi XML;
SELECT @XMLYazi = XMLDegeri FROM #XML;
DROP TABLE #XML;
DECLARE @HDOC AS INT;
EXEC sp_xml_preparedocument @HDOC OUTPUT, @XMLYazi;
INSERT INTO #DovizKuru
(
Tarih,
ParaBirimAdeti,
ParaBirimi,
ParaBirimiAdi,
DovizAlis,
DovizSatis,
EfektifAlis,
EfektifSatis
)
SELECT CONVERT(DATE, GETDATE()) AS Tarih,
* FROM OPENXML(@HDOC, 'Tarih_Date/Currency')
WITH (
Unit NVARCHAR(100) 'Unit',
Isim NVARCHAR(200) 'Isim',
CurrencyName NVARCHAR(200) 'CurrencyName',
ForexBuying FLOAT 'ForexBuying',
ForexSelling FLOAT 'ForexSelling',
BanknoteBuying FLOAT 'BanknoteBuying',
BanknoteSelling FLOAT 'BanknoteSelling' );
SELECT * FROM #DovizKuru;
END; --Prosedürün çalıştırılması
##########################################
EXEC LCN_GunlukDovizKuruGetir
Silinen Kapatılan Geçmiş SQL Queryleri Geri Yükleme
SELECT top 500 t.[text], s.last_execution_time
FROM sys.dm_exec_cached_plans AS p
INNER JOIN sys.dm_exec_query_stats AS s
ON p.plan_handle = s.plan_handle
CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) AS t
order by last_execution_time desc
Tablo Kapasite Hesaplama Sorgusu
SELECT
s.Name AS SchemaName,
t.NAME AS TableName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM
sys.tables t
INNER JOIN
sys.schemas s ON s.schema_id = t.schema_id
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.NAME NOT LIKE 'dt%' -- filter out system tables for diagramming
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
s.Name, t.Name
SQL de Sorguya Sıra Numarası Atama ROW_NUMBER()
select
ROW_NUMBER() OVER (ORDER BY sto_kod)
,sto_kod as StokKodu
,sto_isim as StokIsim
From TabloAdi
SQL SELECT INTO İle Tabloların Yedeğini veya Kopyasını Alma
SELECT * INTO yenitablo [hariciVeritabanı]
FROM tablo1;
______________________________
Hazırlayan : Caner Alican
Bu ve benzeri konularda bilgi almak için info@lcngrup.com mail adresi üzerinden iletişime geçebilirsiniz.




