Archive for Ekim 2014

SQL ile Veritabanına Giris

Veri Nedir?
Veri tabanı (Database) kavramına girmeden önce veriyi kısaca tanımlamak önemlidir. Veri, (data) bir veya birden fazla bilgiden oluşan bir kümedir. İsim, yaş, telefon numarası, bir toplama işleminin sonucu ya da bir sınıfın yaş ortalaması birer veridir. Bir veritabanı yapısı içerisinde tutulan bilgilere veri denilmektedir. Bilgisayar ortamına aktarılan, işlenmemiş (ham) bilgiler de veri olarak adlandırılabilir. Bilgisayara girilen, bilgisayar tarafından saklanabilen ve işlenebilen herşeye veri denir.
Veri Neden Saklanır?
Veri saklamaktaki ana amaç, daha ileri bir tarihte saklanan verilere yeniden ulaşabilmek ve kullanabilmektir. Kullanma süreci sadece verinin listelenmesi gibi basit bir işlem olabileceği gibi, veriler üzerinden hesaplamalar yapılarak raporlar hazırlanması gibi daha karmaşık bir işlem de olabilir. Şimdi sıra geldi veriyi nasıl saklayabileceğimizi öğrenmeye.
Veri Saklama Yöntemleri
Verileri saklamak için çeşitli ortamları tercih etmek mümkündür. Verilerin klasik yöntem ile kalem kullanarak bir dosya kağıdına satır satır yazılması da bir veri saklama yöntemidir, bilgisayar üzerinde notepad kullanarak metin tabanlı basit bir dosyada depolanması da bir veri saklama yöntemidir. Daha düzenli ve detaylı bir şekilde veri saklamamızı sağlayacak yöntemler arasında, tablo yapısında veri saklamamızı sağlayan Excel ve Access gösterilebilir. Veri saklama işlemini bir örnek ile detaylandıralım:
Bakkal ve marketlerde veresiye satış yapıldığında müşterinin aldığı ürünlerin adı, miktarı, fiyatı gibi bilgiler bir veresiye defteri içerisinde müşteriye ait bir sayfada saklanır. Bu şekilde bakkalın sahibi, gerektiğinde ilgili müşterinin sayfasını açıp hangi ürünlerden ne kadar miktarda aldığını ve borç toplamının ne kadar olduğunu hesaplayabilir. Fakat verinin bu şekilde saklanması birçok açıdan kötü sonuçlara yol açabilir. Verilerin kâğıttan yapılmış bir defterde tutulması düzensizliklere ve karışıklıklara yol açabileceği gibi yırtılma, ıslanma, kaybolma gibi veri kaybına sebep olabilecek risklere de açıktır. O zaman gelin biz bu defterdeki verileri bilgisayar ortamında saklayalım. Bilgisayarımızda veresiye adında bir klasör oluşturalım. Bu klasör içerisine Notepad gibi bir metin editörü ile her müşterimiz için bir metin dosyası açalım. Açtığımız dosyaların adlarına, daha sonra kolay bir şekilde ulaşabilmek için bir numara verelim. (Örneğin Ahmet isimli müşterimiz için 302 numarasını verelim) Bu metin dosyasından faydalanarak, defterde tuttuğumuz verileri daha düzenli bir şekilde saklayabiliriz. Bu bilgileri düzenli bir şekilde kaydedip, yedekleyerek başımıza gelebilecek veri kayıplarını da en aza indirebiliriz.
İkinci senaryomuz, yani verileri bilgisayarda saklamamız ilk senaryodaki veresiye defterine göre elbette ki daha esnek, hızlı ve sağlıklı bir yöntem olacaktır. Fakat bir metin dosyası üzerinde girilen verilere müdahale etme şansımız pek olmayacaktır. Örneğin ücret bilgisinin yazılacağı alana 40, 40,5 veya kırk gibi farklı tipte veriler girilebilir ya da ücret kısmı boş bırakılabilir. Bu şekilde kaydedilen bir dosyanın daha sonra bazı karışıklıklara yol açabilme riski yüksektir. Peki, bu bilgiler üzerine yeni veri eklemek, istediğimiz kıstaslara göre veri seçmek, var olan veriyi değiştirmek veya veriler üzerinde işlemler yapmak istediğimizde çok iyi sonuçlara ulaşabilir miyiz? Elbette ki bu tip işlemleri metin dosyası üzerinde yapmamız biraz olsun işimizi kolaylaştıracaktır. Fakat “Daha iyi bir yol olabilir mi?” diye düşünecek olursak cevabı kesinlikle “Evet” olacaktır.

