Verimli Satır Sayısı

19 Eyl 2008 In: SQL

 

 

 

 

 

 

 

 

SQL uygulamalarında satır sayısı bulmamız gereken durumlar ile karşılaşırız.

Çözümün birden fazla yolu mevcut bize en yakın çözüm olan Count() ifadesi ile tablo içindeki satırların sayısını bulabiliyoruz.

Tabi ki tek çözüm bu değil alternatif bir çözüm daha mevcut.

Bağlı olduğumuz veritabanında yeni bir sorgu oluştururken aşağıdaki SQL ifadesini kullanıp satır sayılarına performans bakımından daha verimli bir sonuç alarak ulaşabiliyoruz.

 

SELECT [TableName] = SO.name,[RowCount] = MAX(SI.rows)
FROM sysobjects SO,sysindexes SI
WHERE SO.xtype = 'U' AND SI.id = OBJECT_ID(SO.name)
GROUP BY SO.name ORDER BY 2 DESC

Kolay Gelsin :)

 

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

http://www.techshout.com/images/microsoft-sql-server-2008-logo.jpg

 

 

 

 

 

 

 

 

SQL Server kullanıcıları özellikle ilk başlarda Remote Connections safhasında çeşitli problemler ile karşılaşıyorlar.

Genelde SQL Serverın TCP/IP tanımlamalarının Local ve Remote için default olarak uygun niteliklerde gelmemesinden dolayı bu tür problemler ile karşılaşma ihtimalimiz yüksektir.

Database engine sekmesinde named pipes only özelliğinin seçili olduğunda da çeşitli problem doğabiliyor.

Biz hem TCP/IP hem de named pipes kullanarak bu problemi aşabiliyoruz.

Biz Local ve Remote bağlantılar için store procedure ve dos prompt ile remote connection konumlandırmasını aktif hale getireceğiz.

Syntax ise şöyle : Exec master..remoteconn protocol,1 or 0

Named pipes aktif hale getirmek için dos prompt olarak sqlcmd -E -S -Q”Exec master..remoteconn np,1 yazarak aktif olacaktır.

Ardından net stop mssql$instancename ve net start mssql$instancename yazarak SQL Server'ı tekrar aktif getirerek uygulamızın sonucunu görebiliyoruz.

 

Tüm bu işlemler için hazırlanmış bir store procedure ile zahmetsizce bu işlemleri gerçekleştirebilirsiniz.

CREATE procedure remoteconn
@val varchar(5),
@enable bit
as
Declare @inspath varchar(10),@regw varchar(100),@ke varchar(100),@ke1 varchar(100)
Declare @insname varchar(25)
if convert(varchar(25),serverproperty('instancename')) is null
set @insname='MSSQLSERVER'
else
set @insname=convert(varchar(25),serverproperty('instancename'))
EXEC master.dbo.xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\Microsoft SQL Server\Instance Names\SQL\',
@value_name=@insname,
@value=@inspath OUTPUT
set @regw='Software\Microsoft\Microsoft SQL Server\'+@inspath+'\MSSQLSERVER\SuperSocketNetLib\'
if @val='np'
begin
set @ke=@regw+@val+'\'
end
else

if @val='tcp'
begin
set
@ke=@regw+@val
end
else

if @val='tcpnp'
begin
set
@ke=@regw+'tcp'
set @ke1=@regw+'np'
if @enable=1
begin
EXEC
master.dbo.xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',
@key=@ke1, @value_name='Enabled', @type='REG_DWORD',@value=1
end
else
begin
EXEC
master.dbo.xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',
@key=@ke1, @value_name='Enabled', @type='REG_DWORD',@value=0
end
end

if @enable=1
begin
EXEC
master.dbo.xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',
@key=@ke, @value_name='Enabled', @type='REG_DWORD',@value=1
end
else
begin

EXEC master.dbo.xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',
@key=@ke, @value_name='Enabled', @type='REG_DWORD',@value=0
end

Kolay Gelsin :)

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

T-SQL Dersleri 2

9 Nis 2008 In: SQL

 

Bu dersimizde SELECT yapısı altındaki ilk dersimizden farklı olarak diğer operatorlere ve yan tümclere değineceğiz.

 

Like ifadesi


Bu ifadeyi genellikle arama koşullarında kullanılıyor.Belirtilen bir anahtara göre arama işlemi gerçekleştirilir Like ifadesiyle olumlu sonuçları eşleştirebiliriz.


