Veritabanı ve SQL Nedir?
Yayınlanma Tarihi : 07 Ağustos 2020
Veritabanı (İngilizce karşılığı "Database"), dijital dünyada çok büyük yeri olan önemli bir kavramdır. Adından da anlaşılacağı üzere veri depolamaya yarar ve günümüzde neredeyse her yazılım bir veritabanı kullanır. En basit örnek olarak üye olduğunuz bir sitedeki profil bilgileriniz o sitenin veritabanında tutulur. Online oyunlardaki, sosyal medyadaki, üye olduğunuz web sitelerindeki profiliniz, karakteriniz, tercihleriniz hepsi veritabanlarında tutulur.
Veritabanları, bir sunucu (server) üzerinde çalışan ve verileri tablolar halinde tutan (Relational - İlişkisel) türde veya Microsoft Access ve Excel gibi herhangi bir sunucuya ihtiyaç duymadan tek başına birer dosya olarak da kullanılabilen (Distributed - Dağıtılmış) şekildeki veri depolama ve yönetim araçlarıdır. Bunların dışında başka veritabanı türleri de olmakla beraber en sık kullanılanı "İlişkisel Veritabanları"dır. Distributed türdeki veritabanları güvenlik ve performans açısından çok tercih edilmez.
İlişkisel veritabanlarındaki her tablo, tutulacak verinin türünü ve ismini belirten sütunlar ile yeni verilerin girileceği satırlardan oluşur. Ayrıca farklı tablolar arasında Foreign Key adı verilen yapılar sayesinde veri bağlantıları da kurulabilir. Aşağıda "Urunler" isimli örnek bir veritabanı tablo şeması görülmektedir.
Urunler | ||||
---|---|---|---|---|
Urun_ID (int) | Urun_Adi (nvarchar) | Urun_Kodu (nvarchar) | Urun_Fiyat (money) | Urun_Stok (int) |
1 | Eldiven | PCE-21 | 1$ | 500 |
2 | Maske | PCM-19 | 2$ | 309 |
Bu tabloda Urun_ID, Urun_Adi... gibi başlıkların altındaki her satır, "Urunler" tablosuna ait bir veri kaydıdır ve her veri kaydının "Urun_ID" sütununda benzersiz (unique) bir ID'si yani numarası vardır. ID'ler, temsil ettikleri verilere ulaşılmasında kullanıldıkları için eşsiz yani tekrarlanmayan numaralar olmaları gerekmektedir, aksi taktirde istenen veriye sadece ID üzerinden erişmeye çalışmak yeterli olmayacaktır. ID'ler genellikle her yeni veri girişinde otomatik olarak artacak şekilde yapılandırılır.
Veritabanları, "Veritabanı Yönetim Sistemleri" denilen yazılımlar aracılığıyla yönetilir. Bu yazılımlar veritabanları ve tablolar oluşturma, düzenleme, silme ve yedekleme gibi işlemlerin yanında SQL sorguları ile veritabanlarındaki verileri istediğimiz biçimlerde listeleyebilmemize de olanak verir. Günümüzde çeşitli veritabanı yönetim sistemleri vardır; en çok kullanılanları Oracle, MySQL, Microsoft SQL Server, PostgreSQL ve MongoDB şeklinde sıralanabilir.
Veritabanı, sektörde ayrı bir uzmanlık gerektiren geniş kapsamlı bir konudur. Bu alanda uzmanlaşmış kişiler Veritabanı Yöneticisi (Database Administrator) veya Veritabanı Uzmanı (Database Specialist) gibi ünvanlara sahip profesyonellerdir.
Gelelim SQL'e. SQL (Structured Query Language - Yapılandırılmış Sorgu Dili), yukarıda bahsettiğim veritabanı tablolarına veri göndermemizi, bu verileri özelleştirilebilir şekilde listelememizi veya üzerinde düzenleme (güncelleme) ve silme gibi işlemler yapmamıza olanak tanıyan bir veritabanı kontrol dilidir. Gerçekte bir programlama dili olmasa da bu gibi operasyonel işlevleri sebebiyle programlama dünyasında SQL de bir programlama dili olarak kabul edilir.
SQL direkt olarak veritabanları üzerinde kullanılabildiği gibi geliştirilen uygulamalar içinde de kullanılabilir. Örneğin yine yukarıdaki Urunler tablosu üzerinden gidecek olursak tabloya yeni bir ürün girileceği, silineceği veya tablodaki bir verinin atıyorum stok adedi veya fiyatı güncelleneceği zaman bu genellikle uygulamanın arayüzü ile sağlanır, gidip de veritabanı sunucusuna bağlanıp sql kodları yazarak yapılmaz. Bu yöntem daha çok uygulama arayüzünde yapılamayacak olan sorgulamalarda kullanılır. Herhangi bir sosyal platformda profil resminizi veya bilgilerinizi değiştirmeniz, paylaşımlarınızı kaldırmanız veya yeni bir gönderi paylaşmanız gibi işlemlerin hepsi aslında kullandığınız sosyal platform uygulamasının arayüzü ile yaptığınız birer veritabanı işlemidir.
Aşağıda Urunler tablosu üzerinde uygulanan bazı SQL sorgu örneklerini bulabilirsiniz. Bu sorguları ve daha fazlasını detaylıca anlatacağım yazılarıma devam edeceğim.
/* Yorumlar /* */ karakterleri arasına yazılır. */
/* Urunler isimli tablodaki tüm verileri (*) listele. */
SELECT * FROM Urunler
/* Urunler isimli tabloda ürün kimliği (ID'si) 2 olan ürünün adını ve stok sayısını görüntüle. */
SELECT Urun_Adi, Urun_Stok FROM Urunler WHERE Urun_ID=2
/* Urunler isimli tabloda bulunan tüm ürünlerin toplam (SUM) stok sayısını görüntüle. */
SELECT SUM(Urun_Stok) FROM Urunler
/* Urunler isimli tabloya yeni bir ürün gir. (INSERT INTO) */
INSERT INTO Urunler (Urun_Adi, Urun_Kodu, Urun_Fiyat, Urun_Stok) VALUES ('Dezenfektan', 'PCD-01', 4, 200)
/* Urunler isimli tabloda ürün adı "Maske" ve stok sayısı 100'ün altında olan tüm ürünlerin stok sayısını 500 olarak güncelle. (UPDATE) */
UPDATE Urunler SET Urun_Stok=500 WHERE Urun_Adi='Maske' AND Urun_Stok < 100
/* Urunler isimli tabloda ürün adı olmayan (IS NULL) tüm ürünleri sil. (DELETE) */
DELETE FROM Urunler WHERE Urun_Adi IS NULL