Veritabanı dünyasına adım atıyoruz! Hani bazen bir proje yaparken aklımıza gelir ya, ‘Benim bu bilgileri saklayacak bir yerim olmalı’ diye. İşte tam o noktada veritabanları devreye giriyor. Ama veritabanı dediğimiz şey öylece bomboş gelmiyor, ona ne saklayacağını, bilgilerin nasıl duracağını anlatmamız lazım. İşte tam da bu noktada CREATE TABLE komutuyla tanışıyoruz. Bu komut, veritabanımızın temel taşlarından biri. Tıpkı bir inşaatın temelini atmak gibi düşünebilirsiniz. Ne kadar sağlam atarsan, üstüne kuracağın bina da o kadar sağlam olur, değil mi?
Peki, bu CREATE TABLE denen şey ne işe yarıyor tam olarak? Basitçe söylemek gerekirse, veritabanımızda bilgileri saklayacağımız tabloları oluşturmamızı sağlıyor. Düşünsenize, bir e-ticaret sitesi yapıyorsunuz. Ürünleriniz olacak, müşterileriniz olacak, siparişleriniz olacak. Bunların hepsini bir yere kaydetmeniz gerekiyor. İşte bu bilgiler için ayrı ayrı tablolar oluşturuyorsunuz. Ürünler tablosu, müşteriler tablosu, siparişler tablosu… Her biri kendi içinde bir düzenek, kendi içinde bir yapı.
Bu tabloları oluştururken de bazı kurallar var tabii. Bir tabloya isim veriyorsunuz, sonra o tabloda hangi bilgilerin yer alacağını belirliyorsunuz. Mesela ürünler tablosunda ürünün adı, fiyatı, stok adedi gibi bilgiler olabilir. Bunları biz ‘sütun’ veya ‘alan’ olarak adlandırıyoruz. Her bir sütunun da kendine has bir veri tipi oluyor. Yani fiyatı sayı olarak tutarsın, adı metin olarak, stok adedini de tam sayı olarak. Yoksa fiyatı metin olarak tutmaya kalksan, matematiksel işlemler yapamazsın, ne kadar mantıksız olurdu değil mi?
Şimdi gelelim işin biraz daha teknik kısmına. Bir tablo oluşturmak için temel syntax şöyle: CREATE TABLE tablo_adi ( sutun1 veri_tipi, sutun2 veri_tipi, ... ); Ne kadar basit değil mi? Aslında bu kadar da değil tabii. Bunların içine ekleyebileceğimiz başka özellikler de var. Mesela her bir satırın benzersiz olmasını sağlayan PRIMARY KEY‘ler var. Ya da bir sütuna NOT NULL diyerek oranın boş bırakılmasını engelleyebiliyorsunuz. Bunlar verilerimizin doğruluğunu ve bütünlüğünü sağlamak için gerçekten önemli özellikler.
Bu arada, bu CREATE TABLE komutunu hangi SQL veritabanı sisteminde kullanırsanız kullanın, temel mantık aynıdır. İster PostgreSQL olsun, ister MySQL, ister SQL Server. Yani birinde öğrendiğinizde diğerinde de işinizi görecektir. Zaten genel SQL standartları böyle bir uyumluluk sağlıyor, ne güzel değil mi?
Şimdi size somut bir örnek göstereyim. Diyelim ki, basit bir ‘Kullanıcılar’ tablosu oluşturmak istiyoruz. Bu tabloda kullanıcının ID’si (bu benzersiz olacak), adı, soyadı ve e-posta adresi yer alacak. ID’yi sayı olarak, adı ve soyadı metin olarak, e-postayı da yine metin olarak tutacağız. ID benzersiz olacağı için onu PRIMARY KEY olarak belirleyelim. E-postanın da boş bırakılmaması gerektiğini düşünelim, çünkü genelde kullanıcı adı veya kurtarma işlemleri için e-posta şarttır. İşte kodumuz:
CREATE TABLE Kullanicilar ( KullaniciID INT PRIMARY KEY, Ad VARCHAR(50) NOT NULL, Soyad VARCHAR(50) NOT NULL, Eposta VARCHAR(100) NOT NULL );
Burada INT tam sayı demek, VARCHAR(50) ise en fazla 50 karakterlik metin tutabileceğimiz anlamına geliyor. PRIMARY KEY ve NOT NULL‘u zaten konuştuk. Bu kod bloğu sayesinde, veritabanımızda artık bilgileri saklayabileceğimiz tertemiz bir ‘Kullanıcılar’ tablosu hazır olmuş oluyor.
Gerçek hayatta, özellikle büyük projelerde, bu tablo tanımlamaları çok daha detaylı olabiliyor. Farklı tablolar arasında ilişkiler kurmak için FOREIGN KEY‘ler kullanılıyor, verilerin belirli kurallara uyması için CHECK kısıtlamaları ekleniyor. Hatta bazen bir sütuna varsayılan bir değer atamak isteyebiliyoruz, mesela kayıt tarihi gibi. Bunların hepsi CREATE TABLE komutunun esnekliği sayesinde mümkün.
Şimdi size bir de şöyle bir durum gösterelim. Diyelim ki ilk yaptığımız tablo biraz eksikmiş ve sonradan bir sütun eklemek istedik. Mesela kullanıcıların telefon numarasını unutmuşuz. Bunun için ALTER TABLE komutunu kullanırız ama önce yanlış bir tablo oluşturduğumuzu düşünelim ve sonra nasıl düzelttiğimizi görelim. Diyelim ki ilk tabloyu şöyle oluşturduk, ama e-postayı boş bırakılabilir yaptık:
-- YANLIŞ: E-posta boş bırakılabilir yapıldı CREATE TABLE KullanicilarYanlis ( KullaniciID INT PRIMARY KEY, Ad VARCHAR(50), Soyad VARCHAR(50), Eposta VARCHAR(100) );
Bu durumda, aslında bir hata yaptık çünkü e-posta bilgisinin boş bırakılmaması gerekiyordu. İşte tam bu noktada, böyle bir hata yaptığımızda, genellikle ALTER TABLE komutuyla tabloyu güncelleriz. Ama ben size konuyu tam oturtmak için, ilk baştaki CREATE TABLE‘ın ne kadar önemli olduğunu vurgulamak adına, ilk seferde doğru yapmanın güzelliğini göstereceğim. Yani, baştan doğru tanımlama yaparsak, sonradan uğraşmayız. Bu yüzden, CREATE TABLE‘ı iyi anlamak gerçekten kritik.
Neticede, bir veritabanı uygulamasının temeli bu CREATE TABLE komutudur. Eğer bu komutu doğru kullanmazsanız, verileriniz düzensiz olur, tutarsızlıklar yaşarsınız ve ileride büyük sıkıntılar çekebilirsiniz. Tıpkı bir evin duvarlarını eğri örersen, üzerine ne koyarsan koy sallanır yani.
Bu arada, tablo oluştururken sütun isimlerinde özel karakterler kullanmaktan kaçının, sayıyla başlamayın ve anahtar kelimeleri kullanmamaya özen gösterin. Bunlar ileride size sorun çıkarabilir, benden söylemesi. Hani derler ya, ‘Önlem almak, tedavi etmekten iyidir.’ İşte bu da onun gibi bir şey.
İşte bu kadar basit! Bir CREATE TABLE komutuyla veritabanınızda kendi alanınızı yaratmış oluyorsunuz. Tabii ki bu sadece başlangıç. Veritabanı dünyası çok derin ve keşfedilecek çok şey var. Ama temel bu. Bu komutu anladığınızda, veritabanı mimarisinin ne kadar önemli olduğunu daha iyi kavrayacaksınız sanırım.
Eğer merak ederseniz, SQL’in farklı veritabanı sistemlerindeki (PostgreSQL, MySQL gibi) CREATE TABLE komutlarının küçük farklılıkları hakkında daha fazla bilgiyi Google’da aratarak bulabilirsiniz. Genelde çok büyük farklar olmasa da, bazı özel veri tipleri veya kısıtlamalar için ufak tefek nüanslar olabilir. Ama mantık hep aynı.
Sonuç olarak, veritabanı yolculuğunuza başlarken CREATE TABLE komutunu iyice öğrenin, bol bol pratik yapın. Hata yapmaktan korkmayın, çünkü hatalarımızdan ders çıkararak daha iyiye gidiyoruz. Ne güzel değil mi? Hadi bakalım, şimdi sıra sizde!