SELECT Ad,Soyad FROM Üyeler WHERE Ad LIKE ‘%Ali% ‘


Bu sorguyu çalıştırdığımızda Üyeler tablosundaki Ad sütunu içindeki adında Ali geçenleri listeler.Bu tarz örnekleri geliştirebilmek için aşağıdaki özellikleri kullanabilirsiniz.


%  -> Değişken uzunlukta karakterler
_  -> Tek karakter
[] -> Aralıktaki karakterler
[^] -> Aralıkta olmayan karakter


Mantıksal Operatorler

AND operatoru


Bu operator ile belirtilen koşulların hepsine uyan satırları listelemek için kullanabilirsiniz.

SELECT Ad,Soyad,Yas FROM Üyeler WHERE Ad = “Ali” AND Ad =”Ahmet”


Bu sorguyu çalıştırdığımızda Üyeler tablosundaki adı ali ve Ahmet olan üyeleri listeler.


SELECT Ad,Soyad,Yas FROM Üyeler WHERE Yas >20 AND Ad =”Ahmet”


Bu sorguda ise yaşı 20 den büyük olan ve adı Ahmet olan üyeleri listeler.
Bu örnekleri test edebilmek için kendi veritabanınızı oluşturup benzer tablolalar yaratıp deneyebilirsiniz.Ya da sql server ile gelen northwind veya pubs veritabanlarını kullanabilirsiniz.

OR operatoru


Bu operator ile belirtilen koşulların en az biri gerçekleştiğinde bir sonuç getirir.Kullanım şekli AND operatorundeki gibidir.


SELECT Ad,Soyad FROM Üyeler WHERE Ad =”Ali” OR Yas >20


Bu sorguyu çalıştırdığınızda Üyeler tablosundaki Adı Ali ya da Yaşı 20’den büyük olanları listeler.

IN ifadesi de OR ile aynı anlam taşıyor.


SELECT Ad,Soyad FROM Üyeler WHERE Ad IN (‘Ali’,’Ahmet’)


Sorgusuyla da OR sorgusundaki sonuç lar elde edilebilir.


NOT IN ifadesi ile de IN ifadesindeki işlemin tam tersi gerçekleşir.Belirttiğimiz değere sahip olmayan sonuçları bize gösterir.


SELECT Ad,Soyad FROM Üyeler WHERE Ad NOT IN(Ali,Ahmet)


Adı sütunundaki Ali ve Ahmet değerlerine sahip olmayan değerleri gösterir.

BETWEEN Operatoru


Belirtilen iki değer arasındaki sonuçları göstermek için kullanılır.Bu operator önceden görmüş olduğumuz AND operatoru ile birlikte kullanılır.

SELECT Ad,Soyad,Yas FROM Üyeler WHERE Yas BETWEEN 20 AND 40


Bu sorgu ile yaşsı 20 ile 40 arasındaki üyeleri listemiş oluyoruz.Bu örnekler diğer ifadelerle birleştirilip daha profesyonel bir yapı haline dönüşebilir.Benim sizlere burada anlattığım temel olarak kullanım biçimleridir.Mantığı anlamanız açısında basit örnekler daha kalıcı etki yapacaktır.

Matematiksel Operatorler



+  Toplama
- Çıkarma
* Çarpma
/ Bölme
% Mod

Bu operatorleri sorgularınızda kullanabilirsiniz.Matematiksel işlemlerinizde bunlardan yararlanarak sonuçlara ulaşabilirsiniz.

ORDER BY Yan tümcesi


Bu ifadeyle birlikte satırları sadece belirtilen sütunlar için listeler.Örneğin üyelerin 1 den başlayarak listelenmesi gibi.ASC,artarak giden sonuçları ve DESC ise azalarak giden sonuçları gösterir.


SELECT Ad,Soyad,Yas,  FROM Üyeler ORDER BY Yas DESC


Bu sorguyla Üyeler tablosundan Yaşı azalarak giden üyeleri listelersiniz.

Count Fonksiyonu


Bu fonksiyon ile bir sütundaki satır sayısını öğrenebilirsiniz.Üyeler tablosunundaki kullanıcı bilgilerinden Ad sütununu Count kullanarak listelersek kayıtlı olan üye sayısına ulaşabiliriz.


SELECT COUNT(Ad) FROM Üyeler


Üyeler tablosundaki Ad sütununa ait değerleri döndürür ve ekrana satır sayısını verir.

Count Distinct ifadesi ile benzersiz olan sonuçları öğrenebilirsiniz.


