SQL, verileri yönetmek ve tasarlamak için kullanılan bir veritabanı yönetim sistemidir. SQL, kendisi bir programlama dili olmamasına rağmen birçok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında kullanılan bir alt dildir. SQL ile yalnızca veri tabanı üzerinde işlem yapılabilir. SQL’e özgü cümleler kullanarak veri tabanına kayıt eklenebilir, olan kayıtlar değiştirilebilir, silinebilir ve bu kayıtlardan listeler oluşturulabilir.
SQL Server bir ilişkisel veritabanı yönetim sistemidir (RDBMS: Relational database management system). SQL Server:
• Veri işleme ve analiz için saklanan veri yığınlarını yönetebilir.
• Client uygulamalarından gelen isteklere cevap verebilir.
• SQL Server ve clientlar arasında veri göndermek için T-Sql (Transact SQL), XML, MDX veya SQL-DMO kullanabilir.
SQL Server Windows Server 2008, Windows Vista, Windows 2003 Server, Windows XP Professional, Windows 2000 Server, Windows 2000 Professional, Windows NT 4.0 sistemleri üzerinde çalıştırılabilen istemci/sunucu (client/server) tabanlı bir ilişkisel veritabanı yönetim sistemidir.
SQL Server 2008 veritabanlarının grafiksel arayüzden yönetimi ve SQL Server 2008 ile Transact-SQL kodları geliştirmek için SQL server 2008 Management studio’yu kullaniyoruz.

SQL Server Management studio yu açtığımızda karşımıza Connect To Server ekranı gelir. Buradaki öğeleri tanıtacak olursak:
Server Type: Bağlanmak istediğiniz SQL Servis tipini seçebilirsiniz. Biz SQL Server veritabanı sistemine bağlanacağımız için, Database Engine bileşenini seçiyoruz.
Server Name: Bağlanacağınız SQL Server Instance adı yazılır. SQL Server kurulumunda SQL Server kurulumunu yaparken Default Instance seçeneğini seçtiyseniz, SQL Server kurulu bilgisayarın adı otomatik gelecektir veya kendiniz de yazabilirsiniz, ya da Browse seçeneği ile gelen pencereden de server adını seçebilirsiniz.
Authentication : SQL Server bağlantısını yaparken kullanacağınız kimlik doğrulama yöntemi seçilir. Burada sahip olduğunuz SQL hesabına göre ilgili kimlik doğrulama yöntemini seçmeniz gerekir.
Bilgileri girdikten sonra, connect diyoruz ve karşımıza Management studio ekranı gelir.

Hazır ekranımız açıkken biraz veritabanı işlemlerine göz atalım, ne dersiniz
Veritabanı Oluşturmak
SQL Management Studio içerisinde Databases öğesi üzerinde sağ tuş -> New Database ile oluşturulur.

Gelen ekranda Database Name kısmına veritabanı adını veriyoruz. Owner kısmında veritabanın sahibi olacak kişi atanabilir. Default olarak veritabanıyı açan kişi veritabanı sahibidir. Hemen altında Database Files kısmında veritabanı ve log dosyası otomatik olarak oluşacaktır. Burada Initial Size : Başlangıç boyutunu belirlemek için ve Autogrowth: Büyüme oranı ve maksimum dosya boyutu değelerini ayarlayabilirsiniz.

Autogrowth yanındaki üç nokta butonuna tıklanınca yukarıdaki şekilde görülen görünecektir. Burada Enable Autogrowth ile veritabanı dosyasının Initial Size boyutu dolduğunda otomatik olarak dosyanın kendi kendini büyütmesi aktifleştirilir. File Growth kısmından bu büyümenin yüzde olarak mı (In Percent) yoksa MB olarak mı (In Megabytes) olacağı belirlenir. Maximum File Size ile de veritabanı dosyası için maksimum boyut belirlenir. Herhangi bir maksimum dosya boyutu limit uygulamayacaksanız, şekilde de olduğu gibi Unrestricted File Growth seçilir. Otomatik büyüme ayarlarını Log dosyası için de ayrıca benzer şekilde yapılabilir.
Path sütununda veritabanı ya da log dosyasının depolanacağı konum belirlenir.
Options kısmından veritabanı özellikleri ayarlanabilir. Veritabanı ayarlarını, veritabanını oluşturduktan sonrada üzerine sağ tıklayıp-> Properties den ulaşabilirsiniz.