Veri tabanı (Database) temel olarak farklı tiplerdeki verileri düzenli bir şekilde saklamamızı ve kullanmamızı sağlayan depolama ortamıdır. Bu ortam içerisinde verileri saklayabilir, onlara kolay bir şekilde ulaşabilir ve gerektiğinde bu verilerin üzerinde değişiklikler yapabiliriz. Veri tabanı, veriler arasında bütünlük ve düzen sağlarken, veriye hızlı erişim ve bakım kolaylığı da sunar. Bu sistemin kullanılması sonucu veriyi hatasız ve sağlıklı bir biçimde işlemek de kolaylaşır.
Bir veri tabanı sistemi üzerinde istediğimiz verileri depolayabilir, depolanan verileri çağırırken bazı şartlar belirtebilir, verileri değiştirebilir veya silebiliriz. İlerleyen konularda öğreneceğimiz T-SQL dili ile aşağıdaki örnekleri çok basit bir şekilde gerçekleştirebileceğiz:
- Burak Batur isimli müşterinin borç bilgisine 1,5 YTL fiyatıyla 2 adet margarin ekle.
- Burak Batur isimli müşterinin satın aldığı tüm ürünlerin listesini getir.
- Ercan Bozkurt isimli müşterinin 1 Ocak 2011 ile 10 Şubat 2011 tarihleri arasında satın aldığı tüm ürünleri getir.
- Ferda Demir isimli müşterinin toplam borç bilgisini getir.
- Tüm müşterilerin toplam borç bilgisini getir.
Bu örnekleri genişletmemiz ve arttırmamız elbette mümkün. Fakat şimdilik bu örnekler bir veri tabanı sistemi üzerinde ne gibi işlemler yapabileceğimizi görmemiz açısından yeterli bir temel teşkil edecektir.
Günümüzde veritabanları hemen hemen her alanda sıklıkla kullanılmaktadır. Bu alanlara örnek verecek olursak;
- Kişisel adres defterleri
- Telefon rehberi
- TV rehberi
- Online sözlükler
- Kütüphane sistemleri
- Ödeme ve borç sistemleri
- Ürün satış ve sipariş sistemleri
- E-Ticaret siteleri
- Banka sistemleri
- Okul sistemleri
- Hastane sistemleri
gibi birçok alanda gerekli bilgiler veritabanlarında tutulmaktadır. Örneğin bir kütüphaneden ödünç aldığımız kitaplarla ilgili olarak, kitap adı, alış tarihi, geri veriş tarihi gibi bilgiler veri tabanındaki bir tabloda tutulmaktadır. Kütüphanedeki görevli istediği zaman kayıtlı bir kullanıcı ile ilgili bilgilere ulaşabilmektedir.
SQL (Yapısal Sorgulama Dili)
SQL, yani Structered Query Language (Yapısal Sorgulama Dili) tüm ilişkisel veritabanlarında standart olarak kullanılan bir dildir. SQL veritabanı ile kullanıcı arasındaki iletişimi sağlar. Bu dil aracılığıyla hazırladığın sorguları kullanarak veritabanında depolanan veriler üzerinde bütün işlemleri yapabilirsin. SQL dilinin standartları ANSI (American National Standart Institute) ve ISO (International Standarts Organization) tarafından sağlanmakla birlikte, günümüzde en yaygın olarak ANSI standartları kullanılmaktadır.
T-SQL (Transact SQL)
T-SQL, Transact SQL adı verilen bir SQL dilidir. SQL dilinin Microsoft SQL Server üzerinde kullanılan sürümüdür. Daha iyi performans sağlaması için SQL dili üzerine eklentiler ve fonksiyonellikler eklenerek oluşturulmuştur. Veri tabanından bağımsız olarak, bir programlama dili aracılığıyla kullanıcıdan gelen T-SQL sorgularının sonuçları ilişkisel veri tabanı yönetim sistemi (RDBMS) tarafından oluşturularak kullanıcıya gönderilir. Bu şekilde kullanıcı, veri tabanı ile birebir uğraşmaksızın, sadece sorgular yazarak veri tabanı üzerinde işlemler yapabilir, veri tabanından gelen sonuçları program veya bir web sayfası üzerinde görüntüleyebilir.
T-SQL İfade Tipleri
T-SQL içerisinde 3 farklı ifade tipi bulunmaktadır.
- Veri Tanımlama Dili (Data Definition Language)
- Veri Kontrol Dili (Data Control Language)
- Veri İşleme Dili (Data Manipulation Language)
Bu üç ifade tipini de eğitimimiz içerisinde yeri geldikçe inceleyeceğiz.


Veri İşleme Dili (Data Manipulation Language - DML)
Veri işleme ifadeleri, veri tabanı üzerinde depolanan veriler üzerinde yapılması gereken işlemler için kullanılan ifadelerdir. Veri seçme/getirme, veri ekleme, veri güncelleme ve veri silme gibi işlemlerin yapılmasını sağlarlar. Toplam 4 adet veri işleme ifadesi bulunmaktadır.
- SELECT
- INSERT
- UPDATE
- DELETE
İsimlerinden de anlaşılacağı gibi, SELECT tablolardan veri seçme/getirme işlemini, INSERT tablolara veri ekleme işlemini, UPDATE varolan veriler üzerinde değişiklik yapma, güncelleme işlemini, DELETE ise varolan verilerin silinmesi işlemini gerçekleştirmektedir.
SELECT
Bir tablo içerisindeki verilerin tamamını getirir veya belirli şartlara göre bir kısmını filtreleyerek seçme işlemlerini gerçekleştirir. Genel kullanım şekli aşağıdaki gibidir.
SELECT SeçilecekAlan1, SeçilecekAlan2 … FROM TabloAdı
Örnek Kullanım: Ogrenci tablosundaki tüm kayıtların OgrenciID ve AdSoyad bilgileri aşağıdaki sql ifadesi ile elde edilebilir.
SELECT OgrenciID, AdSoyad FROM Ogrenci
Sorgu sonucunda seçilen öğrencilerin numaraları ve ad-soyadları

INSERT
Bir tablo içerisine yeni bir veri eklemek için kullanılır. Genel kullanımı aşağıdaki gibidir.
INSERT INTO TabloAdı (VeriEklenecekAlan1, VeriEklenecekAlan2, ...) VALUES (EklenecekDeğer1, EklenecekDeğer2, ...)
Örnek Kullanım: Ogrenci tablosuna, öğrenci numarası 115874 olan 101 numaralı bölümden Ercan Bozkurt isimli öğrenci, aşağıdaki sql ifadesi yardımıyla eklenebilir.
INSERT INTO Ogrenci (OgrenciID, AdSoyad, BolumID) VALUES (115874, 'Ercan Bozkurt', 101)
UPDATE
Bir tablo içerisinde bulunan verilerin değiştirilmesi için kullanılır. Genel kullanımı aşağıdaki gibidir.
UPDATE TabloAdı Set GuncellenecekAlan1 = YeniVeri1, GuncellenecekAlan2 = YeniVeri2 WHERE Koşul veya koşullar
Örnek Kullanım: Ogrenci tablosunda ogrenci numarası 115874 olan öğrencinin bölüm kodunu 102 olarak değiştirmek için aşağıdaki sql ifadesinden yararlanılabilir.
UPDATE Ogrenci SET BolumID = 102 WHERE OgrenciID = 115874
DELETE
Tablo içerisinde bulunan bir kaydı veya kayıtları silmek için kullanılır. Genel kullanım şekli aşağıdaki gibidir.
DELETE FROM TabloAdı WHERE Koşul veya koşullar
Örnek Kullanım: Ogrenci tablosundaki 115874 numarasına sahip öğrencinin kaydını silmek için aşağıdaki sql ifadesinden yararlanılabilir.
DELETE FROM Ogrenci WHERE OgrenciID = 115874