SELECT COUNT (DISTINCT Ad) FROM Üyeler


Bu sonuç bize adı farklı olan kişilerin sayısını verir.Birden fazla aynı isimli kullanıcı varsa sadece bir tanesi kabul edilir.Diğerleri göz önüne alınmaz.Distinct ifade Count dışında da kullanılır.Benzersiz kayıtları listelemek istediğinizde kullanabilirsiniz.


SELECT DISTINCT Ad FROM Üyeler



Sorgusu ile Üyeler tablosundaki Adları listeler ama benzer adlardan sadece birini kabul eder .Örneğin 100 tane ali adı varsa ali adı 1 olarak kabul edilir.

 

 

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

T-SQL Dersleri 1

26 Mar 2008 In: SQL
Transact-SQL hakkında zaman buldukça burada hazırladığım dersleri paylaşacağım.Her türlü soru ve görüşlerinizi paylaşabilirsiniz.İlk ders olarak DML (Data Manipulation Language ) hakkında bilgiler vereceğim.


Transact-SQL Nedir ?

T-SQL olarak kısaltılan ve veri ve sorgu işlemlerini gerçekleştirebileceğiniz.Tüm verilere erişebileceğiniz,ekleme,çıkarma,güncelleme gibi işlemler yapabileceğiniz bir sorgu dilidir.Mysql,MSsql gibi dillerle ortak komut kullanımlarına sahiptir.Bu dilde öğreneceğiniz komutları tüm veritabanı yapılarında ortak olarak kullanabileceksiniz.

SELECT Kullanımı


Select ifadesini bir veritabanındaki verileri çekmek için kullanılır.Örnek vermek gerekirse bir haber tablosundaki haberlerin listelenmesi gibi bir mantığa sahiptir.

SELECT <sütun adı> FROM <tablo adı>
şeklinde kullanılır.

SQL Server 2005 kullanıyorsanız Northwind veritabanını seçip SELECT ifadesinin kullanımı kolay test edebilirsiniz.
SELECT ifadesi kullanımında sütun adı yerine * ifadesi kullanılırsa o tablodaki tüm sütunları görüntülemiş olursunuz ancak bunu daha gelişmiş projelerde kullanmamaya özen gösterin mümkün olduğun sütun (column) adlarını mutlaka kendiniz belirterek işlem yaptırmaya özen gösterin.


SELECT ID,Baslik FROM Haberler
komutu ile haberler tablosundaki ID ve Baslik sütunlarına ait bilgileri çekmiş olursunuz.

SQL Server Management Studio aıp New Query olarak tanımlayıp bu işlemleri test edebilirsiniz.

Sizlerde aşağıdaki sorguyu Northwind veritabanında deneyebilirsiniz.

USE northwind
SELECT firstname,lastname
FROM employees


Ben kendi oluşturduğum netkabus adındaki bir veritabanında Name,Surname ve No sütunlarını users adlı tablodan çekilmesini gösterdim.



Use netkabus

SELECT Name,Surname,No FROM Users


WHERE Kullanım

Kullanım amacı belirli bir kritere göre SELECT ifadesinde kullandığınız verileri listeler.Örnek kullanım şekli şöyledir;

SELECT <sütun adı>  FROM  <tablo adı> WHERE <koşul>
şeklinde kullanabilirsiniz.

SELECT firstname FROM employees WHERE Country = ‘Canada’
gibi Canada ülkesinde olan ve employees tablosunda bulunan kişilerin firstname bilgilerini listelemiş olursunuz.
WHERE yantümcesi bizlere büyük kolaylıklar sağlıyor.Çoğu koşul ifadesinde WHERE yantümcesini kullanacaksınız.WHERE yantümcesini aşağıdaki koşullardaki gibi kullanabilirsiniz.


=  Eşittir
!= Eşit Değildir
< Küçüktür
> Büyüktür
<= Küçük veya Eşittir
>= Büyük veya Eşittir



SELECT Name FROM Users WHERE ID > = 1000

sorgusunda ID ‘si 1000’den büyük veya eşit olanların Name sütunundaki verileri listeler.Diğer örnek kullanımları isteğinize göre kullanabilir ve kendi veritabanlarınızda test edebilirsiniz.

Gelecek derste görüşmek dileğiyle.Sorularınızı bekliyorum. 

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Blog'dan

Biraz yazılım,biraz güvenlik,biraz da hayattan karalamalar ...


İletişim: ok@olcaykuk.com