25 Aralık 2015 Cuma

sql mükkerrer kayıt bulmak (T-SQL)

Merhaba, Bir çok kere karşılaştığımız problemlerden biride bir tablo içerisinde birden fazla tekrar eden satır bulununca tekrar eden kayıtların hangisini gösterebileceğimiz t-sql sorgusu aşağıdaki gibidir.


Tablo Bilgileri ;

Maillertek tablosunda Adres adında bir kolon bulunmaktadır ve bu kolonda email adresleri bulunmaktadır. Tablo adı : MaillerTek Kolon : Adres


SELECT Adres,

COUNT(Adres) AS TekrarlamaSayısı

FROM Maillertek

GROUP BY Adres

HAVING ( COUNT(Adres) > 1 )

order by TekrarlamaSayısı


Yapılan sorguyu türkçeye çevirerek televuz etmemiz gerekirse; adres kolonunu ve adres kolonunundaki göster, having kullanımındaki durum : şart, count(adres) ile her bir satırın sayısını al ve > 1 büyükse göster Kolay Gelsin.


<p>



sql mükkerrer kayıt bulmak (T-SQL)

24 Aralık 2015 Perşembe

sql Log Temizleme Truncate log temizleme log silme

Hepsi Bu kadar kolay gelsin.


USE [DbAdi]

GO

ALTER DATABASE DbAdiSET RECOVERY SIMPLE WITH NO_WAIT

DBCC SHRINKFILE(DbAdi_Log, 1)

ALTER DATABASE DbAdiSET RECOVERY FULL WITH NO_WAIT

GO



sql Log Temizleme Truncate log temizleme log silme

create sp nedir stored procedure nasıl kullanılır

–stored procedure:

–stored = saklı demektir

–executeplanı saklıyor

–yapısal bir değişiklik yapmadığımız sürece explan aynı kalacaktır

–dışardan parametre alabilir

–istediğimiz kadar programlama tarzı yapabiliriz

–2 tane storedprocedure vardır

–sistem procedureleri(system procedure) ve bizim tanımladıklarımız(user defined)

–sp = normal

–xp = extended


select * from yazarlar

select * from kitaplar

select * from kategoriler


select K.KitapNo,K.Adi as ‘Kitap Adi’,Y.Adi+ ‘ ‘+Y.Soyadi as ‘Ad Soyad’,

Kt.Adi as ‘Kategori’,K.Fiyati,K.Miktar,

case K.Durum when 1 then ‘Var’ else ‘Yok’

end as ‘Durum’

from kitaplar K inner join yazarlar Y

on K.YazarID=Y.YazarID

inner join Kategoriler Kt

on Kt.KategoriID=K.KategoriID

–stored procedureli hali

create procedure KitapListesi

as

select K.KitapNo,K.Adi as ‘Kitap Adi’,Y.Adi+ ‘ ‘+Y.Soyadi as ‘Ad Soyad’,

Kt.Adi as ‘Kategori’,K.Fiyati,K.Miktar,

case K.Durum when 1 then ‘Var’ else ‘Yok’

end as ‘Durum’

from kitaplar K inner join yazarlar Y

on K.YazarID=Y.YazarID

inner join Kategoriler Kt

on Kt.KategoriID=K.KategoriID


–ve tek cümleyle çağırabiliriz


exec kitaplistesi

declare @kitapadi varchar(100)

set @kitapadi = ‘c’

select K.KitapNo,K.Adi as ‘Kitap Adi’,Y.Adi+ ‘ ‘+Y.Soyadi as ‘Ad Soyad’,

Kt.Adi as ‘Kategori’,K.Fiyati,K.Miktar,

case K.Durum when 1 then ‘Var’ else ‘Yok’

end as ‘Durum’

from kitaplar K inner join yazarlar Y

on K.YazarID=Y.YazarID

inner join Kategoriler Kt

on Kt.KategoriID=K.KategoriID

where K.Adi like ‘%’+@kitapadi+’%’


–stored proc hali

create proc KitapArama

@kitapadi varchar(100)

as

select K.KitapNo,K.Adi as ‘Kitap Adi’,Y.Adi+ ‘ ‘+Y.Soyadi as ‘Ad Soyad’,

Kt.Adi as ‘Kategori’,K.Fiyati,K.Miktar,

case K.Durum when 1 then ‘Var’ else ‘Yok’

end as ‘Durum’

from kitaplar K inner join yazarlar Y

on K.YazarID=Y.YazarID

inner join Kategoriler Kt

on Kt.KategoriID=K.KategoriID

where K.Adi like ‘%’+@kitapadi+’%’


–as olanları getircez


exec KitapArama ‘as’


select * from products

–fiyatı 20 ile 50 olanları getir


declare @ilkfiyat money,

@sonfiyat money

set @ilkfiyat =20

set @sonfiyat = 50

select * from Products

where unitprice between @ilkfiyat and @sonfiyat


–proc hali

create proc UrunAra

@ilkfiyat money,

@sonfiyat money

as

select * from Products

where unitprice between @ilkfiyat and @sonfiyat


select * from employees


declare @city varchar(20)

set @city= ‘on’

select city from employees

where city like ‘%on%’


create proc SehirAra

@city varchar(20)

as

select EmployeeID,FirstName,LastName,City from Employees

where city like ‘%’+@city+’%’

exec SehirAra ‘%on%’


–kitap aramada değişiklikler yaptık

alter proc KitapArama

@kitapadi varchar(100),

@ilkfiyat money,

@sonfiyat money

as

select K.KitapNo,K.Adi as ‘Kitap Adi’,Y.Adi+ ‘ ‘+Y.Soyadi as ‘Ad Soyad’,

Kt.Adi as ‘Kategori’,K.Fiyati,K.Miktar,

case K.Durum when 1 then ‘Var’ else ‘Yok’

end as ‘Durum’

from kitaplar K inner join yazarlar Y

on K.YazarID=Y.YazarID

inner join Kategoriler Kt

on Kt.KategoriID=K.KategoriID

where K.Adi like ‘%’+@kitapadi+’%’

or (K.Fiyati between @ilkfiyat and @sonfiyat)

exec kitaparama ‘c’,10,50


select * from [order details]


–productIDlere göre toplam gelirlerini getircez


declare @productID int

set @productID = 51

select sum (Unitprice*Quantity) as ‘Toplam Kazanç’

from [order details]

where ProductID = @productID

group by productID


declare @sum money,@productname varchar(50)

select @productname =P.Productname,

@sum = sum(OD.unitprice*OD.Quantity)

from [order details] OD inner join Products P

on OD.ProductID=P.ProductID

group by P.Productname


create proc UrunArama

@productID int = null,

@customerID char (10) = null,

@ilkfiyat money = 0,

@sonfiyat money = null

as

if @sonfiyat is null

set @sonfiyat = (select max(unitprice) from [order details])

declare @sum money,@productname varchar(50)

select O.customerID,P.Productname,

sum(OD.Unitprice*OD.Quantity)

from [order details] OD inner join Products P

on OD.ProductID=P.ProductID

inner join orders O

on OD.OrderID=O.OrderID

where(@productID is null or OD.ProductID = @productID)

and (@customerID is null or O.CustomerID = @customerID)

and (OD.Unitprice between @ilkfiyat and @sonfiyat)

group by P.ProductName,O.CustomerID


select top 2 * from orders

select top 2 * from customers

select top 2 * from employees


–fullname,companyname,contactname,orderdate,region listele


select E.FirstName+ ‘ ‘+E.LastName as ‘Full Name’,C.CompanyName,C.ContactName,

isnull(E.Region,’no region’),convert(varchar(10),O.OrderDate,104)

