Veritabanları, günümüzde bilgi depolamanın temel yapı taşlarından biri haline geldi. Büyük veri hacimlerini düzenli bir şekilde yönetmek ve gerektiğinde hızlı erişim sağlamak, işletmelerin etkinliği için kritik önem taşıyor. Veri tabanlarını yönetmek için kullanılan SQL (Structured Query Language – Yapılandırılmış Sorgu Dili), veri işleme ve yönetme süreçlerinde temel bir role sahip.
SQL sorguları, veritabanları üzerinde çeşitli işlemleri gerçekleştirmek için kullanılır. Veri ekleme, veri güncelleme, veri silme ve veri sorgulama gibi temel veritabanı işlemleri, SQL’in fonksiyonel yapısı sayesinde gerçekleştirilir. Özellikle büyük ölçekli sistemlerde, veri tabanlarını etkin bir şekilde yönetebilmek için optimize edilmiş SQL sorguları kullanmak büyük önem taşır.
SQL sorgularının doğru ve etkin bir şekilde yazılması, performansın yanı sıra veri bütünlüğünü de sağlar. İyi tasarlanmış bir sorgu, veri tabanının hızlı çalışmasını ve gereksiz yere kaynak tüketimini önler. Aynı zamanda, veri tabanı yöneticilerinin ve veri analistlerinin veriye daha kolay ve verimli bir şekilde erişmesini sağlar.
SQL sorguları, farklı veritabanı sistemlerinde de kullanılabilir. Bu da yazılımcıların ve veri uzmanlarının farklı platformlarda aynı dil yapısını kullanarak çalışmasına imkan tanır. Bu da veri yönetimi süreçlerinde esneklik ve standartlaştırma sağlar.
SQL Server’daki sistem tablolarından bazı bilgileri çekmeye yönelik bir içerik hazırladık. Bu SQL sorgusu, SQL Server’daki sistem tablolarından bazı bilgileri çekmeyi hedeflemek amacıyla yazılmıştır. SQL Server’daki kullanıcı tablolarının adını, kayıt sayısını, fiziksel boyutunu, oluşturulma ve son güncelleme tarihlerini ve bu tabloların indeks sayısını gösterecek örnek çalışma yapacağız. Öncelikle kodumuzun tamamını yazıp daha sonra adım adım neler yaptığını açıklayacağız
Kodumuz:
SELECT
t.name AS TABLO_ADI,
SUM(p.rows) AS KAYIT_SAYISI,
SUM(a.total_pages) * 8 AS FIZIKSEL_BOYUT_KB,
t.create_date AS OLUSTURULMA_TARIHI,
t.modify_date AS SON_GUNCELLEME_TARIHI,
COUNT(i.index_id) AS INDEKS_SAYISIFROM
sys.tables t
INNER JOIN
sys.partitions p ON t.object_id = p.object_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT JOIN
sys.indexes i ON t.object_id = i.object_id
WHERE
t.type_desc = ‘USER_TABLE’
GROUP BY
t.name, t.create_date, t.modify_date
ORDER BY
KAYIT_SAYISI DESC;
Şimdi adım adım bu sorgunun ne yaptığına bir göz atalım:
Kodu adım adım inceleyelim:
SELECT
: Sorgu sonucunda hangi sütunların gösterileceğini belirtir.t.name AS TABLO_ADI
:sys.tables
tablo isimleriniTABLO_ADI
olarak adlandırır.SUM(p.rows) AS KAYIT_SAYISI
:sys.partitions
her bir tablodaki toplam kayıt sayısınıKAYIT_SAYISI
olarak adlandırır.SUM(a.total_pages) * 8 AS FIZIKSEL_BOYUT_KB
: Fiziksel boyutu kilobyte cinsinden hesaplar veFIZIKSEL_BOYUT_KB
olarak adlandırır.t.create_date AS OLUSTURULMA_TARIHI
: Her bir tablonun oluşturulma tarihiniOLUSTURULMA_TARIHI
olarak adlandırır.t.modify_date AS SON_GUNCELLEME_TARIHI
: Her bir tablonun son güncellenme tarihiniSON_GUNCELLEME_TARIHI
olarak adlandırır.COUNT(i.index_id) AS INDEKS_SAYISI
: Tablolardaki indeks sayısınıINDEKS_SAYISI
olarak adlandırır.
FROM
: Hangi tabloların kullanılacağını belirtir.sys.tables t
: Tablo bilgilerini içerensys.tables
içeriğinit
olarak adlandırır.INNER JOIN sys.partitions p ON t.object_id = p.object_id
:sys.tables
vesys.partitions
arasındaobject_id
ile birleştirme yapar.INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
:sys.partitions
vesys.allocation_units
arasındapartition_id
ile birleştirme yapar.LEFT JOIN sys.indexes i ON t.object_id = i.object_id
:sys.tables
vesys.indexes
arasındaobject_id
ile birleştirme yapar.
WHERE
: Hangi koşulların geçerli olacağını belirtir.t.type_desc = 'USER_TABLE'
: SadeceUSER_TABLE
tipindeki tabloları filtreler.
GROUP BY
: Hangi sütunların gruplanacağını belirtir.t.name, t.create_date, t.modify_date
:TABLO_ADI
,OLUSTURULMA_TARIHI
veSON_GUNCELLEME_TARIHI
‘ne göre gruplar.
ORDER BY
: Sonuçların nasıl sıralanacağını belirtir.KAYIT_SAYISI DESC
:KAYIT_SAYISI
‘na göre azalan sırada sıralama yapar.
Bu analizde, veritabanları ve SQL sorgularının önemine dair temel bilgileri inceledik. Veritabanları, günümüzde bilgi depolamanın temel yapı taşlarından biri olup, büyük veri hacimlerini etkili bir şekilde yönetmek ve hızlı erişim sağlamak işletmeler için kritik bir unsurdur. İyi tasarlanmış SQL sorguları, performansın yanı sıra veri bütünlüğünü de sağlayarak veritabanlarının etkin bir şekilde çalışmasını sağlar.
SQL Server’daki sistem tablolarından bilgi çekmeye yönelik örnek bir SQL sorgusu üzerinden adım adım bir analiz gerçekleştirdik. Bu analiz, SQL sorgularının nasıl yapılandırıldığını ve hangi verileri çektiğini anlamak açısından faydalı bir örnek sundu.
Veritabanları ve SQL sorguları, günümüz teknolojisinin vazgeçilmez bir parçası olarak iş dünyasında önemli bir rol oynamaya devam ediyor. Bu temel bilgiler, veri yönetimi ve bilgi depolama konularında çalışan profesyonellerin etkili ve verimli çözümler üretmelerine katkı sağlar.