SQL ile Veritabanı Yapısında Değişiklik

SQL ile sadece kayıtlar arasında değişiklik veya okuma yapmayız. Aynı zamanda veritabanı oluşturabilir, değiştirebilir veya silebiliriz. Hatta MS-SQL gibi dillerde DDL olarak isimlendirilmiş, SQL’in bir alt dili oluşturulmuştur. Bu dil ile veritabanına her türlü müdahale yapılabilir. Biz bu yazıda, yüzeysel olarak standart SQL’i kullanarak veritabanımızın yapısındaki değişikliklere göz atacağız.

Söylediğimiz gibi SQL komutlarını kullanarak sadece veritabanı kayıtlarında sorgu ve değişiklikler değil; aynı zamanda veritabanının dizaynında da değişiklikler yapabiliriz.

 

CREATE DATABASE

Bu komutla bağlı olduğumuz sunucuda yeni bir veritabanı yaratabiliriz. CREATE DATABASE LISE komutu; bağlı olunan sunuda LISE isimli yeni bir veritabanı yaratacaktır.

 

DROP DATABASE

Yaratılan veritabanı dosyalarını silmek için kullanılır. ÖRNEK: DROP DATABASE LISE

 

CREATE TABLE

Geçerli veritabanında yeni bir tablo yaratır. Yapısı:

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
….
);

şeklindedir. Burada table_name tablonun adı, column1,2,3 alan adlarını, datatype’ler de veri tiplerini temsil etmektedir.

ÖRNEK:

CREATE TABLE Ogrenciler(
OgrenciNo int NOT NULL,
OgrenciAdi varchar(255) NOT NULL,
DogumTarihi datetime NULL
)

Bu örnekte Ogrenciler tablomuzun adını; OgrenciNo, OgrenciAdi, DogumTarihi ise alanlarımızın isimlerini ifade ediyor. int, varchar, datetime gibi ifadeler ise Değişken Kavramı yazımızda ifade ettiğimiz veri tipleri.

 

DROP TABLE

Tabloları silmek için kullanılır. Örnek: DROP TABLE Ogrenciler

 

ALTER TABLE

Tabloları düzenlemek için kullanılır.

Tabloya yeni alan eklemek için; ALTER TABLE TABLO_ISMI ADD ALAN_ISMI VERI_TIPI. Örnek: Alter Table Ogrenciler Add DogumYeri varchar(50)

Tablodaki bir alanın veri tipini değiştirmek için; Alter Table Ogrenciler Alter Column DogumYeri varchar(30). Alter column ifadesi yerine bazı VTYS’lerde Modify veya Modify Column ifadesi kullanılabilir.

Tablodaki bir alanı silmek için; Alter Table Ogrenciler Drop Column DogumYeri

 

SQL VERİ TİPLERİ

Tablo yapısına girmişken SQL’deki standart veri tiplerinden de bahsetmeliyiz. Bunlardan çok yüzeysel olarak bahsedeceğim. Çünkü her VTYS sisteminde data tipleri değişkenlik gösterebilir. O yüzden başlıklar halinde bahsedeceğim.

Sayısal Veri Tipleri: 1 byte’lık tam sayıları MySql ve MsSql gibi VTYS’lerde TinyInt alanlarda, Access’de Byte tipindeki alanlarda saklayabilirsiniz. Access’de Long tipindeki alanlarda 4 byte tam sayı saklayabilirken, diğerlerinde Int tipi 4 byte tam sayı saklar. Access’de daha büyük sayılar güvenli değildir. Diğerlerinde BIGINT tipini 8 byte’a kadar tam sayılar için kullanabilirsiniz. Ondalıklı sayılar için veritabanlarında float, single, double gibi tipler mevcuttur.

Alfa-sayısal Veri Tipleri: MySql’de Varchar, Access’de Text veri tipinde 255 karaktere kadar yazıları saklayabilirsiniz. Daha uzun metinler için her veritabanında MEMO, BLOB gibi tipler mevcuttur.

Tarih Veri Tipleri: Datetime tipi hemen her veritabanında mevcuttur.

Boolean Veri Tipi: Bit tipi bazı VTYS sistemlerinde mevcuttur.

 

SQL KISITLARI