T-SQL’de Veri Tipleri
Tablo oluştururken tablo içerisindeki her alanın hangi tipte veri taşıyabileceğini belirleyen bazı veri tipleri bulunmaktadır. T-SQL’de bulunan temel veri tiplerinden bazıları şunlardır:
Metinsel Veri Tipleri

char(n)
ASCII türünden ve sabit boyutta veri saklar. En fazla 8000 karakter tutulabilir. (n) alabileceği en fazla karakteri belirler.

nchar(n)
Unicode türünden ve sabit boyutta veri saklar. En fazla 4000 karakter tutulabilir.

varchar(n)
ASCII türünden ve değişken uzunlukta veri saklar. En fazla 8000 karakter tutulabilir.

nvarchar(n)
Unicode türünden ve değişken uzunlukta veri saklar. En fazla 4000 karakter tutulabilir.

varchar(MAX)
varchar veri tipi ile aynı özelliklere sahiptir ve 2 GB’a kadar veri tutabilmektedir.

nvarchar(MAX)
nvarchar veri tipi ile aynı özelliklere sahiptir ve 2 GB’a kadar veri tutabilmektedir.

text
ASCII türünden metin saklamak için kullanılır. 2 GB’a kadar sınırı vardır.

ntext
Unicode türünden metin saklamak için kullanılır. 2 GB’a kadar sınırı vardır.


Sayısal Veri Tipleri
int
Yaklaşık -2 milyar ile +2 milyar arasındaki tamsayı değerlerini tutar.

bigint
Yaklaşık -263 ile +263 arasındaki tamsayı değerleri tutar.

smallint
Yaklaşık -32 bin ile +32 bin arasındaki tamsayı değerlerini tutar.

tinyint
0-255 arasındaki tamsayı değerlerini tutar.

float(n)
Kayan noktalı sayı değerlerini tutar. -1.79e+308 ile 1.79E+308 arasında değer tutabilir. n, 1 ile 53 arasında değer alabilir. 1 ile 24 arasında olduğunda 7 haneye kadar hassasiyet ve 4 byte yer ayrılması söz konusudur. 25 ile 53 aralığı için ise 15 haneye kadar hassasiyet ve 8 byte yer ayrılması söz konusudur. Varsayılan olarak n değeri 53’tür.

real
-3.40e+38 ile 3.40e+38 arasında değerler alabilir. 7 haneye kadar hassasiyet sunar ve 4 byte yer kaplar. Bu veri tipi float(24)’ün karşılığıdır. Eğer 7 haneye kadar hassasiyet gerekiyorsa real tipi varsayılan float tipi yerine tercih edilebilir.

money
Yaklaşık -922 milyar ile +922 milyar arasındaki değerleri tutar. Bu tip genelde parasal değerlerin tutulacağı alanlarda kullanılır.


Tarihsel Veri Tipleri
datetime
01.01.1753 ile 31.12.9999 arasındaki tarih ve zaman bilgisini tutar.

smalldatetime
01.01.1900 ile 06.06.2079 arasındaki tarih ve zaman bilgisini tutar.

date
01.01.0001 ile 31.12.9999 arasındaki tarih bilgisini tutar.

