Bilgilerimizi saklamak için veritabanlarını kullandığımızı daha önce
belirtmiştim. Sakladığımız bilgileri daha kolay bir şekilde
işleyebilmek için sınıflandırmamız gerekir. Bu sınıflandırma işlemi
için tabloları kullanırız. Tablolar sütunlar ve satırlardan oluşur.
Aşağıda veritabanında kayıtlı “kullanicilar” isimli bir tablo
görünüyor (Tabloların nasıl oluşturulacağını ilerideki bölümlerde
aklayacağım).
mysql> select * from kullanicilar;
+----+--------------+---------+------------------------+-------+
| no | Ad | Soyad | eposta | bolum |
+----+--------------+---------+------------------------+-------+
| 1 | Fehmi Noyan | ISI | fni18444@gantep.edu.tr | eee |
| 2 | Mehmet | Korkmaz | kormkaz@linux.org.tr | pe |
| 3 | Adem | Sarnici | a_sarnici@yahoo.com | pe |
| 4 | Seckin Fatih | Solgun | sf_solgun@freebsd.org | me |
+----+--------------+---------+------------------------+-------+
4 rows in set (0.05 sec)
mysql>
Yukarıdaki tabloda dört sütun ve dört satır var. Tablodaki verileri
ekrana basmak için select * from kullanicilar;
komutunu kullandım. Aynı komutu select Ad from kullanicilar;
şeklinde verince
mysql> select Ad from kullanicilar;
+--------------+
| Ad |
+--------------+
| Fehmi Noyan |
| Mehmet |
| Adem |
| Seckin Fatih |
+--------------+
4 rows in set (0.03 sec)
mysql>
Yukarıdaki gibi bir tablo elde ederiz. MySQL ile MS-DOS ve UNIX
işletim sistemlerinde olduğu gibi joker karakterler kullanılabilir.
İlk komut satırında kullandığım “*” karakteri de bu joker karakterlere
bir örnek. İlk tablodaki no, Ad, Soyad ve eposta adlı bölümler
tablonun sütunlarının isimlerini gösterir. Komut satırında kullandığım
“*” karakteri bu sütunların hepsinin görüntülenmesini istediğimi
belirtir. Aslında daha önceden komut satırından işlem yönetenler
için fazla yabancı bir ifade olmasa da ilk kez karşılaşacaklar için
biraz karışıktır fakat zamanla kavranacaktır. Kısacası veritabanından
bilgi almak için
select istenen_bilgi from tablo_adı;
gibi bir kalıp kullanılır.
Veritabanından alınan sorgu belli koşulları gerektirebilir. Mesela
yukarıdaki kullanicilar adlı tabloda ismi
Mehmet olan kullanıcıları ekrana görüntülemek
istersem
mysql> select Ad from kullanicilar where Ad=’Mehmet’;
gibi bir komut kullanmam gerekirdi.
Örnekleri çoğaltmak mümkün. Yapılan sorgu isteğe ve gereksinime göre
değişik koşullar dahilinde gerçekleştirilebilir. where
kalıbı ile olmasını istediğimiz bir özelliği belirtiyoruz. Peki
elimizdeki verilerde olmasını istemediğimiz bir bilgiyi nasıl
belirteceğiz? Bu iş için not kalıbı kullanılır.
mysql> select eposta from kullanicilar where not bolum=’pe’;
Yukarıdaki sorgu kalıbı kullanicilar adlı tablodan
bolum bilgisi pe olmayan tüm
kullanıcıların e-posta adreslerini ekrana basacaktır.
not kalıbı ile or kalıbı da
kullanılır. or kalıbı çift istekli durumlarda
not işleçinin tam tersi işlev görür. Yani
kullanicilar adlı tablodan Ad
bilgisi Mehmet olan ve bölümü eee
olmayan kullanıcıların listesi için kullanılması gereken SQL komutu
aşağıdaki gibidir.
mysql> select Ad from kullanicilar where not bolum=’pe’ or Ad=’Mehmet’;
Buraya kadar hep tablolar üzerinde işlemlerden bahsettim. Sıra
üzerinde işlem yaptığımız bu tabloları nasıl oluşturduğumuza geldi.
SQL’de tablo oluşturma işi aynen veritabanı oluşturma gibidir. Sadece
tablo oluştururken tabloda tanımlı alanların özelliklerinin belirtilmesi
gerekir. Yukarıda tüm örneklerimde kullandığım kullanicilar
adlı tabloyu oluşturmak için kullanılacak SQL satırı aşağıdaki gibidir.
mysql> create table kullanicilar
->(no int auto_increment, Ad varchar(13), Soyad varchar(12),
-> eposta varchar(25), bolum varchar(5), primary key(no));
mysql>
Tabloda kullanılan sütunların veri tiplerini ve en fazla kaç baytlık
veri saklayabileceklerini belirttim. int terimi
kullanılacak verinin sayısal bir değer olacağını simgeler, diğer
sütunlar için kullandığım varchar terimi ise
girilecek dizinin karakter kümesi olduğunu ve parantez içindeki
sayısal değer ise bu kümenin maksimum alabileceği karakter sayısını
belirler. Eğer girilen veri belirtilen maksimum değerden fazla ise
belirtilen değer kadar karakter işleme alınır. Bunun için tablo
oluştururken girilecek verilerin uzunluğunu göz önünde bulundurmanızda
fayda vardır. Bunların dışında -> karakteri de
dikkatinizi çekmiştir. SQL’de bir komutu ; ile
sonlandırmadığınız sürece o komut ENTER tuşun bassanız bile bitmiş
sayılmaz ve sizden bitirici karakteri (“;” ya da
\g) girmeniz beklenir. Komutu üç satır halinde
yazmamın sebebi sadece uzun ve karmaşık bir satır yazmaktan kaçınmak
içindi. Aynı komutu tek satır yazmanız halinde de sonuçta herhangi
bir değişiklik olmayacaktır. no sütunu için
kullandığım auto_increment ve en sonda kullandığım
primary key(no) kalıpları tabloda no
ile belirtilen kısmın otomatik olarak her veri girdiğinde bir
arttırılmasını sağlar. Bu özelliğin kullanılabilmesi için kullanılacak
sütuna primary key özelliğinin atanması gerekir.
Diyelim ki tablomuzu oluşturduk ve web üzerinden bilgilerimizi kaydediyoruz.
Bir gün, tablomuzu oluştururken kullandığımız sütun özelliklerini görmek
istersek ne yapacağız? Bunun için describe komutu
kullanılır. Komutun kullanımı
şeklindedir.
Şimdi sıra boş olarak oluşturduğumuz kullanicilar adlı
tabloya bilgi girişinde. Bilgi girişi için insert
komutu kullanılır.
mysql> insert into kullanicilar
-> values (“”,”Fehmi Noyan”,”ISI”,
-> “fni18444@gantep.edu.tr”,”eee”);
Yukarıdaki komut kümesi kullanicilar adlı tabloya
belirtilen bilgileri sırası ile girer. Bilgi girişi için
insert into tablo_adi values ("alan1_değeri", "alan2_değeri", ..., "alanN_değeri");
kalıbı kullanılır. İlk sütuna gelecek bolume sadece “”
karakterlerini bırakmam bu bölümün auto_increment
özelliğinden dolayı SQL tarafından otomatik olarak doldurulacak
olmasındandır. Girilen her değer tırnak içinde yazılır ve birbirlerinden
virgül ile ayrılır.
Bazen bir tablodaki verileri herhangi bir sebepten dolayı yenilememiz
gerekebilir. Mesela yukarıdaki tabloda Fehmi Noyan
adlı kullanıcının e-posta adresi değişmişse ve biz yeni adresi
tablomuzda eski adresle değiştirmek istiyorsak kullanacağımız komut
update komutudur.
mysql> update kullanicilar set eposta=’yeni_adresim@adres.com’
-> where no=’1’;
Yukarıdaki SQL satırı kullanicilar adlı tablodan
no bilgisi 1 olan kullanıcının eposta
bilgisini yeni_adresim@adres.com olarak değiştirilmesi
için kullanılır. Komutun kullanımında
update tablo_adı set sütun_adı=’yeni değer’ where koşul;
kalıbı uygulanır. where koşulundan sonra herhangi
bir koşul satırı kullanılabilir (ben no bilgisini
kullandım).
Girilen bilgileri silmek için delete komutu
kullanılır.
mysql> delete from kullanicilar where bolum=’eee’;
Yukarıdaki SQL komutu kullanicilar tablosundaki
bolum bilgisi eee olan tüm
kullanıcılar ile ilgili satırları silecektir. Komutun kullanımı
delete from tablo_adı where koşul;
şeklindedir.
Son olarak da, MySQL’den çıkış için quit komutu
kullanılır.
MySQL hakkında yazacaklarım bu kadar. Tabi benim bu belgeye dahil
etmediğim daha birçok komut ve kullanım mevcut. Fakat ben bir
sonraki bölümde PHP ile tablo işlemlerinde genelde bu komutları
(bilgi ekleme, bilgi silme, bilgi alma ve bilgi yenileme)
kullanacağım için sadece gerekli komutları verdim. Tabii yapacağınız
çalışmanın amacına göre kullanacağınız veritabanlarının niteliği
farklı olacaktır ama buradaki bilgilerin, en azından, MySQL hakkında
hiç bilgisi olmayan bir kullanıcı için yaralı olabileceğini düşünüyorum.