Alan tipleri dışında kalan ekstra alan özellikleri de mevcuttur.

Örnek olarak;

CREATE TABLE Ogrenciler(
OgrenciNo int NOT NULL,
OgrenciAdi varchar(255) NOT NULL,
DogumTarihi datetime NULL
)

Örnekteki NOT NULL ifadesi alanların boş geçilemeyeceğini ifade eder. Yani bu tabloya yeni bir kayıt girmek için not null olarak işaretlenmiş alanlar doldurulmuş olmalıdır. Aksi taktirde VTYS sistemi bir hata dönderecektir.

Bunların dışında DEFAULT ifadesiyle boş geçilen alanlara varsayılan olarak değer atanabilir. UNIQUE ifadesiyle tekrarlanan kayıtlar yasaklanabilir.

 

INDEKSLER, PRIMARY ve FOREIGN KEYLER

Indeksler, veriye hızlı erişim için ayrı bir yerde indekslenmesi istediğimiz alanlardır. Veriye ulaşım için sıkça süzmeler yaptığımız alanları, indeks olarak işaretlemek; bu alanlara göre VTYS sistemlerin bir adresleme yapmasını sağlayacak ve veriye erişimi hızlandıracaktır. Örneğimizde programdaki sorgularımız doğum tarihine göre öğrencileri sık sık aramayı gerektiriyorsa, DogumTarihi alanına indeks koyularak, bu sorguların daha hızlı çalışması sağlanabilir. Gereksiz indeksler ise veritabanımızı yavaşlatacaktır.

Primary key olarak işaretlenen alanlar, tablonun anahtar alanlarıdır. Veriye erişim bu alanlardaki değerler aracılığıyla yapılır. Bu alanlar aynı zamanda indekstir. Çünkü veri erişimi bu alan kullanılarak yapılır. Primary key olarak işaretlenmiş alanlar aynı zamanda unique ve not null olmalıdır. Örneğimizde Ogrenciler tablosundaki OgrenciNo primary key’imiz olabilir. Çünkü öğrencileri birbirinden ayıran en önemli özellik budur. Öğrenci adının adaş öğrenciler olabileceğini düşünürsek, pek isabetli bir primary key olamayacağı söylenebilir.

Foreign key‘ler; iki ayrı alanda aynı şeyi ifade alanların birbirine bağlanması olayıdır. Örnek veritabanımızda; Sinavlar tablosundaki OgrenciNo alanı ile, Ogrenciler tablosundaki OgrenciNo alanı aynı şeyi ifade etmektedir. İkisi de bir öğrencinin temsilidir. Bu durumda bu iki alan birbine foreign key’ler aracılığı ile bağlanabilir. Bu durum sorgulama hızını arttıracak ve tabloların kontrolsüz silinmesini de engelleyecektir.

 

OTOMATİK ARTAN TANIMLAYICILAR

Bazı veritabanlarında auto increment, bazılarında ise identity olarak geçen bu alanlar, tablonun otomatik bir primary key alana sahip olmasını sağlar. Tablomuza bu tipte bir alan eklersek, her eklediğimiz alanda 1’den başlayarak otomatik artan bir sayı içeren bir alanımız olacaktır. Bu şekilde kayıtların birbirinden ayrılması, bizim yerimize veritabanımız tarafından yapılacaktır. Örneğimizde, OgrenciNo’nun bizim tarafımızdan girildiğini düşünürsek OgrenciId diye bir alan yaratıp bunu primary key olarak kullanabiliriz.

Örnek veritabanımızda hemen bir uygulamasını yapalım:

Bu komutla Ogrenciler tablomuza, Int tipinde ve otomatik artan OgrenciId diye bir alan eklemiş olduk.

Görüldüğü gibi SQL Server, OgrenciId alanını tablomuza ekleyip, bizim yerimize otomatik artan numaralarla doldurdu içini. Bundan böyle o alana bir şey yazmamıza gerek yok. Sql Server, OgrenciId alanını, her kayıt ekleyişimizde, kendisi otomatik artan numaralarla dolduracak.

 

SQL dili konusundaki yazıları şimdilik noktalıyoruz. SQL ile işlerimizi görecek kadar bilgi sahibi olduğumuza inanıyorum artık.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir