SQL Dili – 1
Bilgisayar ortamında veri saklama ve eriÅŸiminde geçmiÅŸten günümüze insanoÄŸlu deÄŸiÅŸik yöntemler, yaklaşımlar kullanmıştır. Bunlardan Gelenksel Yaklaşım (Dosya – İşlem Sistemi) verileri ayrı ayrı dosyalarda gruplamaya dayanır. Bir biriyle ilgili olan ve aynı gruba dahil olan veriler bir dosyada, bir baÅŸka gruba dahil olan veriler de baÅŸka bir doyada tutulurdu. Geleneksel Yaklaşımın birçok sakıncası vardır ve bu sakıncaların beraberinde getirdiÄŸi sorunların üstesinden gelebilmek için de Veri Tabanı Yaklaşımı zamanla Geleneksel Yaklaşımın yerini almıştır.
Geleneksel Yaklaşımın (Dosya – İşlem Sistemi) Sakıncaları
- Veri tekrarı ve veri tutarsızlığı
- Verinin paylaşılamamsı
- Uygulamalardaki her yeni gereksinimin ve değişikliğin yalnız uzman kişiler tarafında karşılanabilmesi
- Veriye erişim ve istenen veriyi elde etme güçlükleri
- Karmaşık veri saklama yapıları ve erişim yöntemlerini bilme zorunluluğu
- Bütünlük (integrity) sorunları
- Güvenlik, gizlilik sorunları
- Tasarım farklılıkları, standart eksikliği
- Yedekleme, yeniden başlatma, onarma gibi işletim sorunları
Veri Tabanı Yaklaşımının Yararları
- Ortak verilerin tekrarının önlenmesi; verilerin merkezi denetiminin ve tutarlılığının sağlanması
- Veri paylaşımının sağlanması
- Fiziksel yapı ve erişim yöntemi karmaşıklıklarının, çok katmanlı mimarilerle kullanıcılardan gizlenmesi
- Her kullanıcıya yalnız ilgilendiği verilerin, alışık olduğu kolay, anlaşılır yapılarda sunulması
- Sunulan çözümleme, tasarım ve geliştirme araçları ile uygulama yazılımı geliştirmenin kolaylaşması.
- Veri bütünlüğünün için gerekli olanakların sağlanması, mekanizmaların kurulması
- Güvenlik ve gizliliğin istenilen düzeyde sağlanması
- Yedekleme, yeniden başlatma, onarma gibi işletim sorunlarına çözüm getirilmesi
SQL – Tarihçe
Veri Tabanı Yaklaşımı ile birlikte bir veri sorgulama diline veya aracına ihtiyaç duyulmuÅŸtur. İlk baÅŸta matematiksel bir sözdizimine sahip olan SQUARE adlı bir dil geliÅŸtirilimiÅŸtir. GeniÅŸ kullanıcı kitleleri tarafında kolay kullanılabilmesi için matematiksel söz dizimli SQUARE dilinden vazgeçilerek, İngilizce’ye benzer sözdizimine sahip bir dil oluÅŸturulmuÅŸ ve SEQUEL (Structured English QUEry Language) olarak adlandırılmıştır. Daha sonra da bu SEQUEL dili, İngilizce söyleniÅŸine paralel olarak SQL olarak adlandırılmıştır.
SQL dili ilişkisel alanda büyük ilgi görmüş ve İlişkisel Veri Tabanı Yönetim Sistemlerinin (VTYS) tümünde yer alan atandart dil görünümü kazanmıştır. Bu nedenle Veri Tabanı konusunda çalışan tüm bilişim teknik personeli tarafından bilinmesi gereken bir dil konumundadır.
SQL – Veri Tanımlama Olanakları
SQL veri tanımlama deyimlerinden başlıcaları şunlardır:
|
CREATE TABLE |
ALTER TABLE |
DROP TABLE |
|
CREATE VIEW |
|
DROP VIEW |
|
CREATE INDEX |
|
DROP INDEX |
CREATE TABLE
CREATE TABLE tablo_adı
       (nitelik1 tür1 [DEFAULT ifade] [NOT NULL], ...nitelikN
       [[CONSTRAINT kısıt_adı] CHECK durum1, ...durumN] )
ALTER TABLE
       ALTER TABLE tablo_adı [*] ADD COLUMN nitelik tür
       ALTER TABLE tablo_adı [*] RENAME [COLUMN] nitelik1 TO nitelik2
       ALTER TABLE tablo_adı1 RENAME TO tablo_adı2
DROP TABLE
       DROP TABLE tablo_adı1, ...tablo_adıN;
CREATE VIEW
       CREATE VIEW görüş_adı AS
       SELECT [DISTINCT [ON nitelikN]]
       ifade1 [AS nitelik1], ...nitelikN
       [FROM tablo_adı1[,...tablo_adıN]]
       [WHERE koşul]
       [GROUP BY grup_listesi];