Oluşan veritabanını silmek için, veritabanı üzerinde sağ tuşa basılıp Delete seçeneğine tıklanır.
Oluşan veritabanının adını Management Studio içerisinden artık değiştirebiliyoruz. (Bu SQL 2000 de mümkün değildi.) Bunun için veritabanı üzerinde sağ tuş Rename ile gerçekleştirilebilir.
T-SQL
SQL Server üzerinde bulunan belli işlemleri gerçekleştirmek için oluşturulmuş ve derlenmiş T-SQL ifadelerdir. Standart SQL ’de döngü ifadeleri, şart ifadeleri gibi programlanabilme özelliğine sahip terimler yoktur. Fakat T-SQL gibi özelleştirilmiş araçlar bu özellikler mevcuttur. Bu yapılar veritabanında ilk çalıştıklarında derlenirler ve sonraki kullanımlarında bir daha derlenmedikleri için hızlı çalışırlar ve performanıs artırırlar.
T-SQL de çalıştıracağımız komutlar 3 kategoriye ayrılırlar:
-Data Manipulation Language(DML) – Veri düzenleme ile ilgili işlemleri yapabileceğimiz komutları içerir.
DML Komutlar:
•Select – Veri/Verileri seçmek
•Insert – Yeni veri eklemek
•Delete – Var olan veriyi silmek
•Update – Var olan veriyi güncellemek
-Data Definition Language(DDL) – Verilerin saklandığı yapıların (tabloların) tanımlandığı ve düzenlendiği komutları içerir.
DDL Komutlar:
•Create – Yeni bir Veritabanı(Database), Tablo(Table), İndeks(Index), Veri Tipi(Type), View(View), Stored Procedure-Saklı Yordam(Procedure), Fonksiyon(Function), Trigger-Tetikleyici(Trigger) vb. gibi oluşturabileceğimiz komuttur.
•Alter – Daha önce oluşturulmuş bir veritabanı nesnesinin(database objects) üzerinde değişiklik yapmamızı sağlayacak komuttur.
•Drop - Daha önce oluşturulmuş veritabanı nesnesini kaldırmak için kullanılan komuttur.
-Data Control Language(DCL) – Verilere ulaşırken, kimin-neye yetkisi olduğunu belirlemekte kullanılacak komutları içerir.
DCL Komutlar:
•Grant - Yetki vermek için kullandığımız komuttur.
•Deny – Kullanıcı, grup veya rolü bir eylem için engeller.
•Revoke – Belirtilmiş olan yetkiyi ya da engeli kaldırır.
Transact-SQL İle Veritabanı Oluşturmak

DETAYLİ BİLGİLERLE VERİTABANİ OLUŞTURMAK

VERITABANI HAKKINDA BILGI ALMAK
exec ifadesi execute’in kısaltılması. sp ise store procedure (saklı yordam)kısaltılması. Tek komutla toplu işlemler yapılabilir bu sayede. sp_helpdb ise kendinden sonra belirtilen veritabanı hakkında bilgi görüntüler:

Veritabanları hakkında bilgi alabilmek için, hakkında bilgi almak istediğimiz herhangi bir veritabanını seçtikten sonra, aşağıdaki komutla bilgi edinebiliriz. Veritabanının mevcüt olup olmadığı ile ilgili ve buna ek olarak bazı diğer bilgiler (Resimde görebilirsiniz).

VERİTABANI DOSYASININ ÖZELLİĞİNİ DEĞİŞTİRMEK

T-SQL komutlarıyla birçok işlem yapabilir, ve işlerimizi komutlarla sadeleştirebiliriz. Basit bir örnekle şu şekilde göstereyim: Eğer Jamshid adlı veritabanı varsa, silecek ve yerine JamshidH adına bir veritabanı oluşturduktan sonra, silindi mesajından sonra bilgileri ekrana gösterecek.