from employees E inner join Orders O

on E.EmployeeID=O.EmployeeID

inner join customers C

on C.CustomerID=O.CustomerID


create proc deneme

@firstname varchar(50)=null,

@lastname varchar(50)=null ,

@companyname varchar(50)=null ,

@startdate datetime=null ,

@enddate datetime =null,

@region char(10)=null

as


select E.FirstName+ ‘ ‘+E.LastName as ‘Full Name’,C.CompanyName,C.ContactName,

isnull(E.Region,’no region’),convert(varchar(10),O.OrderDate,104)as ‘order Date’

from employees E inner join Orders O

on E.EmployeeID=O.EmployeeID

inner join customers C

on C.CustomerID=O.CustomerID

where (@firstname is null or E.FirstName like ‘%’+@firstname+’%’)

and (@lastname is null or E.Lastname like ‘%’+@lastname+’%’)

and (@companyname is null or C.Companyname like ‘%’+@companyname+’%’)

and (@region is null or E.Region like ‘%’+@region+’%’)

and ((@startdate is null or @enddate is null)

or O.Orderdate between @startdate and @enddate)



create sp nedir stored procedure nasıl kullanılır

23 Aralık 2015 Çarşamba

create proc prosedür kullanımı

declare @ilkfiyat money,

@sonfiyat money

set @ilkfiyat =20

set @sonfiyat = 50

select * from Products

where unitprice between @ilkfiyat and @sonfiyat


–proc hali

create proc UrunAra

@ilkfiyat money,

@sonfiyat money

as

select * from Products

where unitprice between @ilkfiyat and @sonfiyat


select * from employees


USE Northwind


GO


CREATE PROC pahali_kitaplar


AS


SELECT *


FROM products


WHERE unitprice > 30


GO

— çalıştırmak için

select * from products


EXEC pahali_kitaplar

—– bunun içinde declare ile değişken tanımlayıp çalışyıtman gerekiyor….

— stored procedure ye örnekler

select * from products

select * from [order details]


alter proc urunler

@productId int — declare siz hali yazılır

as


select e.firstname + ‘ ‘ + e.Lastname as ‘full name’,p.productname,p.unitprice * quantity

from employees e inner join orders o

on e.employeeID = o.employeeID inner join

[order details] od on

o.orderId = od.orderId inner join products p

on od.productId = p.productId


go


exec urunler


— bu örneği çoğaltalım pls…

create proc urunlerproductId

@productId int — declare siz hali yazılır

as


select e.firstname + ‘ ‘ + e.Lastname as ‘full name’,p.productname,p.unitprice * quantity,od.productId

from employees e inner join orders o

on e.employeeID = o.employeeID inner join

[order details] od on

o.orderId = od.orderId inner join products p

on od.productId = p.productId

where od.productId = @productID


go


exec urunlerproductId 1

create proc urunlerproductId

@productId int — declare siz hali yazılır

as


select e.firstname + ‘ ‘ + e.Lastname as ‘full name’,p.productname,p.unitprice * quantity,od.productId

from employees e inner join orders o

on e.employeeID = o.employeeID inner join

[order details] od on

o.orderId = od.orderId inner join products p

on od.productId = p.productId

where od.productId = @productID


go


exec urunlerproductId 1

create proc urunlerproductId2

@productId int, — declare siz hali yazılır

@orderID int

as


select e.firstname + ‘ ‘ + e.Lastname as ‘full name’,p.productname,p.unitprice * quantity,od.productId

from employees e inner join orders o

on e.employeeID = o.employeeID inner join

[order details] od on

o.orderId = od.orderId inner join products p

on od.productId = p.productId

where od.productId = @productID and

od.orderID = @orderID


go


exec urunlerproductId2 11,10248


— deefault ayar vermek


create proc urunlerproductId4

@productId int=11, — declare siz hali yazılır

@orderID int=10248

as