time
00:00:00.0000000 ile 23:59:59.9999999 arasındaki zaman bilgisini tutar.


Diğer Veri Tipleri
bit
Boolean değerler tutmak için kullanılan veri tipidir. Sadece 1 veya 0 değerlerini alabilir. 1 True, 0 False değerlerini temsil eder.

image
Resim dosyalarının veri tabanında tutulması için kullanılan veri tipidir. 2 GB’a kadar resim dosyası tutabilmektedir.

xml
XML dosyalarını ve XML kodlarını saklayabilen veri tipidir. 2 GB’a kadar veri taşıyabilir.

binary(n)
Sabit uzunluktaki binary veriyi tutmak için kullanılır. Maksimum uzunluğu 8000 byte’ tır. Varsayılan uzunluğu ise 1 byte’ tır.

varbinary(n)
Değişken uzunlukta binary veriyi tutmak için kullanılır. Maksimum uzunluğu 8000 byte’ tır. Varsayılan uzunluğu ise 1 byte’ tır.

varbinary(MAX)
Maksimum 2 GB binary veriyi tutabilen veri tipidir.


Tablolar (Tables)
Tablolar verilerin saklanmasını sağlayan, alanlar (sütun-column) ve satırlardan (row) oluşan birimlerdir. Tablo, ilişkisel veritabanlarında temel veri depolama nesnesidir ve bilgiler tablolarda saklanmaktadır.
Tablo içerisinde her satır bir kaydı temsil etmektedir. Alanlar ise kayıtlara ait özellikleri taşımaktadırlar. Örneğin bir öğrenciye ait kayıtta okul numarası, öğrenci adı ve öğrenci soyadı bilgilerini temsil eden “115874”, “Ercan”, “Bozkurt” gibi bilgiler tutulabilmektedir. Burada öğrenci numarası, öğrenci adı ve soyadı birer alanı, bu üç verinin tamamı ise bir satırı, yani bir kaydı oluşturmaktadır. (Aşağıdaki şekilde bir tablo üzerinde satır ve alan gösterilmiştir.) Bir tabloda en az bir tane alan bulunması gerekmektedir. Tabloda satırlar olabileceği gibi hiçbir satır olmayabilir de. Yani tablomuzda hiç veri taşımayacağımız durumlar olabilir. Tablo içerisinde kayıtlara ait bilgileri tutacak olan alanların hangi veri tipinde veri saklayabileceği de belirlenebilmektedir. Yukarıdaki öğrenci örneğindeki kayıtlarda, öğrenci adı ve soyadı bilgileri metinsel bir ifade, öğrenci numarası da rakamsal bir ifade içersin gibi…
Bir tablo üzerindeki satırlar ve alanlar
Yukarıdaki şekilde 1 numara ile belirtilmiş kısım satır, 2 numara ile belirtilmiş kısım ise alan olarak adlandırılır.
1. Satır (Row): Tabloda bulunan bir kayıt.
2. Alan (Sütun-Column): Bir kayda ait özellik. Örneğin; Kayıtlı öğrencinin adı.
Tablolar tasarlanırken içerecekleri bilgi türlerine göre gruplandırılmalıdır. Daha önce kısaca ele aldığımız örneği düşünecek olursak, bir üniversitenin veri tabanı Fakülte, Bölüm ve Öğrenci gibi tablolardan oluşabilir. Bölüm ve öğrenci bilgileri birbirinden farklı şeyler olduğu için, ayrı tablolarda tutulması hem veri bütünlüğü açısından, hem de veriye erişimin daha kolay ve hızlı olması açısından önemlidir. İsterseniz şimdi örnek olarak Bölüm ve Öğrenci tablolarını oluşturalım. Ardından da bu tabloların yapılarını ve içeriklerini inceleyelim.
BolumId  BolumAd
    101     Bilgisayar Mühendisliği
    102     Bilgisayar Öğretmenliği
    103     İç Mimarlık
    104     Fizik
Bolum ve Ogrenci tabloları ve içerdiği bilgiler