Aşağıdaki komutlarıda ayni şekilde uygulayabilirsiniz:
VERİTABANI DOSYASININ ÖZELLİĞİNİ DEĞİŞTİRMEK
ALTER DATABASE Jamshid
MODIFY FILE (NAME=’Jamshid_DATA’, MAXSIZE=500MB) –Jamshid_DATA dosyasının maksimum dosya boyutunu 500 MB olarak ayarlar
VERİTABANI ADINI DEĞİŞTİRMEK
exec sp_renamedb ’Jamshid’,’JamshidH’ –Jamshid isimli veritabanı adını JamshidH olarak değiştirir
VERİTABANINDA KULLANILMAYAN ALANLARIN BOŞALTILARAK DOSYA BOYUTUNUN DÜŞÜRÜLMESİ
Dbcc shrinkdatabase (Jamshid,10) –maya2005 veritabanını %10 küçültür.
VERI FİLTRELEME
Verilerinizi Where ifadesinden sonra kullanacağınız bazı koşullar ile filtreleyebilirsiniz. Bu koşullar şunlardır;
• Karşılaştırma operatörleri =, >, <, >=, <=, <>
• String karşılaştırmalar LIKE ve NOT LIKE
• Lojik operatörler AND, OR
• Lojik operatörler (Negatif) NOT
• Değer aralıkları BETWEEN ve NOT BETWEEN
• Değer listeleri IN ve NOT IN
• Bilinmeyen değerler IS NULL ve IS NOT NULL
Bunları bazılarını detaylıca inceleyim:
STRİNG KARŞILAŞTIRMALARIN KULLANIMI
% 0 veya daha fazla karakterli string
_ tek bir karakter
[] belirtilenler arasından tek bir karakter
[^] belirtilenler arasında olmayan tek bir karakter
Bu wildcarların LIKE ile kullanım örnekleri aşağıdaki gibidir;
LIKE ‘BR%’ BR ile başlayan tüm isimler
LIKE ‘Br%’ Br ile başlayan tüm isimler. Büyük küçük harf farkı
LIKE ‘%een’ een ile biten tüm isimler
LIKE ‘%en%’ en karakterlerini içeren tüm isimler
LIKE ‘_en’ en ile biten tüm 3 karakterli isimler
LIKE ‘[CK]%’ C veya K ile başlayan tüm isimler
LIKE ‘[S-V]ing’ Tüm 4 karakterli ve ilk karakteri S ile V arasında olan ve ing ile biten tüm isimler
LIKE ‘M[^c]%’M ile başlayan ve ikinci karakteri c olmayan tüm isimler
ÖRN : SELECT companyname FROM customers
WHERE companyname LIKE ’%Restaurant%’
DEĞER ARALIKLARI
BETWEEN ifadesini Where ile beraber kullanarak belli bir değer aralığındaki kayıtları getirebiliriz. Between ifadesi ile belirlenen aralık dışında kalan verileri almak için NOT BETWEEN kullanabiliriz.
ÖRN:
SELECT productname, unitprice
FROM products
WHERE unitprice BETWEEN 10 AND 20
DEĞER LİSTELERİ
Verilen bir liste içerisinde yer alan veya almayan değerleri içeren kayıtları getirir. Listede yer alanları aramak için IN, yer almayanları aramak için NOT IN ifadelerini kullanırız. Birden fazla koşulu OR ile de ayırabiliriz veya IN ile bir liste içerisinde arayabiliriz. İkisinide SQL aynı şekilde çözümler.
ÖRN :
SELECT companyname, country
FROM suppliers
WHERE country IN (’Japan’,’Italy’)
SYSTEM VERİTABANLARI
1- Master: SQL Server ile alakalı server – level bilgileri tutar.
2- Model: Model DB si SQL Server da yeni oluşturulacak DB lerin template idir. Msdb üzerinde database size,collation,recovery model gibi bilgiler değiştirilerek yeni oluşturulan her DB nin bu bilgiler ile oluşturulması sağlanabilir.
3- Tempdb: TempDB temporary objeleri tutar.
4- Msdb: SQL Server Agent tarafından kullanılan bu db; alert ve job lar ile ilgili bilgileri tutar.
5- Resource: SQL Server sistem objelerini tutan Resource DB bir read-only DB dir. Sistem objeleri fiziksel olarak resource db de tutulurken mantıksal olarak her DB nin içerisinde gösterilir.
İpucu : Management studioda T-SQL olarak Query ekraninda birçok kod yazdınız. Bu kodların arasından o anda sadece bir kısmının çalıştırmasını istiyorsunuz; bunun için o kısmı seçili hale getirdikten sonra F5 yaptıktan sonra sadece o kısmı çalıştırmış olursunuz.
VIEW
View; kısaca depolanmış query denilebilir.
View kullanımının Faydaları
1) Performans
2) Column Level Security
3) Database complexitysini düşürür
4) Network trafiğini engeller
STORED PROCEDURES
Transact-SQL (T-SQL) Stored Procedure, Microsoft SQL Server üzerinde barındırılan, T-SQL komutları ile hazırladığınız işlemler bütününün çalıştırılma anında derlenmesi ile size bir sonuç üreten SQL Server bileşenidir.
Storeprocedure ler default olarak geriye int deger donerler . Storeprocedure içerisinden metinsel bir deger dondurmek istersek bunu output ifadesi ile procedure umuze belirtmeliyiz.
Yazılan stored procedure lerin çalışması ve sonuç döndürmesi için geçilen aşamalar şunlardır:
Parse : syntax hatası var mı yok mu kontrolu
Resolve : Sorgu içerisinde alanlar yani kolonlarım var mı yok mu kontrolu
Optimize : Sorgumuz en hızlı sekilde nasıl calısır .
Complite : Kodumuzun derlenmesi
Execution : İlgili kod calısır .
TRANSACTION
Transaction, özet olarak daha küçük parçalara ayrılamayan işlem demektir. Özellike bir grup işlemin arka arkaya gerçekleşiyor olmasına rağmen, seri işlemler halinde ele alınması gerktiğinde kullanılır. Transaction bloğu içerisindeki işlemlerin tamamı gerçekleşinceye kadar hepsi gerçekleşmemiş varsayılır.
SQL Server 3 farklı transaction desteği sağlar:
1. Harici(Explicit) Transaction: SQL Server’in kullanıcı tarafından bir BEGIN TRAN ifadesi ile transaction’a başlatılması şeklindeki bloktur. Bir aksilik olması halinde SQL Server tarafından veya kullanıcı tarafından COMMIT ifadesi ile gerçekleşmiş olarak veya ROLLBACK ifadesi ile hiç olmamış olarak sonlandırlabilir.
2.Dahili(Implict) Transaction: SQL Server’in belli ifadelerden sonra otomatik olarak transaction açmasını sağlar. Bu modda, bu belli ifadeler kullanıldıktan sonra, kullanıcı tarafından transaction’ın sonlandırılması gerekir. Bu nedenle zahmetli bir mod’dur.
3.Auto Commit: Hiç bir transaction mod’u tayin edilmedi ise, SQL Server bu modda çalışır. Auto Commit modunda iken, her bir batch(yığın, Query Analyzer için iki go arasındaki ifade veya bir defada çalıştırılan bütün SQL ifadeleri) bir transaction bloğu olarak ele alınır. Batch içerisinde bir sorun olursa, SQL Server otomatik olarak bütün batch’i geri alır(ROLLBACK eder).
SQL SERVER DATA REPLICATION (VERİ YİNELEME)
SQL Server’in sürekli kullanılabilirlik için desteklediği işlemlerden biri de replication modelidir. Replication kısaca verileri merkezi konumdan alıp farklı konumlarda yedekleme işlemidir.
Replikasyon Türleri
Snapshot Replication: Static replication olarak ta bilinen Snapshot Replication en basit replikasyon türü olup her defasında kaynak veritanındaki tüm verileri bağlı abonelere toplu olarak yükler. Snapshot replication’da daha önce abonelere hangi verilerin gönderildiğine bakılmaz. Bütün verilerinin taşıması söz konusu olduğu için ve şayet verilerinin boyutu büyükse zaman ve kaynak maliyetine sebep olabilmektedir.
Transactional Replication: Dynamic replication olarak ta bilinen bu yöntem Snapshot Replication’tan farklı olarak incremental modele sahiptir yani sadece son yapılmış replikasyon işleminden bu yana gerçekleşmiş değişiklikleri üye veritabanlarına adım adım yansıtır. Bunu da merkezi veritabanındaki log dosyasını dinleyerek gerçekleştirir. Değişiklikler üyelere gerçek zamanlı gönderilebildiği gibi belli peryotlarda da gönderilebilir. Bu yöntem çok yoğun transaction işlemlerinin yapıldığı sistemlerde tercih edilir.
Merge Replication: Transactional Replication gibi incremental özelliğe sahip olan bu yöntem çift yönlü bir replikasyon sunar yani hem publisher tarafındaki değişikliği subscriber’a yansıtır hem de subscriber tarafındaki değişikliği publisher’a yansıtır. Transactional’dan farklı olarak bir veri üzerindeki tüm değişiklikleri değil sadece son değişikliği karşı tarafa gönderir. Örneğin bir kayıt üzerinde 5 kere düzenleme yapıldıysa Transactional Replication’da bu 5 günceleme de karşı tarafa yansıtılır fakat Merge Replication’da sadece son güncelleme gönderilir.
FONKSİYONLAR
Sql fonksiyonları, kullanımı ve yararlığı nedeninden ötürü önem arz etmekte ve yaygın olarak kullanılmaktadır.
Örnek yapacak olursak :
CREATE FUNCTION whichContinent
(@Country nvarchar(15))
RETURNS varchar(30)
AS
BEGIN
declare @Return varchar(30)
select @return = case @Country
when ’Argentina’ then ’South America’
when ’Belgium’ then ’Europe’
when ’Brazil’ then ’South America’
when ’Canada’ then ’North America’
when ’Denmark’ then ’Europe’
when ’Finland’ then ’Europe’
when ’France’ then ’Europe’
else ’Unknown’
end
return @return
end
fonksiyonumuzu yazdık. Şimdi çalıştıralım :
print dbo.WhichContinent(’USA’)
SQL SERVER YEDEKLEME
1) Full Backup (Tam yedekleme) : Veri tabanının o andaki tüm yedeğinin alındığı yedekleme şeklidir. Bu yedekleme türünden geri dönmek için tüm backup dosyasını restore etmemiz yeterlidir. Fulll backup alındığı zaman o anda onaylanmamış transactionlar da yedeklenir.
2) Differential Backup (Fark yedeği) : En son alınmış olan full backuptan bu yana değişmiş kayıtların alındığı yedekleme şeklidir. Bu yedekleme türünü kullanabilmek için daha önce bir full backup almış olmak gerekir. Differential backup yöntemi, full backup yöntemine göre daha hızlı ve kısa sürede gerçekleştiği için daha çok büyük veri tabanlarında tercih edilir. Bu yedekleme türünden geri dönmek için öncelikle ilk başta alınmış full backup restore edilir ardından alınmış differential backup restore edilir. Differential backup yönteminde full backup’tan sonra bir nesne üzerinde birçok kez değişiklik yapılmışsa differential backup, o nesnenin son değerini içerir.
3) Transaction Log Backup (İşlem günlüğü yedekleme) : Veri tabanındaki tüm değişiklikleri yedeklemek için kullanılır. Bu yedekleme türünü de kullanmak için daha önce en azından bir kere full backup alınmış olması gerekir. Transaction Log backup yönteminin en önemli özelliği belli bir andaki değişikliğe geri dönülmesini desteklemesidir. “BACKUP LOG” komutu kullanılır.
MSSQL TRIGGER & KULLANIMI
Tanım : Tablo üzerinde yapılan insert, update ve delete işlemleri öncesinde veya sonrasında ek işlemler yapmamıza olanak sağlayan (Aynı veya başka bir tabloya kayıt eklemek, kayıt silmek gibi) veya yapılan işlemi (insert, update, delete) kontrol etmemize duruma göre işlemi iptal etmemize yarayan özel stored prosedürleri trigger olarak tanımlayabiliriz.
Triggerlar çalışma şekli açısından transaction ile benzerlik gösterir.
Herhangi bir tablo üzerine trigger tanımladığımız zaman tabloya gönderilen komutlar (insert, update, delete) işletilmeden önce bir transaction başlar. Daha sonra tabloya gönderilen komut işletilir. Üçüncü olarak trigger içerisine yazdığımız komutlar çalıştırılır. Son olarak yapılan işlem geçerli ise transaction commit olur, işlem geçersiz bulunursa RollBack Transaction ile yapılan işlemler iptal edilir.
Bir sonraki makalede görüşmek üzere
Share on Facebook
Recent Comments