DROP VIEW
   DROP VIEW görüş_adı
CREATE INDEX
       CREATE [UNIQUE] INDEX indis_adı ON tablo_adı [USING erişim_yöntemi]
       ( nitelik1 [tür_sınıfı1], ...nitelikN | işlevadı(nitelik1, ...)
       [tür_sınıfı] )
DROP INDEX
       DROP INDEX indis_adıÂ
SQL – Veri İşleme Olanakları
SQL veri işleme deyimlerinden başlıcaları şunlardır:
SELECT Deyimi
UPDATE Deyimi
INSERT Deyimi
DELETE Deyimi
SELECT Deyimi
       SELECT [DISTINCT [ON nitelikN]] ifade1 [AS nitelik1], ...ifadeN
       [INTO [TEMP] [TABLE] tablo_adı]
       [FROM tablo_listesi]
       [WHERE koşul]
       [GROUP BY grup_listesi]
       [HAVING having_cümleciği]
       [ { UNION [ALL] | INTERSECT | EXCEPT } SELECT ...]
       [ORDER BY nitelik1 [ASC|DESC] [USING işleç1], ...nitelikN ]
       [FOR UPDATE [OF tablo_adı...]]
       [LIMIT sayı [OFFSET|, sayı]]
UPDATE Deyimi
       UPDATE tablo_adı SET nitelik1 = ifade1, ...nitelikN = ifadeN
       [FROM tablo_listesi]
       [WHERE koşul]
INSERT Deyimi
       INSERT INTO tablo_adı [(nitelik1, ...nitelikN)]
       VALUES (ifade1,..ifadeN) |
       SELECT [DISTINCT [ON attrN]]
       ifade1, ...ifadeN
       [FROM tablo_listesi]
       [WHERE koşul]
       [GROUP BY grup_listesi]
       [HAVING having_cümleciği]
       [ { UNION [ALL] | INTERSECT | EXCEPT } SELECT ...]
DELETE Deyimi
       DELETE FROM tablo_adı [WHERE koşul]
Â
PostgreSQL Veri Tabanı Yönetim Sistemi
PostgreSQL Nedir?
PostgreSQL; alt sorgu, iÅŸlem bilgi (transaction), kullanıcı-tanımlı tür ve iÅŸlevler gibi SQL dilinin hemen hemen tüm yapılarını destekleyen, Nesne-İliÅŸkisel Veri Tabanı Yönetim Sistemidir. Kaynak kodu açıktır ve PostgreSQL Inc. ÅŸirketi tarafından ticari destek de saÄŸlanmaktadır. Bugünkü güncel sürümü 6.5.2′dir.
İlişkisel VTYS Olarak Yetenekleri Nelerdir?
- SQL92/SQL3 dili deste[i
- işlembilgi bütünlüğü (transaction integrity)
- tür genişleyebilirlişi (type extensibility)
- sınıf tanımlama (classes)
- kalıtım (inheritance)
- iÅŸlevler (functions)
- kısıtlamalar (constraints)
- tetikleyiciler (triggers)
- kurallar (rules)
- indisler (indexes)
İlişkisel VTYS Olarak Eksikleri Nelerdir?
- Yabanci (Ikincil) Anahtar tanimlayamama.
- 8 KB’tan büyük sorgulari isleyememe.
PostgreSQL Nasıl Çalışır?
- PostgreSQL çok kullanıcılı ard ucu: Belirli bir porttan PostgreSQL’e gelen istemleri ele alır. İstem gelir gelmez fork() sistem çaÄŸrısını kullarak PostgreSQL tek kullanıcılı ard ucuna istemi devreder. Sistem üzerinde “postmaster” adıyla bulunur.
- PostgreSQL tek kullanıcılı ard ucu: İstemci ile doğrudan bir etkileşim içindedir ve istemcinin tüm istemlerine cevap verir. Varsayılan olarak en fazla 32 adet tek kullanıcılı ard uc aynı anda hizmet verebilir. Bu sayı çok kullanıcılı ucun çalıştırılması esnasında bir parametre ile azami 1024 değerine çıkartılabilir (postmaster -N 1024). Sistem üzerinde postgres adıyla bulunur.
- PostgreSQL port numarası: Varsayılan deÄŸeri 5432′dir ve PostgreSQL çok kullanıcılı ard ucuna çalıştırılması esnasında verilen parametre (postmaster -p 8355) ile deÄŸiÅŸtirilebilir.
- PostgreSQL’in kullandığı protokoller: Hem UDP hem de TCP/IP kullanmaktadır. Genelde yerel veri tabanı baÄŸlantılarında UDP uzak veri tabanı baÄŸlantılarında da TCP/IP kullanır.
- PostgreSQL Arayüzleri: Herhangi bir sistemde çalışan PostgreSQL ard ucuna bağlanan ve kullanıcı yazılımları için bir arayüz oluşturan yordam kitaplıklarıdır.