Öğr. Gör. Kemal ÖZCAN
Hafta 11
Veritabanı İşlemleri -1
Veritabanı Nedir ?
Veritabanı(database) verilerin düzenli bir şekilde saklanmasını sağlayan yazılımlardır.Günümüzde bir çok veritabanı kullanılmaktadır. PHP’de genellikle MySQL kullanılmaktadır. MySQL açık kaynak kodlu ve kişisel kullanımlar için ücretsiz bir yazılımdır.
Web Uygulamaları için veritabanının önemli bir yeri vardır. Örneğin İçerik yönetim sistemleri ile bir sitenin içeriğini rahatça yönetebiliriz.
Yüzlerce,binlercek kişinin ziyaret ettiği sitelerdeki veriler veritabanlarında saklanırlar ve ziyaretçilere sunulurlar.Veritabanlarında milyonlarca bilgi saklayabiliriz. Gerektiğinde kolayca arama yapabilir , bilgileri değiştirebilir , silebilir ya da ekleme yapabiliriz.
Bir veritabanı bir çok tabloyu içerebilir. Her tablonun bir adı vardır. Tablodaki her bir alanın da (sütun) bir adı ve içersine yerleşecek verinin türü gibi
özellikleri vardır. Bütün bu yapının oluşturulmasına veritabanının tasarımı adı verilir. Bu süreç, doğal olarak, boş bir veritabanının
oluşturulması ile başlar. Ardından tablolar ve bu tablolarda yer alacak alanlar ve
bu alanların özelliklerinin atanması, dizin oluşturma işlemleri, anahtarların
belirlenmesi gibi işlemler gelecektir. Bilinen bazı veritabanı yazılımları olarak
Oracle, MySQL, Microsoft SQL Server, PostgreSQL, IBM DB2, dBase ve
Paradox sayılabilir.
MySQL Veritabanı
MySQL Veritabanı yazılımın diğerlerinden ayıran en önemli fark, kuşkusuz ki açık kaynak kodlu ve ücretsiz olmasıdır. Diğer
yandan, ücretsiz olarak dağıtılan yazılımların kalitelerinin de düşük olmadığına güzel bir örnek oluşturmaktadır. Şöyle ki
genel olarak düşünülenin aksine, MySQL veritabanı sistemi çok büyük veri yığınlarında oldukça iyi performans sergilemektedir.
MySQL veritabanına ulaşmak için Xampp yazılımını kurmamız yeterlidir. Xampp’ı kurduktan sonra Apache ve MySQL’i
başlatırız. Veritabanına ait panele ulaşmak için herhangi bir tarayıcının adres satırına http://localhost/phpmyadmin/
yazmamız yeterlidir.
Veritabanı Oluşturma İşlemi
MySQL yönetim panelinden Veritabanları sekmesinden veritabanı
oluşturabiliriz.
1 numaralı alana oluşturmak istediğimiz veritabanının adını yazıyoruz. İsimlendirme yaparken değişken
oluşturma kurallarına göre isim belirlemeliyiz.
2 numaralı alanda ise oluşturacağımız veritabanında yer alacak bilgilere uygun bir karakter kodlama tablosu seçilir. Türkçe için seçebileceğimiz en uygun karakter tablosu “utf8_turkish_ci” olacaktır.
Oluştur butonuna bastığımızda veritabanımız
oluşturulmuş olacaktır.
Tablo Oluşturma İşlemi
MySQL yönetim panelinin sol tarafındaki
menülerden oluşturduğumuz veritabanının içine girerek tablo oluşturuyoruz.
1 numaralı alana oluşturmak istediğimiz tablonun adını yazıyoruz. İsimlendirme yaparken değişken oluşturma kurallarına göre isim belirlemeliyiz.
2 numaralı alanda ise tablomuzda yer alacak alanların sayısını yazıyoruz. Git
butonuna bastığımızda aşağıdaki ekran gelecektir
1 numaralı alanda oluşturmak istediğimiz alanların adlarını yazıyoruz.
Türkçe karakter kullanılmamalıdır.
2 numaralı alanda oluşturacağımız alanların tipini belirliyoruz.
3 numaralı alanda karakter uzunluklarını belirliyoruz.
Numara alanının indeks’ini Primary olarak işaretliyoruz ve
AUTO_INCREMENT seçeneğini seçili hale getiriyoruz. Her tabloda en az 1 tane Primary Key(birincil anahtar) bulunmak zorundadır.
AUTO_INCREMENT otomatik artış yapmak için kullanılır.
Kod ile Tablo Ekleme
Tablo’yu kod ile eklemek için Tablo ekleyeceğimiz veritabanına
tıklıyoruz SQL yazısına tıklayıp SQL kodumuzu yazıyoruz.
CREATE TABLE deyiminin bölümleri şunlardır ;
CREATE TABLE[IF NOT EXISTS] tablo_adı(
sütun_adı veri_tipi[karakter] [özellik][boşluk][varsayılan][ekstra],
….
)[tablo seçenekleri][karakter];
Bölüm Açıklama
Tablo_adı Oluşturulacak tablonun adı.(ogrenci) gibi
Sütun_adı Yeni tabloda oluşturulacak sütun veya sütunların adı, En az bir sütun oluşturmamız gerekir.
Veri_tipi Sütunun veri tipidir.(INT,VARCHAR,TEXT,LONGTEXT) gibi.
Boyut Sütuna eklenecek veri miktarı INT(2) , VARCHAR(255) gibi.
Karakter Veri türünün uluslar arası dil grubuna göre tanımı (CHARACTER SET utf8) gibi.
Özellik Varsayılan değerin alabileceği veri tipi ( UNSIGNED,TIMESTAMP) gibi.
Boşluk Kayıt alanının boş bırakılıp bırakılmayacağı (NULL, NOT NULL) gibi.
Varsayılan Kayıt alanına veri girilmediğinde olması istenen değer
Ekstra İndex bilgilerini tanımlar(AUTO_INCREMENT,PRIMARY KEY) gibi.
Metin ve İkili(binary) saklayan veri türleri
Bölüm Açıklama
CHAR() 0 ile (255 bayt) karakter uzunluğunda metin veri tutar.
VARCHAR() 0 ile 65528 karakter uzunluğunda metin veri tutar.
TINYTEXT Maximun 255 bayt karakter uzunluğunda metin veri tutar.
TEXT Maximum 65535 (64 kb) karakter uzunluğunda metin veri tutar.
BLOB Maximum 65535(64 kb) karakter uzunluğunda ikilik(binary) veri tutar.
MEDIUMTEXT Maximum 16777215 (16mb) karakter uzunluğunda metin veri tutar.
MEDIUMBLOB Maximum 16777215 (16mb) karakter uzunluğunda ikilik(binary) veri tutar.
LONGTEXT Maximum 4294967295(4gb) karakter uzunluğunda metin veri tutar.
LONGBLOB Maximum 4294967295(4gb) karakter uzunluğunda ikilik(binary)
veri tutar.
Sayıları Saklayan Veri Türleri
Bölüm Açıklama
TINYINT()
-128 ile 127 değer alır. UNSIGNED seçilmemişse 0 ile 255 pozitif sayıları alır.
SMALLINT()
-32768 ile 32767 değer alır. UNSIGNED seçilmemişse 0 ile 65535 pozitif sayıları alır.
MEDIUMINT()
-8388608 ile 8388607 değer alır. UNSIGNED seçilmemişse 0 ile 16777215 pozitif sayıları değer alır.
INT()
-2147483648 ile 2147483647 değer alır. UNSIGNED seçilmemişse 0 ile 4294967295 pozitif sayıları alır.
BIGINT()
-9223372036854775808 ile 9223372036854775807 değer alır.
UNSIGNED seçilmemişse 0 ile 18446744073709551615 pozitif değer alır.
FLOAT
Küçük sayılarda ondalıklı noktalı sayılar tutar.
DOUBLE(,)
Büyük sayılarda ondakiklı noktalı sayılar tutar.
DECIMAL(,)
Çift basamaklı, sabit ondalıklı noktalı sayılar tutar.
Tarih ve zaman bilgisini saklayan veri türleri
Bölüm Açıklama
DATE YYYY-MM-DD.
DATETIME YYYY-MM-DD HH:MM:SS.
TIMESTAMP YYYYMMDDHHMMSS.
TIME HH:MM:SS.
Tabloya Veri Ekleme
Bir veya birden fazla sütun ve belirli veri türlerine göre oluşturulmuş bir tabloya SQL ile veri girişi yapabiliriz. Bunun için SQL ekleme sorgusu kullanılır.
• Ekleme Sorgusu
Herhangi bir tablodaki sütunlara veri eklemek için ekleme sorgusunu
kullanırız. Ekleme sorgusu INSERT INTO ile yapılmaktadır.
Kullanımı ;
INSERT INTO hedef [(sütun1[,sütun2[,…]])] VALUES (deger1[,deger2[,…]]) Parametre Açıklama
hedef Kayıtların ekleneceği bölüm
Sütun1,sütun2 Verileri ekleneceği tablodaki sütunların adları
Deger1,deger2 Tablodaki ilgili sütunlara eklenecek kayıtlardır. Deger1 adlı kayıt sütun1 alanına , deger2 adlı kayıt sütun2 alanına eklenmektedir.Değerleri
virgülle bir birinden ayırmalı ve her zaman tek tırnak işareti kullanmalısınız.
Örnek
Ogrenci adında bir tablo oluşturalım.
CREATE TABLE ogrenci(
numara INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, adsoyad VARCHAR(100) NOT NULL,
vize VARCHAR(3),
final VARCHAR(3)) DEFAULT CHARSET =utf8;
Tablo’ya veri ekleme 2 şekilde yapılabilir.
INSERT INTO ogrenci(adsoyad,vize,final) VALUES (“Gökhan AKDEMİR”,”85”,”80”);
INSERT INTO ogrenci VALUES (null,“Gökhan AKDEMİR”,”85”,”80”);
SQL ile Tablo’dan Kayıt Güncelleme
Herhangi bir tablodaki kayıtları güncellemek veya değiştirmek için güncelleme sorgusu kullanılır. Güncelleme sorgusu UPDATE deyimi ile yapılır.
Kullanımı ;
UPDATE tablo SET yenideger WHERE ölcut;
Parametre Açıklama
Tablo Değiştirmek istediğiniz verileri içeren tablonun adı.
Yenideger Güncelleştirilen kayıtlardaki belirli bir alana eklenecek değeri belirleyen ifade.
Ölcut Hangi kayıtların güncelleştirileceğini belirlediğimiz ifade. Yanlızca ifadeye uygun olan kayıtlar güncellenir.
Örnek
UPDATE ogrenci SET vize=”90” WHERE numara=2;
SQL ile Tablo’dan Kayıt Silme
Herhangi bir tablodaki kayıtları silmek için silme sorgusu kullanılır.
Silme sorgusu DELETE FROM deyimi ile yapılır.
Kullanımı ;
DELETE FROM tablo WHERE ölcut;
Parametre Açıklama
Tablo Silmek istediğiniz kayıtları içeren tablonun adı.
Ölcut Hangi kayıtların silineceğini belirlediğimiz ifade. Yanlızca ifadeye uygun olan kayıtlar silinir. İfade belirtilmediğinde tüm kayıtlar silinir.
Örnek
DELETE FROM ogrenci WHERE numara=2;
ogrenci tablosundaki numarası 2 olan kayıtı siler.
SQL ile Kayıt Sorgulama
Veritabanındaki bilgilerin çeşitli kriterlere göre gösterilme işlemidir.
SELECT Deyimi
Kayıtlı bilgilere ulaşmak için SELECT deyimi kullanılır.
Kullanımı ;
SELECT sütun FROM tablo Yan tümce;
Parametre Açıklama
sütun Kayıtları gösterilecek olan sütun veya sütunların adları.
tablo Kayıtları gösterilecek olan tablo adı.
Yan tümce Kayıtları özel kriterlere göre tanımlayacak SQL ifadeleri.
SELECT * FROM ogrenci;
ogrenci tablosundaki tüm sütunları çeker.
SELECT adsoyad FROM ogrenci;
ogrenci tablosundaki sadece adsoyad sütununu çeker.
Yan Tümce Yaptığı iş
WHERE Kayıtları belirli bir ölçüye göre filitre eder.
ORDER BY ASC ve DESC ile azalan yada artan sırada kayıtları listeler.
GROUP BY Benzer Kayıtları gruplandırmak için kullanılır.
HAVING Grup kriterleri tanımlanır ve gruplandırılmış sütunlardaki veriler filitreler.
Karşılaştırma Operatörleri ve Fonksiyonları
Operatör Anlamı Örnek Açıklama
= Eşitse Fiyat=2 Fiyat değeri 2 mi diye bakar
> Büyükse Fiyat>2 Fiyat değeri 2’den büyük mü diye bakar.
< Küçükse Fiyat<2 Fiyat değeri 2’den küçük mü diye bakar.
>= Büyük yada
eşitse
Fiyat>=2 Fiyat değeri 2’den büyük yada eşit mi diye bakar.
<= Küçük yada
eşitse
Fiyat<=2 Fiyat değeri 2’den küçük yada eşit mi diye bakar.
!= veyaz <> Eşit değilse Ad!=”Gökhan” Ad değeri Gökhan’a eşit değilse diye bakar.
Karşılaştırma Operatörleri ve Fonksiyonları
Operatör Anlamı Örnek Açıklama
IS NOT NULL Boş değilse Ad IS NOT NULL Ad değeri boş değilse diye bakar.
IS NULL Boş ise Ad IS NULL Ad değeri boşmu diye bakar.
BETWEEN Arasında ise Fiyat BETWEEN
1 AND 10 1 ile 10 arasındaki fiyat değerlerini alır.
IN İçinde ise Ad IN(“Gök”) Ad içerisinde Gök var mı diye bakar.
NOT IN İçinde değilse Ad NOT IN(“Gök”) Ad içerisinde Gök yoksa diye bakar.
LIKE Eşleniyorsa Ad
LIKE (“%Gökhan%”) Ad içinde Gökhan ile başlayan ve devam eden herhangi bir değer var mı diye bakar.
NOT LIKE Eşlenmiyorsa Ad NOT
LIKE (“%Gökhan%”) Ad içinde Gökhan ile başlayan ve devam etmeyen bir değer var mı diye bakar.
Örnek
SELECT * FROM ogrenci WHERE vize BETWEEN 60 and 80 ogrenci tablosunda vize notu 60 ile 80 arasındakileri gösterir.
SELECT * FROM ogrenci WHERE ad LIKE ‘g%’
ogrenci tablosunda adı g ile başlayanları gösterir.
LIKE ile eşleştirme işlemleri
Kayıtlarda arama ve eşleştirme gibi işlemlerde iki joker işareti vardır.
%(Yüzde işareti) sıfır veya birden fazla karakteri temsil eder.
_(Altçizgi) bir karakteri temsil eder.
Aşağıdaki Tabloda Örnekler verilmiştir.
Örnek Açıklama
‘A_Z’ A ile Z arasında herhangi bir karakteri araştırır.Örnek = ‘ABZ’
‘ABC%’ ABC ile başlayan her şeyi bulur.
‘%XYZ’ ‘XYZ ’ ile biten her şeyi bulur.
‘%AN%’ İçinde ‘AN’ geçen her şeyi bulur.
‘_AN%’ Başında herhangi bir karakter olan ve ‘AN’ ile başlayan ve sonu herhangi bir şey olan bilgileri bulur.