Bolum tablosu 2 alan (sütun) ve 4 satırdan (kayıt), Ogrenci tablosu ise 4 alan ve 4 satırdan oluşmaktadır. Bu şekilde birbirinden farklı içerikleri olan bölümler ve öğrenciler farklı iki tabloda depolanmış oldu. Yine Ogrenci adlı tablodaki BolumId alanına dikkat edilecek olursa, öğrencinin hangi bölümde bulunduğu bilgisinin Bolum tablosundaki BolumId ile ilişkilendirilmiş olduğu görülebilir. (Buradaki 101, 102 şeklindeki ifadeler aslında Bolum tablosundaki Bilgisayar Mühendisliği, Bilgisayar Öğretmenliği gibi bölümleri temsil etmektedir.) Bolum tablosunda BolumId ve BolumAd dışında, bölüm adresi, bölüm başkanı, bölümün bağlı olduğu fakülte gibi bilgileri de tuttuğumuzu varsayarsak, bu bilgileri öğrencilerin bilgileri ile aynı tabloda tutmak hem gereksiz yere verilerin tekrarlanmasına, hem de veri karışıklığına sebep olacaktı.
İlişki diyagramlarında bir tablo ile diğer tablo arasındaki ilişki aşağıdaki şekilde olduğu gibi belirtilir.
Bir öğrenci ve bir bölüm arasındaki ilişkinin şekille gösterimi

Tablo ve alan isimlendirilirken dikkat etmemiz gereken bazı hususlar vardır.
- Microsoft SQL Server 2005’ten önceki versiyonlarda aynı veri tabanı içerisinde aynı isme sahip sadece bir tablo bulunabilirken, Microsoft SQL Server 2005 ile gelen şema (schema) kavramı sayesinde bu kısıt aşılabilmektedir. Bununla birlikte, bir tablo içerisinde aynı isme sahip sadece bir alan bulunabilir.
- Tablo ve alan isimleri içerisinde rakam veya harfler dışındaki karakterlerin kullanılmaması tavsiye edilmektedir. (*)
- İsimlerin rakam ile başlamaması tavsiye edilmektedir. (*)
(*) Tavsiye edilmeyen durumlarda kullanılacak isimlerin ancak [ ] işaretleri arasına alınarak kullanılmasına izin verilmektedir.
Tablo oluşturmak
Management Studio arayüzünü kullanarak tablo oluşturmak için Databases başlığı altındaki Tables bölümüne sağ tıklayıp New Table seçeneğini seçebilirsin. Açılan ekranda kolon adları , veri tipleri ve ilgili kolona değer girilmemesine (null) izin verilip verilmemesi gibi tanımlamaları yaptıktan sonra , üstteki menüden Save (disket ikonu) seçeneği ile tabloyu oluşturabilirsin. Save butonuna bastığında açılan ekrana tabloya vermek istediğin adı yazmalısın.


Anahtarlar (Keys)
Bir kayıt içerisinde farklılıkları ve nitelikleri gösteren belirleyicilere anahtarlar (keys) denir. Farklı içeriklere sahip olacak verileri farklı tablolarda depolayarak yapabileceğimiz birçok işi kolaylaştırabiliyorduk. Benzer şekilde, tablodaki kayıtları da birbirinden ayırt edebilmek için tablo içindeki alanlara belirli anahtarlar atayarak birçok işlemi kolaylaştırabilmekteyiz. Bir tablo içerisinde bulunabilecek anahtarlar, birincil anahtar (primary key), tekil anahtar (unique key), referans anahtar (foreign key) ve birleşik anahtardır. (composite key)
Birincil anahtar (Primary key): Bir tablo içerisindeki satırları birbirinden ayırt eder. Birincil anahtar olan bir veri aynı tablo içerisinde tekrarlanamaz. Yine bu alandaki veri boş bırakılamaz, yani NULL değeri alamaz. Tek bir alan birincil anahtar olabileceği gibi bazı tablolarda birden fazla alanın birleşmesiyle birincil anahtar oluşabilir. (Bu aslında az sonra göreceğimiz birleşik anahtardır)
Tekil anahtar (Unique key): Tablonun tekil anahtar olarak tanımlanmış bir alanına aynı değer sadece bir kez girilebilir. Birincil anahtardan farklı olarak, tabloda bu alana ait sadece bir kayıt NULL değeri alabilir. Birincil anahtar aynı zamanda tek anahtar olarak sayılabilir fakat tek anahtarlar birincil anahtar değildirler.
Referans anahtar (Foreign key): Tablodaki bir veriyi başka tablodaki bir veri ile ilişkilendirir. İki tablo arasında yapılan bu ilişkilendirme ile referans anahtar olarak tanımlanmış alana sadece ilişkilendirdiği tablonun alanındaki veriler eklenebilir.
Birleşik anahtar (Composite Key): Birden fazla alanın birleştirilmesiyle birincil anahtar görevini üstlenecek tanımlamalar yapılabilir. Bunlar birleşik anahtar olarak adlandırılır.
Ogrenci tablosu üzerinde bulunan anahtarlar

OgrenciID her öğrenci için tek ve belirleyici bir unsur olacağı için Ogrenci tablosunda birincil anahtar olarak belirlenmiştir. Yine EMail her öğrenci için tek olacağı için bu alan tablo için tekil anahtar olacaktır. Daha önceki örneğimizden hatırlayacağınız gibi BolumIDBolum tablosunun BolumID alanı ile ilişkilendirilmişti. Ogrenci tablosunun bu alanına sadece Bolum tablosundaki değerleri alabilmektedir. Başka bir tablodaki anahtar ile ilişkilendirildiği için tablonun referans anahtarı olmuştur.



Veri Tanımlama Dili (Data Definition Language - DDL)
Veri tabanında nesneler oluşturmak için gerekli olan ifadeleri sağlamaktadır. Bu ifadeler, veri tabanı veya tablo gibi yeni bir nesnenin oluşturulması, var olan nesne üzerinde değişiklikler yapılması veya nesnenin yok edilmesi için kullanılır. Üzerinde işlem yapılan nesnenin ne gibi özellikleri ve alanları olacağı bu ifadeler içerisinde belirlenir.
T-SQL dilinde 3 adet veri tanımlama ifadesi bulunmaktadır. Bunlar:
- CREATE
- ALTER
- DROP
ifadeleridir. CREATE nesne oluşturmak, ALTER var olan bir nesne üzerinde değişiklikler yapmak, DROP ise varolan bir nesneyi kaldırmak için kullanılmaktadır.
CREATE
Veri tabanı üzerinde nesne oluşturmak ya da tanımlamak için kullanılan komuttur. Oluşturulacak nesnenin özelliklerine göre farklı parametreler alabilmektedir. Genel kullanımı şu şekilde olmaktadır:
CREATE NESNETİPİ Nesne Adı (Nesneye ait gerekli tanımlamalar)
Aşağıda CREATE ifadesi ile ilgili inceleyebileceğin örnek bir kullanım bulunmaktadır.
CREATE DATABASE Universite ON ( NAME = Universite, FILENAME = 'C:\universite.mdf', SIZE = 4mb, MAXSIZE = 10mb, FILEGROWTH = 1mb )
Yukarıdaki ifadede Universite adında yeni bir veri tabanı oluşturuyoruz. ON ( ) kısmında oluşturulan veri tabanının özellikleri belirleniyor. NAME değeri ile oluşan birincil veri tabanı dosyasının adını, FILENAME değeri ile veri tabanı dosyasının nereye ve ne isimle yazılacağını, SIZE değeri ile dosyanın başlangıçta diskte ne kadar yer kaplayacağını, MAXSIZE ile dosyanın diskte en fazla ne boyuta kadar büyüyebileceğini, FILEGROWTH ile de dosyanın ne kadarlık boyutlarla büyüyeceğini belirlemektedir.
Sadece CREATE DATABASE Universite ifadesini kullanarak ta Universite isimli bir veri tabanı oluşturabiliriz. Bu durumda oluşturacağımız veri tabanı sistem tarafından atanmış olan varsayılan ayarlamalara göre oluşturulacaktır.
ALTER
Varolan bir nesne üzerinde değişiklikler yapmak için kullanılır. CREATE komutunda olduğu gibi değiştireceği nesneye göre farklı parametreler alabilmektedir. Genel kullanımı aşağıdaki gibidir.
ALTER NESNETIPI Nesne Adı Yapılacak Değişiklik
Aşağıdaki örneklerde ALTER ifadesi kullanılarak varolan bir tablo üzerinde nasıl değişiklikler yapılabileceği gösterilmiştir.

ALTER TABLE Ogrenci ALTER COLUMN AdSoyad NVARCHAR(30) NOT NULL
Yukarıdaki örnek ALTER ifadesine aşinalık sağlamak amacıyla verilmiştir.
DROP
Veri tabanındaki herhangi bir nesneyi silmek için kullanılır. Silinen nesne ile ilgili olarak içerisinde tuttuğu tüm bilgiler de silinmektedir. Örneğin bir tablo silindiğinde içerisindeki tüm bilgiler de veri tabanından silinecektir. Kullanımında dikkat edilmesi gereken bir sorgu ifadesidir. Genel kullanımı aşağıdaki gibidir.
DROP NESNETIPI Nesne Adı
Aşağıdaki örneklerde DROP ifadesi kullanılarak varolan tabloların nasıl silinebileceği gösterilmiştir.
Üzerinde çalışmış olduğunuz veritabanında herhangi bir veri kaybı yaşamamak için, önce geçici olarak işlevi olmayan bir veritabanı oluşturup, sonra bu nesneyi DROP sorgusu ile nasıl silebileceğimizi görelim.
CREATE DATABASE TestVeritabani GO
Yukarıdaki ifade ile TestVeritabani adında bir veri tabanı oluşturulur. GO komutu öncelikle CREATE DATABASE TestVeritabani sorgusunun çalışmasını sağlar.
GO ifadesi bir sorguyu çalıştır anlamında kullanılmaktadır. Yukarıdaki sorguda iki farklı sorgu cümlesi bulunmaktadır ve buradaki ikinci cümlenin çalışabilmesi için öncelikle TestVeritabani isimli bir veri tabanının oluşturulması gerekmektedir. GO ifadesi önce ilk sorgunun çalışmasını sağlamaktadır.
DROP DATABASE TestVeritabani
DROP DATABASE ifadesi ile TestVeritabani isimli veri tabanı silinmektedir.

Veri Kontrol Dili (Data Control Language - DCL)
T-SQL’de veri kontrol ifadeleri veri tabanı üzerindeki kullanıcılara ve rollere yetki vermek için kullanılmaktadır. T-SQL’de 3 adet veri kontrol komutu bulunmaktadır. Bu komutlar şunlardır:
GRANT
Kullanıcıya veritabanına erişebilmesini veya T-SQL ifadeleri çalıştırabilmesini sağlayacak yetkileri verir.
DENY
Kullanıcının belirli bir alana erişimini engellemek veya belirli T-SQL ifadelerini çalıştıramamasını sağlamak amacıyla kullanılır.
REVOKE
Daha önceden GRANT veya DENY ile verilmiş yetki veya engelleri kaldırmak için kullanılır.
Veri kontrol ifadelerini çalıştırabilmek için veri tabanına bağlı olan kullanıcının sysadmin, dbcreator, db_owner veya db_securityadmin rollerinden birine sahip olması gerekmektedir.

29 Ekim 2014 Çarşamba
Posted by omerfarukkaya

Kategoriler

Popular Post

Blogger templates

Blog Archive

Google Search