select e.firstname + ‘ ‘ + e.Lastname as ‘full name’,p.productname,p.unitprice * quantity,od.productId

from employees e inner join orders o

on e.employeeID = o.employeeID inner join

[order details] od on

o.orderId = od.orderId inner join products p

on od.productId = p.productId

where od.productId = @productID and

od.orderID = @orderID


go


exec urunlerproductId4 @orderId=10248



create proc urunlerproductId5

@productId int=null, — declare siz hali yazılır

@orderID int=null

as


select e.firstname + ‘ ‘ + e.Lastname as ‘full name’,p.productname,p.unitprice * quantity,od.productId

from employees e inner join orders o

on e.employeeID = o.employeeID inner join

[order details] od on

o.orderId = od.orderId inner join products p

on od.productId = p.productId

where (@productId is null or od.productId = @productID) and

(@orderID is null or od.orderID = @orderID)


go


exec urunlerproductId5 @orderID = 10248


–veya


exec urunlerproductId5 @productID = 11 — gibi


select * from customers

CREATE PROC musteriarama

@musterikodu int,

@company varchar(100),

@contactname varchar(50),

@city varchar(50),

@region varchar(50),

@phone int


AS


SELECT *


FROM customers

where (@company is null or Companyname = @company)and

(@contactname is null or contactname = @contactname)and

(@city is null or city = @city)and

(@region is null or region = @region)and

(@phone is null or phone = @phone)

GO


exec musteriarama @company = a


— çalıştırmak için


— bunu evde çalışş

select * from products


EXEC pahali_kitaplar



— ASCII KARATERLER İKİSİDE AYNI ANLAMA GELİYO AŞAĞIYI İNCELE

–SUBSTRING (DEGERI OKUR, NERDEN BASLICAK) ÇALIŞMA SİSTEMİ BÖLE

— SELECT SUBSTRING (AHMET,1,2,3) gibi

select ascii(‘H’)


SELECT CHAR(72)

create function encrypt (@value varchar(20))

returns varchar(200)

as

begin

declare @counter int

declare @encr_value nvarchar(200)

declare @position int

set @counter = len(@value)

set @position = 1

set @encr_value = ”


while @counter > 0

begin

set @encr_value = @encr_value + cast (ascii(substring(@value,@position,1)) as varchar)+char(8)

set @counter = @counter -1

set @position = @position + 1

end

return (@encr_value)

end

— bu bir tek çalışırılacak


select dbo.encrypt(customerID)

from customers


— buda ayrı


select dbo.encrypt(‘hasan’)


bunun — decrype tini yapıcaz



create proc prosedür kullanımı

Reuters Canlı İzle Linki




Canlı yayın yapılan bu linkten Taksim’i canlı olarak izleyebilirsiniz. Taksimdeki olayları bu linkten naklen rahatça izleyebilirsiniz.



Reuters Canlı İzle Linki

22 Aralık 2015 Salı

Output kullanımı ve örnekleri

select * from customers


–customerID sini esas alacağız

–o da bize hangi bölümde çalıştığını yani şirket adını göstercek

–output olanlara biz değer atamayız


create proc SirketAdiGetir

@customerID char(10),

@companyName varchar(100) output

as

if exists (select top 1 customerID from customers

where customerID=@customerID)

begin

set @companyName =(select top 1 companyname from customers

where companyname=@companyName)

end

else

set @companyName = ‘Hatalı müşteri kodu…’


declare @sirketAdi varchar(100)

exec SirketAdiGetir ‘ALFKI’,@sirketAdi output


create proc SirketAdiGetir2

@customerID char(10)

as

declare @companyName varchar(100)

if exists (select top 1 customerID from customers

where customerID=@customerID)

begin

set @companyName =(select top 1 companyname from customers

where companyname=@companyName)

end

else

set @companyName = ‘Hatalı müşteri kodu…’


exec SirketAdiGetir2 ‘ALFKI’


–sp yi sp içerisinden çağırcağız


create procedure procTest

@customerID char(10)

as

declare @sirketAdi varchar(100)

exec SirketAdiGetir @customerID,@sirketAdi output


select * from customers where CompanyName like ‘%’+@sirketAdi+’%’

exec procTest ‘ALFKI’


–SirketAdiGetir2 yi tanımaz


create procedure procTest2

@customerID char(10)

as

declare @sirketAdi varchar(100)

set @sirketAdi =(SirketAdiGetir2 @customerID)


select * from customers

where CompanyName like ‘%’+@sirketAdi+’%’


exec procTest ‘ALFKI’

create proc CokluDegerDondurme

@customerID char(10)

as

if exists (select top 1 customerID from customers

where customerID=@customerID)

begin

select top 1 CompanyName,ContactName,Address

from customers

where customerID=@customerID

end

else

select ‘kayıt bulunamadı.’


exec CokluDegerDondurme ‘ALFKI’

–output ile yapılışı


create proc CokluDegerDondurme_output

@customerID char(10),

@companyName varchar(100) output,

@contactName varchar(100) output,

@address varchar (200)output

as

if exists (select top 1 customerID from customers

where customerID=@customerID)

begin

select top 1

@companyName = CompanyName,

@contactName = ContactName,

@address = Address

from customers

where customerID=@customerID

end

else

select ‘kayıt bulunamadı.’

declare @sirketAdi varchar(100),

@kisiAdi varchar(100),@adres varchar(200)


exec CokluDegerDondurme_output ‘ALFKI’,

@sirketAdi output,@kisiAdi output,@adres output



Output kullanımı ve örnekleri

function nedir nasıl kullanılır

–function sp ile aynı işlevi yapar

–function select,from yada where içinde çağırabiliriz

–sp yi çağıramayız arasındaki fark budur


–function olduğundan parantez açıp kapatmak gerekiyor


create function TarihFormatla (

@tarih datetime,

@formatTipi int

)

returns varchar(15)

as

begin

declare @formatliTarih varchar(15)


select @formatliTarih = convert(varchar(15),@tarih,@formatTipi)


return (@formatliTarih)

end

–değerlerini değiştik


alter function TarihFormatla (

@tarih datetime,

@formatTipi int

)

returns varchar(30)

as

begin

declare @formatliTarih varchar(30)


select @formatliTarih = convert(varchar(30),@tarih,@formatTipi)


return (@formatliTarih)

end


select dbo.TarihFormatla(getdate(),104)

select dbo.TarihFormatla(orderdate,104),

dbo.TarihFormatla(requireddate,104),

dbo.TarihFormatla(shippeddate,104)

from orders

— 0-250–>kötü

— 250-500–>orta

— 500-1000–>iyi

— 1000- –>süper


select (Unitprice *Quantity),

case when (Unitprice * Quantity) between 0 and 250 then ‘kötü’

when (Unitprice * Quantity) between 251 and 500 then ‘orta’

when (Unitprice * Quantity) between 501 and 1000 then ‘iyi’

when (Unitprice * Quantity) >1000 then ‘Süper’

end as ‘satış durumu’

from [order details]


–function ile yapılışı


create function dbo.SatisDurumu

(

@unitprice money,

@quantity int

)

returns varchar(50)

as

begin

declare @durum varchar(50)

declare @tutar money

set @tutar = (@unitprice *@quantity)

if (@tutar>=0 and @tutar<=50)

set @durum = ‘kötü’

else if (@tutar >=251 and @tutar<=500)

set @durum = ‘orta’

else if (@tutar >=501 and @tutar<=1000)

set @durum = ‘iyi’

else

set @durum =’süper’

return (@durum)

end

select (unitprice*quantity),dbo.SatisDurumu(unitprice,quantity)

from [order details]



function nedir nasıl kullanılır