Açıklar

Anti Hack

Anti Virüs

İnternet

Program

Home » Makale

SQL’e GiriÅŸ {!}

Submitted by Emrah on Perşembe, 22 Kasım 2007No Comment

SQL GİRİŞ Veritabanı işlemleri yaparken, bilgilerin ortak özelliklerine göre sorgularının yapılmasını SQL dili ile sağlarız. SQL dili ile bir Query yani sorgulama oluşturmak oldukça basittir. SQL dilinde kullanılan belli başlı önemli komutlar aşağıda anlatılmaktadır.

Bundan önce Select Komutu ile SQL de kullanılan komutları kalıp halinde yazalım, daha sonra bunları açıklayacağız. Select Tablo1.Alan1, Tablo1.Alan2, … [ * ] From TabloAdı
Where Sorgulama İfadesi
Group By Gruplanacak Hücreler
Order By Küçükten büyüğe yada Büyükten küçüğe Hücrelerin sıralanması
Having Gruplanan yada birleştirilen kayıtların hangi kritere göre sorgulanması Select ile kullanılmayan SQL komutlarından bazılarıda şunlardır : Insert Into Tablo1 (Alan1,Alan2)
Values (’String İfade’,Sayısal İfade …) Delete * From Tablo1 Where Sorgulama İfadesi Update Tablo1
set Tablo1.Alan1=’String İfade’,Tablo1.Alan2=Sayısal İfade, …

 

Where Sorgulama İfadesi SQL KOMUTLARI FROM Deyimi From deyimi sorgulanacak ve kullanılacak bilgilerin hangi tablodan alınacağını belirtir. Tablodan hangi hücrelerin içindeki bilgilerin kullanılacağını ise;

TabloAdı.Hücre1, TabloAdı.Hücre2, … veya * jokeri ile belirleriz. Bir örnek ile daha iyi anlayacağız. Ögrenci Tablosu;
ADI SOYADI NO metin[20] metin[20] sayı
Örnek : Ögrenci tablosu ADI, SOYADI, NO omak üzere 3 hücreden oluÅŸan bir tablo olsun. SQL ile, Bu tabodan ADI ve SOYADI hücrelerini seçerek yeni bir tablo (Bu bir sorgudur{Query} ) oluÅŸturunuz. Select ögrenci.ADI, ögrenci.SOYADI From ögrenci EÄŸer tüm hücreleri seçin deseydik ; o zaman yazacağımız SQL cümlesi şöyle olmalı idi. : Select ögrenci.ADI, ögrenci.SOYADI, ögrenci.NO From ögrenci yada Select * From ögrenci WHERE Deyimi Where deyimini de ; bir tablodan istediÄŸimiz hücreleri seçerken, o tabloda bulunan kayıtlardan hangilerini, hangi kriterlere göre almak istersek kullanırız. Yani tabloda bulunan kayıtlardan hangilerini almak istiyorsak istediÄŸimiz koÅŸulu where deyiminden sonra kullanarak bu kayıtları elde edebiliriz. AÅŸağıdaki örnekleri inceleyelim… Örnek 1 : Yine ögrenci tablosunda bulunan kayıtlardan Adı Serkan olan öğrencileri seçmemizi saÄŸlayan SQL cümlesi şöyledir..: Select * From ögrenci Where ögrenci.ADI = “Serkan” Örnek 2: Yada soyadında ” r ” harfi geçen öğrencileri aÅŸağıdaki SQL cümlesi ile seçeriz..: Select * From ögrenci Where ögrenci.SOYADI = “%r%” Örnek 3: EÄŸer Tabloda bulunan kayıtlardan diyelim ki; numarası 1044 ile 2866 arasında olan öğrencileri seçmek istersek aÅŸağıdaki SQL cümlesini kullanırız..: Select * From ögrenci Where 1044<ögrenci.NO<2866 ############################################### GROUP BY Deyimi Group by deyimi SUM, COUNT kullanarak toplam bir sonuç ile bir tablodan istenilen kritere göre istenilen hücreler alınır ve yine group by ‘dan sonra yazılan hücrelere göre gruplanır. GROUP BY isteÄŸe baÄŸlıdır. SELECT deyiminde SQL toplam iÅŸlevi yoksa özet deÄŸerler gözardı edilir. Örnek 1 : Yine ögrenci tablomuzu kullanarakdan soyadı Türkel olan öğrencileri seçerek AD, SOYAD ve NO fieldlarına göre gruplandıralım…: Select ögrenci.AD, ögreci.SOYAD, ögrenci.NO From ögrenci Where ögrenci.SOYAD=’Türkel’ Group By ögrenci.AD, ögreci.SOYAD, ögrenci.NO ############################################### ORDER BY Deyimi Order By deyimi ile de; sorgulama sonucunda bulunan kayıtlar verilen hücrelere göre, Büyükten küçüğe yada Küçükden büyüğe doÄŸru sıralanır. Örnek 1 : Adı Serkan olan Öğrencilerin numaralarını küçükden büyüğe doÄŸru sıralayınız..: Select * From ögrenci Where ögrenci.AD=’Serkan’ Order By ögrenci.NO [asc] asc yi yazmasakda burada default deÄŸer olduÄŸu için küçükden büyüğe doÄŸru sıralama yapardı. EÄŸer büyükden küçüğe doÄŸru sırala dese idik o zaman şöyle bir SQL cümlesi yazmalıydık…: Select * From ögrenci Where ögrenci.AD=’Serkan’ Order By ögrenci.NO Desc ############################################### HAVİNG Deyimi Having Deyimi de; GROUP BY yan tümcesi olan bir SELECT deyiminde hangi gruplandırılmış kayıtların görüntüleneceÄŸini belirler. Yani GROUP BY kayıtları birleÅŸtirdikten sonra, HAVING deyimide, HAVING yan tümcesinin koÅŸullarını saÄŸlayan ve GROUP BY yan tümcesi ile gruplandırılmış kayıtları görüntüler. Örnek 1 : ögrenci tablosundan AD, SOYAD ve NO fieldlarını alıp bunları gruplayan ve sonra bunlarıda Numarası 1000 ile 2000 arasında olan kayıtlara göre listeleyen SQL cümlesini yazınız..: Select ögrenci.AD, ögrenci.SOYAD, ögrenci.NO From ögrenci
Group By ögrenci.AD, ögrenci.SOYAD, ögrenci.NO
Having 1000<ögrenci.NO<2000 ############################################### INSERT INTO Deyimi Insert Into Deyimi bir tabloya bir veya daha çok sayıda kayıt eklemeye yarayan SQL komutudur. Buna ekleme sorgusu da denir. Esas kullanılma kalıbı aşağıdaki gibidir..: Çok sayıda kayıt ekleme sorgusu: INSERT INTO TabloAdı [(alan1[, alan2[, ...]])] [IN dışveritabanı]
SELECT [kaynak.]alan1[, alan2[, …] FROM tabloifadesi Tek kayıt ekleme sorgusu: INSERT INTO TabloAdı [(alan1[, alan2[, …]])] VALUES (deÄŸer1[, deÄŸer2[, …]) Örnek 1 : ögrenci tablosuna AD = “Serkan” SOYAD = “Türkel” NO = 4683 bilgilerini ekleten SQL cümlesini yazın..: Insert Into ögrenci (AD,SOYAD,NO) Values(’Serkan’,’Türkel’,4683) ############################################### DELETE Deyimi Delete deyimini bir tablodan bir yada daha fazla kayıt silmek için kullanırız. aÅŸağıdaki gibi bir yazılış kalıbı vardır..: DELETE [Tablo.*] FROM Tablo WHERE sorgulama ifadesi Örnek 1 : Yine ögrenci tablosundan numarası 4556 olan öğrencinin kaydını silen SQL cümlesiniz yazınız..: Delete * From ögrenci Where ögrenci.NO=4556 ############################################### UPDATE Deyimi Belirtilen kriterlere göre tablodan ilgili kayıt/kayıtları alarak deÄŸerlerini deÄŸiÅŸtirmeye yarayan SQL komutudur. Kullanılış Kalıbı aÅŸağıdaki gibidir..: UPDATE Tablo SET yenideÄŸer WHERE Sorgulama İfadesi Örnek 1 : ögrenci tablosuna eklediÄŸimiz 4683 numaraları Serkan Türkel ‘in adını ve soyadını deÄŸiÅŸtirelim. Adı = “Ali”, Soyadı = “Sert” olsun. SQL cümlesini yazın…: UPDATE ögrenci SET ögrenci.AD = ‘Ali’,ögrenci.SOYAD = ‘Sert’ Where ögrenci.NO = 4683 SQL FONKSİYONLARI SQL yazılımında sorgulama yapılırken kullanılabilecek aritmetik fonksiyonlar tabloda verilmiÅŸtir…
SUM Yapılan sorgulamada kriteri karşılayan sayısal bilgilerin toplamını verir. AVG Yapılan sorgulamada kritere karşılık gelen sayısal bilgilerin aritmetik ortalamasını alır. COUNT Yapılan sorgulamada kritere uyan sayısal bilgilerin adetini hesaplar. MAX Yapılan sorgulamada kritere uyan sayısal bilgilerin en büyük değerini yakalar. MIN Yapılan sorgulamada kritere uyan sayısal bilgilerin en küçük değerini yakalar. STDEV Yapılan sorgulamada kritere uyan sayısal bilgilerin standart sapmasını alır. STDEVP Yapılan sorgulamada kritere uyan sayısal bilgilerin istatistiksel standart sapmasını alır. VAR Yapılan sorgulamada kritere uyan sayısal bilgilerin varyansını alır. VARP Yapılan sorgulamada kritere uyan sayısal bilgilerin istatistiksel varyansını alır.

YAPISAL SORGULAMA DİLİ
BÖLÜM 1 Yapisal Sorgulama Dili (SQL) İliÅŸkisel veri tabanı yönetim sistemleri (RDBS) modeli ilk önce 1970 yılında Dr.E.F. Codd tarafından tarif edilmiÅŸtir. SQL veya Structured English Query Language (SEQUEL), IBM firması tarafından Codd’un modeli kullanılmak için geliÅŸtirilmiÅŸtir. SEQUEL sonraları SQL olmuÅŸtur. 1979 yılında, Relational Software ,SQL’in ilk ticari uygulamasını geliÅŸtirmiÅŸtir. Bugün SQL, iliÅŸkisel veri tabanı yönetim sistemleri standartı olarak kabul edilmektedir. SQL, iliÅŸkisel veri tabanlarındaki bilgileri sorgulamak için kullanılan bir dildir. SQL, tüm kullanıcıların ve uygulamaların veri tabanına eriÅŸmek için kullandıkları komutlar bütünüdür. Uygulama programları ve veri tabanı araçları kullanıcılara çoÄŸu durumda SQL kullanmadan veri tabanına eriÅŸim imkanını sunmaktadırlar fakat bu uygulamalarda geri planda SQL kullnmaktadırlar. Oracle SQL’I, standartlara uygundur. Daha da ötesinde, Oracle,SQL standartlarının geliÅŸmesinde motor güç olan bir kurumdur. American National Standarts Institue (ANSI) ve International Standarts Organization (ISO) tarafından belirlenen son SQL standartı, SQL-92’dir. SQL-92’de üç aÅŸamalı uygunluk vardır, · İlk seviye (Entry Level) · Orta seviye (Intermediate Level) · İleri seviyedir (Full Level) SQL, iliÅŸkisel veri tabanları ile uygulamaların diyaloÄŸunu saÄŸlamaktadır. SQL temelde verilerle mantıksal seviyede çalışmaktadır. Yani, bir tablodan birkaç kayıt seçebilmek için, o kayıtları seçebilecek bir koÅŸul belirtilir. KoÅŸula uyan tüm kayıtlar bir basamakta gelir ve bunlar kullnıcıya gösterilebildiÄŸi gibi, bir baÅŸka SQL’e veya uygulamaya da gönderilebilir. Kayıtların tek tek nasıl geldiÄŸi ve fiziksel olarak veri tabanının neresinde ve nasıl tutulduÄŸu ile SQL ilgilenmektedir. SQL komutları ile , · Veri sorgulama · Bir tabloya kayıt ekleme, deÄŸiÅŸtirme ve silme · Veri tabanı nesneleri (database objects) yaratma, deÄŸiÅŸtirme ve silme · Veri tabanına ve nesnelerine eriÅŸimi kontrol etme · Veri tabanı bütünlüğünü ve tutarlılığını saÄŸlama iÅŸlemleri yapılabilmektedir. SQL komutları bir veya daha fazla satır olbilmektedir. SQL cümlelerinin sonuna noktalı virgül (;) konmaktadır. Birden fazla satır olan komutlarda en son satırın sonuna “ / �? iÅŸareti isteÄŸe baÄŸlı olarak konabilmektedir. PL/SQL , Oracle’in SQL komutlarına yapısal dillere AİT özellikleri (begin, end, loop, for, if, elsif, vb.) eklediÄŸi kendi standardı olan bir dildir. SQL*Plus, SQL ve PL/SQL komutlarının kullanılabildiÄŸi Oracle ürünüdür. 1.1 Veri Tipleri (Data Types) Bir tablo oluÅŸtururken her sütunun; bir yordam veya fonksiyon oluÅŸtururken de her argümanın veri tipi olmak zorundadır. Bu veri tipleri o alana girilecek veriyi veya o yordamda kullanılacak argümanı sınırlandırır. Bu veri tipleri ÅŸunlardır: · CHAR(sayı) · DATE · MSLABEL · NUMBER (tam,ondalık) · VARCHAR2 (sayı) · LONG · LONG RAW · RAW (sayı) · ROWID Åžimdi bu tanımları açıklayalım. CHAR (sayı): Sabit uzunluktaki alfanümerik (karakter) verilerin tutulabildiÄŸi alanlar için kullanılır. Maksimum 255 karakter olabilir. EÄŸer sayı ile ifade edilen numaralardan daha kısa uzunlukta veriler girilirse Oracle kaydın sonuna boÅŸluk ekleyerek sabit uzunuÄŸa jadar getirir. DATE: Tarih tutan alanlar için kullanılır. Bu tip alanlarda, tarih bilgileri ve saat bilgileri tutulabilir. Tarih formatları, ülkelere göre deÄŸiÅŸmektedir. Tarih alanları ile aritmatik iÅŸlemleri yapılabilmektedir. Standart olanı, DD-MON-YY’dir fakat bu amerikalıların kullandıkları ÅŸekildir, bu formatta MON yerine JAN, FEB, MAR gibi ayların ingilizce karşılıklarının ilk üç karakteri yazılmaktadır. MLSLABEL: Trusted Oracle’ da ( Oracle’ nın güvenlik açısından biraz daha geliÅŸmiÅŸ versiyonu) kullanılan iÅŸletim sistemine ait binary dosyadır. NUMBER (tam, ondalık): Nümerik verilerin tutulduÄŸu alanlar için kullanılır. Tam kısım maksimum 38 basamak olabilir. Ondalık kısmın basamak sayısı da –84 ile 127 arasındadır. LONG: 2 GB’ a kadar karakter bilgi tutabilen alanlar için kullanılır.Bir tabloda birden fazla long veri tipine sahip olamaz. LONG veri tipine sahip olan alanlar üzerinde indeks oluÅŸturulamaz. LONG alanlar aÅŸağıdaki tip SQL cümlelerinde kullanılamazlar: *WHERE *GROUP BY * ORDER BY * DISTINC * CREATE CLUSTER *CREATE TABLE AS SELECT *SUBSTR, INSTR gibi … LONG RAW: 2 GB’ a kadar binary bilgi tutabilen alanlar için kullanılır. RAW (sayı): Maksimum 255 byte’a kadar bilgi tutabilen binary alanlar için kullnılır. RAWID: Bir Kaydın tekil adresini tutan alanlar için kullanılır. Veri tabanındaki her kaydın bir adresi vardır. Bu deÄŸer , SQL cümlesi içinde diÄŸer sütunlar ile birlikte ROWID yazarak öğRenilebilir. ROWID üç kısımdan oluÅŸmaktadır: BLOK.KAYIT.DOSYA ‘dır. VARCHAR2 (sayı) : DeÄŸiÅŸken uzunluktaki alfanümerik dataların tutulabildiÄŸi alanlar için kullanılır. Maksimum 2000 karakter olabilir. 1.2 SQL’ in Bölümleri : SQL, temel olarak aÅŸağıdaki bölümlerden oluÅŸmaktadır. · SELECT: Seçilecek alanların yazıldığı bölümdür. · FROM: Kullanılacak tabloların yazıldığı bölümdür. · WHERE: Sorgu ÅŸartlarının yazıldığı bölümdür. · GROUP BY: Belli alanlara göre kayıtları gruplayıp getirmek için kullanılan bölümdür. · HAVING: Group By’ ın kullanıldığı SQL’lerdeki grupla ilgili ÅŸart bölümüdür. · ORDER BY: Sorgu sonucunda dönen kayıtlar için sıralamanın tanımlandığı bölümdür. 1.3 SQL’ de aritmatiksel ifadeler ve fonksiyonlar : 1.3.1 Aritmatiksel ifadeler: SELECT komutu ile, veri tabanında mevcut tablolardan listeleme yaparken, tabloda ayrı bir sütun olarak yer almamış ve ancak bir hesaplama sonucunda üretilebilecek bilgileri de liste içine katmak mümkündür. AÅŸağıdaki SELECT komutu ile personelin ÅŸu anda geçerli olan maaşı ile bu maaşın %32 zamlı ÅŸekli listelenmektedir: SELECT ad, soyad, maaÅŸ, maaÅŸ*1.32 FROM personel; Hesaplanmış alanları elde etmek için oluÅŸturulacak aritmatiksel ifadelerde, aÅŸağıda belirtilen tablodaki sembollerden yararlanılır: Tablo1.1. SQL’de Aritmatiksel semboller Operatör İşlevi ** veya ^ Üs alma * Çarpma / Bölme + Toplama - Çıkarma Öncelik sırası matematikte ve diÄŸer bilgisayar dillerinde olduÄŸu gibidir.Üs alma hepsinden önceliklidir. Sonra * ve / gelir. * ve / aynı önceliÄŸe sahiptir. + ve – en son önceliklidir. Parantezler kullanılarak öncelik sırası deÄŸiÅŸtirilebilir. 1.3.2 Kümeleme Fonksiyonları : SQL, tablo içinden çeÅŸitli matematiksel iÅŸlemlerin sonucunu otomatik olarak üretmeyi saÄŸlayan fonksiyonlara sahiptir. Bu fonksiyonlar örneklerle birlikte aÅŸağıda verilmiÅŸtir. · Sum Fonksiyonu : Fonksiyonun argümanı olarak belirtilen sütun ile iliÅŸkili olarak toplama iÅŸlemini gerçekleÅŸtirir. Örnek : İşletmedeki personelin brüt maaÅŸları toplamı ne kadardır? Çözüm : SELECT SUM (brüt) FROM personel; Örnek : Bilgi iÅŸlem bölümündekilerin toplam maaşı ne kadardır? Çözüm : Bilgi iÅŸlem bölümünün bölüm numarasını 5 olarak kabul edelim; SELECT SUM ( brüt) FROM personel WHERE bol_no=5; İfadesi ile sonuç elde edilebilir. Sonuç sadece bilgi iÅŸlem bölümündekilerin maaÅŸlarının toplamı olacaktır. Örnek : Satış, muhasebe, ve bilgi iÅŸlem bölümlerindeki personelin maaÅŸları toplamı nedir? Çözüm : Satış bölümü için, böl_no 1, muhasebe için 2 ve bilgi iþlem için 5 olarak alınırsa ; SELECT SUM (brüt) FROM personel WHERE böl_no IN (1,2,5); Örnek : MaaÅŸları 5000000 TL’ nin altında olan bayan personelin maaÅŸları toplamı nedir? Çözüm : Bayan personeli, daha önceden cins alanına .F. yerleÅŸtirerek kodlamış isek ; SELECT SUM(brüt) FROM personel WHERE cins=.F. AND Brüt < 5000000; İfadesi istenen çözüm verecektir. AVG Fonksiyonu : Aritmatiksel ortalama hesaplamak için kullanılır. SELECT AVG (brüt) FROM personel; Komutu , iÅŸletmedeki ortalama maaşı hesaplayarak görüntüleyecektir. Bu fonsiyon ile de , koÅŸula baÄŸlı olarak hesaplatma yaptırılabilir. Örnek : Bilgi iÅŸlem bölümündekilerin maaÅŸ ortalamaları ne kadardır? Çözüm : Bilgi iÅŸlem bölümünün böl_nosu 5 ise SELECT AVG (brüt) FROM personel WHERE böl_no =5 MAX Fonksiyonu : Tablo içinde , belirtilen sütun (alan) içindeki en büyük deÄŸeri bulur. Örnek : İşletme içindeki en yüksek maaÅŸ ne kadardır? Çözüm : SELECT MAX (brüt) FROM personel ; Örnek : Bilgi iÅŸlem bölümündeki en yüksek maaÅŸ ne kadardır ? Çözüm : SELECT MAX (brut) FROM personel WHERE böl_no=5; Örnek : Bayan personel içinde en yüksek maaÅŸ ne kadardır ? Çözüm : SELECT MAX (brüt) FROM personel WHERE cins=.F. ; MIN Fonksiyonu : Tablo içinde, belirlenen sütun içindeki en küçük deÄŸeri bulur. Örnek : İşletme içinde 4 Mayıs 1970’ den önce doÄŸanlar için asgari ücret nedir? Çözüm : SELECT MIN (brüt) FROM personel WHERE dog_tar < {05/04/70} ; COUNT Fonksiyonu : Tablo içinde herhangi bir sayma iÅŸlemi gerçekleÅŸtirmek için kullanılır. Örnek : Personel tablosunda kaç satır vardır ? (Bu , her satırda farklı bir personel olduÄŸu düşünülürse personel sayısı anlamına da gelmektedir.) Çözüm : SELECT COUNT (*) FROM personel; Bu koÅŸula baÄŸlı olarak da saydırma yapmak mümkündür. Örnek : Ücreti 6000000 ‘dan fazla olan personel sayısı nedir ? Çözüm : SELECT COUNT (*) FROM personel WHERE brüt > 6000000 ; COUNT fonksiyonu, DISTINCT sözcüğü ile de kullanılabilir. ÖrneÄŸin personel tablosunda mevcut personelin, iÅŸletme içinde kaç tane farklı bölümde çalıştığı bulunmak istenirse aÅŸağıdaki SELECT komutu kullanılabilir. SELECT COUNT ( DISTINC böl_no) FROM personel; Count (böl_no) 5 Sonuçta 5 farklı bölüm olduÄŸu listelenmiÅŸtir. COUNT komutunda , * argümanının kullanılması, tüm sütunların (alanların) iÅŸleme sokulmasını, alan adının belirtilmesi ise (COUNT (böl_no) gibi), sadece belirtilen sütunun iÅŸleme sokulmasını saÄŸlar. 1.3.3 Gruplandırarak iÅŸlem yapma : Yukarıda anlatılan fonksiyonları, tablodaki bilgileri , bazı özelliklere göre gruplandırarak bu gruplandırılmış veri üzerinde de uygulama yapmak mümkündür.Bu iÅŸlem GROUP BY sözcükleri ile gerçekleÅŸtirilmektedir. Örnek : Her bölümdeki ortalama maaÅŸ nedir? Çözüm : Burada istenen, bölümler bazında ortalama maaÅŸ olduÄŸuna göre, personel tablosundaki satırlar, bölüm numaralarına göre (böl_no) gruplandırılarak her bir grubun maaÅŸ ortalaması ayrı ayrı hesaplanarak listelenebilir.AÅŸağıda SELECT komutu ile bu iÅŸlem gerçekleÅŸtirilektedir: SELECT böl_no , AVG (brüt) FROM personel GROUP BY böl_no ; Sonuç : Böl_no AVG (brüt) 1 2500000 2 6800000 3 7400000 4 12500000 Her bölümdeki en yüksek maaşı olan kiÅŸiler listelenmek istenirse, aÅŸağıdaki komut kullanılabilir: SELECT böl_no , MAX (brüt) , ad , soyad FROM personel GROUP BY böl_no ; Tablo1.2. Peronel tablosundaki bilgiler : Brüt Ad soyad Böl_no 5000000 Ali Can 1 3000000 AyÅŸe Okan 1 8000000 Akın Oran 2 10000000 Rana Åžensoy 2 Tablo1.3. Åžeklinde ise yukarıdaki SELECT komutunun çıktısı Böl_no Max_brüt Ad Soyad 1 5000000 Ali Can 2 10000000 Rana Åžensoy Åžeklinde olacaktır. Gruplandırarak kümeleme fonsiyonlarını uygularken koÅŸul da verilebilir. Bu durumda grup üzerindeki hesaplamalarla ilgili koÅŸul belirtilirken HAVING sözcüğünü kullanmak gerekir. Örnek : En yüksek maaşın 9000000’ dan fazla olduÄŸu bölümlerdeki personele ait ortalama maaÅŸları listeleyiniz. Çözüm : SELECT böl_no , AVG (brüt) FROM personel GROUP BY böl_no HAVING AVG (brüt) > 9000000 ; Tablo1.4. Personel tablosunda ÅŸu bilgiler mevcut olsun : ……………… Böl_no ………………… Brüt 1 6000000 1 17000000 2 7500000 2 8000000 3 12000000 3 11000000 1 14000000 1

TEMEL SQL SORGULAMALARI

BÖLÜM 2 Temel SQL Sorgulamaları : SELECT Komutu : Tek tablodan gerekli bilgileri elde edbilmek için sorgulama yapabilecek SQL komutu olan SELECT ‘ in en basit hali aÅŸağıdaki gibidir : SELECT * FROM personel ; Bu komut, personel adlı tablo içindeki tüm bilgileri koÅŸulsuz olarak listeleyecektir. SELECT sözcüğünü izleyen kısımda * sembolünün bulunması ilgili tablodaki tüm sütun isimlerinin ve ilgili bilgilerin listelenmesini saÄŸlayacaktır. SELECT sicil, sos_g_no, ad, soyad, dog_tar, adres, cins, brüt, böl_no, yön_s_g_n FROM personel ; Åžeklinde olacaktır.SELECT sözcüğünden sonra gelen kısımda sütun adları, FROM sözcüğünden sonra gelen kısımda ise tablo ismi yer almaktadır. 2.1 Tekrarlı Satırların Ortadan Kaldırılması : SQL ‘ de tablÅŸo içinde birbirinin aynı data içeren satırlara müseade edilir. Birbirinin aynı olan satırların listeleme esnasında bir kez yazılması için SELECT komutuna DISTINC sözcüğü eklenir. SELECT DISTINC sat_no FROMpar_sat;
Bu komut ile par_sat adlı tablodan satıcı noları tekrarsız olarak listelenecektir. 2.2 Tablo Bilgilerinin Sıralanmış Olarak Listelenmesi : Tablodan listelenecek bilgilerin belirli bir sütun adına göre sıralanmış olarak görüntülenmesi için SELECT komutuna ORDER BY sözcüğü ilave edilir. ÖrneÄŸin personel tablosundaki bilgilerin sicil, ad, soyad, ve brüt sütunlarını maaÅŸa göre sıralı olarak listeleyiniz: SELECT sicil,ad,brüt FROM personel ORDER BY brüt asc ; Sonuç : ASC sözcüğü artan anlamındadır.Veriler azalan sırada büyükten küçüğe ya da alfabetijk olarak Z ‘den A ‘ya sıralanmak istense idi bu sözcük yerine DESC kullanılacaktı. 2.3 Birden Çok Alana Göre Sıralama : Bir tablo içindeki verileri aynı anda birden çok sütuna göre sıralamak da mümkündür. ÖrneÄŸin personel tablosundaki personel adı ve MaaÅža göre listelemek isteyelim: SELECT sicil, ad, soyad, brüt FROM personel ORDER BY ad, brüt ; Burada tablo öncelikle ada göre artan sırada sıralanacak, sadece aynı ada sahip olanlar kendi aralarında BRÜTE göre artan sırada sıralanacaklardır:

Tablo2.1. Ada ve maaÅŸa göre sıralama Sicil Ad Soyad Brüt 1215 Ali Can 2000000 3712 Ali Okan 6000000 8145 Birol Çelen 8500000 3712 Birol Akın 4000000 Burada çok sayıda alana göre sıralama , farklı sıralama kriterlerine göre gerçekleÅŸtirilebilir. 2.4 KoÅŸula BaÄŸlı Olarak Listeleme : SELECT komutu ile bir tablonun satırlrı içinden sadece verilen bir koÅŸulu saÄŸlayanlar listelenebilir.ÖrneÄŸin brüt maaşı 5000000’dan fazla olan personel listelenmek istenirse SELECT komutu aÅŸağıdak gibi yazılmalıdır : SELECT * FROM personel WHERE brüt > 5000000 ; Burada WHERE sözcüğünüizleyen kısımda koÅŸul belirtilmektedir. KoÅŸul belirtilirken iki veri birbiri ile karşılaÅŸtırlmaktadır. SQL içinde verileri çeÅŸitli açılardan karşılaÅŸtırmak için karşılaÅŸtırma operatörleri kullanılmaktadır. KarşılaÅŸtırma ifadesinde karşılaÅŸtırılacak verilerin türleri aynı olmalıdır. Tablo2.2 KarşılaÅŸtırma Operatörleri SQL ‘ de KarşılaÅŸtırma Operatörleri Operatör Anlamı < …’den küçük > …’den büyük = EÅŸit <= Küçük veya eÅŸit >= Büyük veya eÅŸit <> EÅŸit deÄŸil != EÅŸit deÄŸil 2.5 Birden Çok KoÅŸula Dayalı Sorgulamalar : Not, And, Or : Not, And ve Or mantıksal operatörleri yardımı ile birden çok koÅŸulun gerçekleÅŸtirilmesine baÄŸlı olarak ifade edilebilecek karmaşık yada bileÅŸik koÅŸulu ile listelemeleri gerçekleÅŸtirmek mümkündür. Örnek : Maaşı 5000000 TL’den fazla olan ve cinsiyeti erkek olan personelin listelenmesi gibi bir iÅŸlemde söz konusu personel için iki koÅŸul verilmekte ve her ikisinin de gerçekleÅŸmesi istenmektedir. 1.koÅŸul : Maaşın 5000000 TL’den fazla oluÅŸu 2.KoÅŸul : Cinsiyetin ERKEK olması SELECT * FROM personel WHERE brüt > 5000000 AND cins =.T. ; Tablo2.3 NOT Operatörü KoÅŸul NOT KoÅŸul .T. .F. .F. .T. Tablo2.4 AND OPERATÖRÜ 1.KoÅŸul 2.KoÅŸul 1.koÅŸul AND 2.koÅŸul .T. .T. .T. .T. .F. .F. .F. .T. .F. .F .F. .F. Tablo2.5 OR OPERATÖRÜ 1.KoÅŸul 2.KoÅŸul 1.KoÅŸul AND 2.koÅŸul .T. .T. .T. .T. .F. .T. .F. .T. .T. .F .F. .F. Örnek : DoÄŸum tarihi 1960’ dan önce olan ve maaşı 6000000-10000000 arasında olan bayan personel kimlerdir? Cevap : SELECT * FROM personel WHERE dog_tar <{01/01/1960} AND brüt >=6000000 AND brüt <= 10000000 AND cins =.F. ; Örnek : Satış bölümü ile muhasebe bölümündekiler kimlerdir ? Çözüm : Satış bölümünün böl_no’sunun 1 ve muhasebe bölümünün böl_no’sunun 2 olduÄŸunu varsayarsak ; SELECT * FROM personel WHERE böl_no=1 OR böl_no=2 ; 2.6 Bir Veri Kümesi İçinde Arama –IN Operatörü AÅŸağıda vereceÄŸim örnek sorunun cevabını ÅŸu ana kadar anlattığım SQL komutları ile gerçekleÅŸtirebiliriz : Örnek : böl_no’su 1,2 yada 3 olan personeli listeleyiniz. · SELECT * FROM personel WHERE böl_no=2 OR böl_no=2 OR böl_no=3 ; Fakat SQL ‘de bu iÅŸlemi gerçekleÅŸtirmenin daha kısa ve daha şık bir yolu vardır; IN sözccüğü ; · SELECT * FROM personel WHERE böl_no IN (1,2,3) ; Åžeklindeki komut. Bu komut OR ile düzenlenen 1. SELECT’ denktir.Fakat belirtildiÄŸi gibi daha kısa ve anlaşılır bir ifade oluÅŸmaktadır. IN oparatörü NOT ile birlikte kullanılabilir. 2.7 Aralık Sorgulaması Between Sözcüğü : Maaşı 5-10 Milyon arasında olan personel kimlerdir ? ÅŸelinde bir soruya SELECT “ FROM personel WHERE brüt >=5000000 AND brüt <=10000000 ; Åžeklinde birSELECT komutu ile cevap verilebilir.Aynı soruya daha kısa ve daha etkin bir cevap verilecek olursa BETWEEN sözcüğü kullanılır. SELECT * FROM personel WHERE brüt BETWEEN 5000000 AND 10000000 ; 2.8 Karakter Türü Bilgi İçinde Arama Yapma –LIKE Sözcüğü : Personel tablosu içinde adres alanı 50 karakter uzunluÄŸunda karakter türü olarak tanımlanmıştı.Adres bilgisinin aÅŸağıdaki ÅŸekilde verildiÄŸini varsayalım : Cumhuriyet Cad. 46/9 Taksim-İstanbul. Burada adres içinde , semtin de belirtildiÄŸini ve bunun ayrı bir sütun olmadığına dikkat çekelim. Åžimdi belirli bir semtte ikamet eden personeli listelemek istersek semt adını , adres alanı içinde aramak gerekecektir.Bu iÅŸlemi gerçekleÅŸtirmek için SQL 2 de LIKE sözcüğü kullanılır. SELECT * FROM personel WHERE adres LIKE ‘% Taksim %’ ; Bu komut ile “Taksim�? semtinde ikamet eden personel listelenmek istenmektedir. Bu komut gerçekten de Taksim’ de oturan personeli listeleyecektir. Ama bu arada “Taksim Caddesi 22-7 Kadıköy - İstanbul�? ÅŸeklindeki adresleri de isteleyektir. Adres LIKE ‘ % Taksim %’ İfadesi adres içinde Taksim’ I arayacaktır. Adres içinde herhangi bir yerde bulduÄŸu taktirde bu satırı listeleyecektir. % sembolü Taksim sözcüğünün öncesinde ve sonrasındaki karakterler ne olursa olsun anlamındadır. Yukarıdaki LIKE ifadesi “Taksim Cad.81-Fatih�? ÅŸeklindeki Taksim’in en baÅŸta ve en sonda olduÄŸu adresleri listeleyecektir. LIKE sözcüğünü , alt çizgi (_) sembolü ile birlikte de kullanmak da mümkündür.

BİRDEN FAZLA TABLOYU İLİŞKİLENDİREREK SORGULAMA

BÖLÜM 3 Birden Fazla Tabloyu İliÅŸkilendirerek Sorgulama : 3.1 BirleÅŸtirme ( JOIN ) İşlemi : BirleÅŸtirme iÅŸemini anlayabilmek için konumuzun başında anlattığımız personel ve bölüm tablolarının içinde yer alan bölümleri hatırlayalım : Personel tablosu : Sicil no , sos.güv.no,ad, soyad, dogum-tarihi, adres, cinsiyet, brüt maaÅŸ, böl_no,yönetici sos.güv.no Bölüm Tablosu : Bölüm adı, bölüm_no, yönetici sos.güv.no ‘sundan oluÅŸuyordu Bu tablolar ile iliÅŸkili olarak aÅŸağıdaki soruyu soralım : Çalışan her personel ve bu personelin yöneticisi ile iliÅŸkili bilgiler nelerdir ? Belirli bir personel ile iliÅŸkili bilgiler personel tablosunun o personele ait satırında mevcuttur. Ancak personelin yöneticisi ile iliÅŸkili bilgilerin bir kısmına ise bölüm tablosundan eriÅŸilebilir. Bu durum zorunlu olarak personel ile bölüm tabloları arasında iliÅŸki kurulmasını gerektirir. Bu iliÅŸki ancak müşterek bir alan yardımı ile kurulabilir. Müşterek alan burada bölüm numarasıdır ve personel tablosunda böl_no, bölüm tablosunda ise bölüm_no adı ile yer almaktadır. Müşterek alana göre personel ve bölüm tablolarının birleÅŸtirilmesi ( JOIN ) demek , her iki tablodaki tüm sütunları içeren yeni bir tablo oluÅŸturmak demektir. Yalnız bu tabloda sadece her iki tabloda da mevcut olan bölüm numaraları ile iliÅŸkili satırlar yer alacaktır. BirleÅŸtirme iÅŸlemi ile listeleme aÅŸağıdaki SQL komutu ile gerçekleÅŸtirilmektedir : SELECT * FROM personel , bölüm WHERE personel . böl_no =bölüm .bölüm_no ; İliÅŸkilendirme kolayca görülebileceÄŸi gibi WHERE personel . böl_no = bölüm .bölüm_no Tablo adı Kolon adı İfadesi ile saÄŸlanmaktadır. AÅŸağıdaki örnek veri için bu JOIN iÅŸlemi sonucu, aÅŸağıdaki tabloda görülmektedir. Örnek veri : Tablo3.1 Personel sicil Sos_g_no ad Soyad Dog_tar adres cins brüt Böl_no Yo_s_g_n 112 27641 Ali Can 01/05/60 Fatih .T. 8000000 1 037165 175 3777654 AyÅŸe Åžen 04/07/65 Kadıköy .F. 7000000 1 037165 217 176241 Akın Öncel 11/07/64 Üsküdar .T. 6000000 2 277143 517 27615 Can Öner 05/08/65 Fatih .T. 4000000 2 277143 618 57253 Beril Meral 08/07/62 Pendik .F. 3750000 2 277143 1540 44721 AyÅŸe Cansu 07/08/63 BeÅŸiktaÅŸ .F. 4800000 3 577211 Tablo3.2 Bölüm Bölüm_ad Bölüm_no Y_sos_g_n Y_is_b_tar Satış 1 037165 01/07/89 Muhasebe 2 277143 02/08/91 Üretim 3 577211 04/06/92 EÄŸitim 4 443421 01/05/91 Bilgi iÅŸlem 5 288111 05/02/92 Personel ve bölüm tablolarının müşterek alan olan bölüm numarası üzerinde JOIN birleÅŸtirme iÅŸlemine tabi tutulması sonucu elde edilen bilgi sadece her iki tabloda da aynı bölüm numaralarına ait satırlar alınarak birleÅŸtirilmiÅŸ ve her iki tablonun alanlarından oluÅŸan büyük bir tablo halinde listelenecektir. 3.2 UNION Sözcüğü : Unıon sözcüğü küme birleÅŸtirme iÅŸlemi görür. İki ayrı SELECT komutunun sonucunda elde edilen tabloların birleÅŸimi iÅŸlemini görür. Örnek : Adı Ahmet ve soyadı Caner olan kiÅŸi ve kiÅŸileri iÅŸletmenin yürüttüğü projelerde çalışan kiÅŸi olarak bulunduran projelerin isimlerini ve projelerin yürütüldüğü yerleri listeleyiniz. ( SELECT proj_ad ,yer FROM proje , bölüm , personel WHERE bl_no=bölüm_no AND Y_sos_g_no = sosy_g_no AND ad=�?Ahmet�? AND Soyad =�?Caner�?) UNION ( SELECT proj_ad ,yer FROM proje , çalışma, personel WHERE proj_no =proje_no AND Per_s_g_no =sosy_g_no AND ad=�?Ahmet�? AND soyaD =�?Caner�?) UNION sözcüğü ile iki yada daha çok SELECT ‘in sonucu olan tabloların küme birleÅŸimi iÅŸlemine tabi tutulması için iki koÅŸul gereklidir : · SELECT komutları sonucunda elde edilecek tablolar aynı sayıda kolon içermeleridirler: 1.SELECT sonuç tablosu 2.SELECT sonuç tablosu · Sonuç tablolarının karşılıklı olarak kolonları aynı veri tipi ve aynı geniÅŸlikte olmalıdır. 3.3 ANY Sözcüğü : Bunu bir örnekle açıklayalım : Örnek : Satış bölümünde çalışan personelin herhangibirinden daha düşük maaÅŸ alan ve mühendislik bölümünde çalışan kiÅŸileri listeleyiniz : Çözüm : SELECT * FROM personel WHERE brüt < ANY ( SELECT brüt FROM personel WHERE böl_no =2) AND böl_no =1 ; Bu çözümün eÅŸdeÄŸer ifadesi şöyledir : SELECT * FROM personel WHERE brüt <( SELECT MAX (brüt) FROM personel WHERE böl_no =2) AND böl_no =1 ; Burada satış bölümü kodu 2 ve mühendislik bölümü kodu ise 1 olarak kabul edilmiÅŸtir.İkinci çözüm ifadesinden de anlaşılacağı gibi içiçe SELECT ifadesinde içteki SELECT sorgulaması sonucun ; 2. Bölümde çalışan personelin içinde en yüksek maaÅŸ alan kiÅŸinin maaşı bulunmakta dıştaki SELECT ise mühendislik bölümünde bu maaÅŸtan düşük olan maaÅŸa sahip kiÅŸiler listelenmektedir. Buradaki düşünce tarzı şöyledir : Mühendislik bölümünde çalışan ve satış bölümündeKİ en yüksek maaÅŸtan düşük maaÅŸ alan bir kiÅŸi “satış bölümündeki herhangi bir maaÅŸtan düşük olma “ koÅŸulunu saÄŸlayacaktır. ANY sözcüğünün yerine tamamen eÅŸdeÄŸeri olan SOME sözcüğü de kullanılabilir. 3.4 ALL Sözcüğü : “Hepsi , tamamı “ anlamındaki bu sözcük SELECT komutu içerisinde belirli bir koÅŸulu saÄŸlayan bir grup datanın tamamınca saÄŸlanan koÅŸullarla iliÅŸkili olarak kullanılır. Örnek : Satış bölümünde çalışan ve mühendislik bölümündeki personelin hepsinden daha fazla maaÅŸ alan personeli listeleyiniz. Satış bölümü kodu 2 ve mühendislik bölümü kodu1 olarak alınırsa ; Çözüm : 1. Altenatif SELECT * FROM personel WHERE brüt > ALL (SELECT brüt FROM personel
WHERE böl_no=1)
AND böl_no=2 ; 3.5 EXISTS Operatörü : “Var,mevcuttur�? anamındaki bu sözcük, SQL’ de bir Boolean ( lojik,mantıksal) operatördür. İçteki SELECT komutunun sorgulaması sonucunda en az bir tablo satırı üretilmiÅŸse EXISTS operatörü true deÄŸerini , hiçbir tablo satırı üretilmemiÅŸse, EXISTS operatörü false deÄŸerini üretir. EXISTS operatörü, AND ,OR ve NOT gibi diÄŸer mantıksal operatörlerle birlikte de kullanılabilir. Örnek : Numarası 27 olan parçayı satan satıcılarla iliÅŸkili tüm bilgileri listeleyiniz. Çözüm : İlgili SELECT komutlarını yazabilmek için, sistemde satıcı adlı tabloda ve par_sat adlı tabloda aÅŸağıdaki kolon ve verilerin olduÄŸunu vrsayalım : Tablo3.3 Satıcı_n Adı Adres 1 Ali akın İstanbul 2 AyÅŸe can İstanbul 3 AkınPeker Ankara 4 Can Ozan İzmir 5 Mert Ak Antalya SELECT * FROM satıcı WHERE EXISTS ( SELECT * FROM par_sat WHERE sat_no =satıcı _n AND parca_n=27) ; AÅŸağıdaki sonuç elde edilir. Tablo3.4 Satıcı_n Adı Adres 1 Ali akın Istanbul 2 AyÅŸe can Istanbul Yukarıda da belirtildiÄŸi gibi , iç SELECT ‘te WHERE ‘I izleyen koÅŸulu saÄŸlayaan satırlar par_sat içinde bulundukça EXISTS operatörü true deÄŸerini verecek bu durumda dış SELECT’in WHERE kısmı doÄŸru olacağı için o satıcı ile iliÅŸkili bilgiler satıcı tablosundan listelenecektir.

VİEW OLUŞTURMAK

BÖLÜM 4 View OluÅŸturmak : Veri tabanı kavramı içinde teorik olarak mevcut olan view (bakış ) terimi ,farklı kullanıcıların veri tabanına nasıl baktıklarını yada bakış açılarını anlatan terimdir. Bu anlamda bir kullanıcı fiziksel olarak mevcut olan tabloların sadece bir kısmı ile ilgilenir. 4.1 VIEW OluÅŸturmanın Yararları : 4.1.1 Veri GüvenliÄŸi : Veri tabanı içinde bulunan tablolardaki bazı sütunlarda bulunan bilgilerin herkes tarafından görülmesi istenmeyebilir. ÖrneÄŸin : Personelin brüt maaÅŸlarının herkes tarafından listelenebilir olması mahsurlu olabilir. Bu durumda personel adlı temel tablodan persview adlı bir view oluÅŸturulabilir: CREATE VIEW persview AS SELECT sicil , sosy_g_no, ad , soyad, dog_tar, adres, cins, böl_no, yön_s_g_n FROM personel ; Persview adlı view, herkesin kullnımına açık , personel adlı tablo ise yetkili kiÅŸiler dışındakilere, eriÅŸilemez hale getirilirse, maaÅŸların herkes tarafından eriÅŸilebilir bilgi olması önlenmiÅŸ olur. Bir view’den bilgi listelenmesi temel tablodan bilgi listelenmesinden farklı deÄŸildir : SELECT * FROM persview ; Persview’den maaÅŸlar hariç tüm personel bilgileri listelenecektir. Bir temel tablodaki aynı sütun isimleri kullanılmak zorunda deÄŸildir. 4.1.2 Sorgulamanın Daha Basit Hale Gelmesi : Karmaşık sorgulamalarda, bazı SELECT komutlarının sonuçları diÄŸer SELECT komutlarında kullanıldığında, sorgulanmanın düzenlenmesinde yanlışlıklar yapma olasılığını artar. Karmaşık sorgulamalar, View özelliÄŸi kullanılarak daha basit hale getirilebilir. Burada temel fikir ÅŸudur: Mademki bir view, bir sorgulama sonucu elde edilen bilgiyi (tabloyu) isimlendirerek elde edilen bir virtüel tablodur; o halde karmaşık SELECT komutu içinde, sonucu kullanacak baÅŸka bir SELECT komutu yerine, bu sonucu bir view olarak isimlendirerek, view adını kullanmak. Bazı durumlarda ise, iÅŸletmenin veri tabanı uygulamasında çok sık olarak sorulan karmaşık soruları bir view yapısı ile saklayarak, daha sonra aynı tip sorgulamalar için bu view yapısını kullanarak daha basit ifadeler kullanmak da olasıdır. ÖRNEK: Satış bölümünde çalışan personelin herhangi birinden daha düşük maaÅŸ alan ve mühendislik bölümünde çalışan kiÅŸileri listeleyiniz: ÇÖZÜM: SELECT * FROM personel WHERE brut < ANY (SELECT brut FROM personel WHERE bol_no=2) AND Bol_no=1; (Satış bölümü kodu 2 ve mühendislik bölümü kodu ise 1 kabul ediliyor). Åžimdi bu sorunun cevabı olan tablo bir view olarak saklanırsa: CREATE VIEW S1view AS SELECT * FROM personel WHERE brut < ANY (SELECT brut FROM personel WHERE bol_no=2) AND bol_no=1; Bundan sonra aynı tip sorgulama için sadece SELECT * FROM S1view; yazmak yeterli olacaktır. 4.1.3 Sadece Vıew Kullanılarak GerçekleÅŸebilen Sorgulamalar Bir tablodan elde edilecek bilgiler için, iki kademeli iÅŸlem gerektiren sorgulamalarda, iki adımda bir view oluÅŸturup ikinci adımda esas sorgulamayı bu view yardımı ile gerçekleÅŸtirmek, çoÄŸu kez kaçınılmaz bir durumdur. AÅŸağıdaki soru ve bunun çözümü olan SQL ifadeleri bu konuda bir fikir verecektir: ÖRNEK: Her bölümde, o bölümdeki ortalama maaÅŸtan daha yüksek maaÅŸ alanları listeleyiniz. ÇÖZÜM: Bu sorunun cevaplandırılması için önce her bölümdeki ortalama maaÅŸların bulunması gereklidir. CREATE VIEW BOL_OR_VIEW (bol_no, ort_brut) AS SELECT bol_no, AVG (brut) FROM personel GROUP BY bol_no; Daha sonra, yaratılan BOL_OR_VIEW yardımı ile (bu view, bölüm no’ları ve bölüm ortalama maaÅŸlarını saklamaktadır) sorulan sorunun cevabı elde edilebilir: SELECT * FROM personel WHERE bol_no=BOL_OR_VIEW. Bol_no .AND. brut > ort_brut;

TABLOLARDA DEĞİŞİKLİK YAPMA

BÖLÜM 5 Tablolarda DeÄŸiÅŸiklik Yapma 5.1 Tabloya Veri Ekleme SQL’de, mevcut bir tabloya veri eklemek için kullanılacak olan komut INSERT komutudur. Standart SQL’de, oluÅŸturulan bir tabloya veri yüklemek için tek imkan INSERT komutudur.INSERT komutu ile, tabloya, belli bir anda, tek bir satır eklemek imkanı vardır. INSERT komutunun yazılış biçimi aÅŸağıdaki gibidir: INSERT INTO Tablo adı (Sütun adı1, sütun adı2, ………..sütun adı(n)) VALUES (deÄŸer1, deÄŸer2,………deÄŸer(n)); ÖrneÄŸin, persınel tablosuna, sicil no’su 275 olan personel ile iliÅŸkili bilgiler aÅŸağıdaki gibi bir INSERT komutu ile yüklenebilir: INSERT INTO personel (sicil, sosy_g_no, ad, soyad, dog_tar, adres, cins, brüt, bol_no, yon_s_g_n) VALUES (‘275’, ‘27652418’, ‘ali’, ‘caner’, {01/05/1962}, ‘Merkez cad. 46-Fatih-Ist’, .T., 27000000, 2, ‘876215342’); Karakter türü verilen “ sembolleri arasına yüklendiÄŸine, diÄŸer veriler içinse buna gerek olmadığına dikkat ediniz. Burada, tabloya tüm kolonlarla ilgili veri yüklendiÄŸi için, istenirse kolon isimleri ihmal edilebilir. Standart SQL’deki INSERT komutunun, belli bir anda, tabloya, tek bir satırı tüklemesine karşılık, birçok SQL gerçekleÅŸtiriminde, yığın halinde veri yükleyen hizmet programlarından (utility) faydalanmak imkanı da vardır. Ayrıca, INSERT komutunun bu ÅŸekli ile tabloya veri yüklemek pratikte tercih edilebilecek bir ÅŸekil deÄŸildir. (Her tablo satırı için bir INSERT komutu kullanılıyor) Daha kullanışlı olan yol, verilerin kullanıcın zorlanmayacağı bir ekran düzeni ile klavyeden yüklenmesi daha bunların INSERT ile tabloya yerleÅŸtirilmesidir. SQL’de ekrandan interactive bilgi giriÅŸi ve ekran tasarımı saÄŸlayacak komutlar yoktur. Fakat SQL’in bir veri tabanı yönetim yazılımının (dbase, foxpro, ORACLE) ya da bir üst düzey dilinin (C, Pascal, Cobol, vb.) interactive bilgi giriÅŸine uygun komutlarını kullanarak bu iÅŸlemi arzu edilen kalitede gerçekleÅŸtirmesi mümkündür.SQL’in diÄŸer dillerle etkileÅŸimi daha sonra incelenecektir. 5.2 Tablo Satırlarını Silme Bir tablonun satırlarını silmek için gerekli komut DELETE komutudur. Satır silme koÅŸullu veya koÅŸulsuz olarak gerçekleÅŸtirilebilir. DELETE FROM personel; 25 Rows Deleted Bu komut ile personel tablosundaki tüm satırlar silinecektir. 25 Rows Deleted mesajı ile, o anda tabloda bulunan 25 satırın silindiÄŸi bildirilmektedir. KoÅŸula baÄŸlı baÄŸlı olarak satır silmenin de mümkün olduÄŸunu söylemiÅŸtik.Bunu gerçekleÅŸtirmek için, DELETE komutuna WHERE sözcüğü eklenmeli ve bunu izleyen ifade koÅŸulu göstermelidir. ÖRNEK: DELETE FROM personel WHERE bol_no=2; 5 Rows Deleted Bu komut ile, 2 numaralı bölümdeki personelin tümü tablodan silinecektir. 4 Rows Deleted Mesajı ile de, o anda 2 numaralı bölümde çalışan 5 personele ait satırların silindiÄŸi belirtilmektedir. AÅŸağıdaki örnekte ise brüt maaÅŸ alanı boÅŸ olmayan tüm personel silinmektedir: DELETE FROM personel WHERE brut IS NOT NULL; 25 Rows Deleted 5.3 View’ ler Üzerinde DeÄŸiÅŸiklik , Ekleme, Silme iÅŸlemleri : View’ler üzerinde ekleme, silme , ve deÄŸiÅŸiklik iÅŸlemleri esas itibarı ile tablolar üzerinde yapılan benzer iÅŸlemlerden çok farklı deÄŸildir. Fakat view’ler üzerinde bu tip iÅŸlemlerin gerçekleÅŸtirilmesinde bazı kısıtlamalar mevcuttur. AÅŸağıdaki hususlar bilinmelidir : · Bir view’in güncellenebilir nitelikte olması için bir birleÅŸtirme iÅŸlemi sonucunda üretilmiÅŸ olması gerekir. BaÅŸka bir deyiÅŸle CREATE VIEW komutunda FROM sözcüğünü .zleyen kısın-mda sadece bir tablo adı bulunmaktadır. · View içindeki hiçbir kolon bileÅŸik fonksiyonlarca üretilmiÅŸ olmamalıdır. ( MAX, SUM vb.) · View’in üretildiÄŸi SELECT komutunda , DISTINC, GROUP BY ya da HAVING sözcüklerini içeren parçaların iÅŸlevleri yerine getirilmiÅŸ olmamalıdır. Bu koÅŸulları saÄŸlamayan view’ler sadece okunabilir özellikteki view’lerdir , ve bunlar üzerinde deÄŸiÅŸiklik yapılamaz. 5.3.1 View İçine Satır Ekleme : Daha önceden oluÅŸturulmuÅŸ px adlı view ad, soyad , ve brüt alanlarını içermiÅŸ olsun. Bu view güncellenebilir nitelikte ise aÅŸağıdaki INSERT komutu ile aynen tablolarda olduÄŸu gibi kendisine bir satır eklemek mümkün olacaktır. INSERT INTO Px VALUES (‘ ali’, ‘çakır’, 12000000) ; Daha önceden view oluÅŸturulurken CHECK OPTION alternatifi kullanılmamışsa bu durumda ekleme esnasında view’ I oluÅŸturan koÅŸul ihlal ediliyorsa sistem eklemeye müseade etmeyip hata mesajı verecektir. 5.3.2 View İçinden Satır Silme : Güncellenebilir bir view içinden satır silme iÅŸlemi, tablodan satır silme iÅŸlemi ile aynı ÅŸekilde gerçekleÅŸtirilebilir. Örnek : DELETE FROM UST_PER_VIEW WHERE brüt< 25000000 ; 5.3.3 View Satırları Üzerinde Güncelleme İşlemi : Güncellenebilir view’lerde güncelleme iÅŸlemi tablolardakinin aynısıdır. ÖrneÄŸin UST_PER_VIEW adlı view’de sicili 27251 olan kiÅŸinin maaşını 37000000 olarak deÄŸiÅŸtirmek için UPDATE UST_PER_VIEW SET brüt =37000000 WHERE sicil =27251 ; Komutu kullanılabilir. 5.3.4 Bir Viewi Silmek : Tablolarsdan silinmesine benzer ÅŸekilde sistemden oluÅŸturulan bir view DROP VIEW komutu ile silinebilir. DROP VIEW UST_PER_VIEW ; Bir viewin silinmesi ile o view’e baÄŸlı olarak oluÅŸturulmuÅŸ diÄŸer tüm view’ler ve bu view’le iliÅŸkisiolan önceliklerin hepsi silinmiÅŸ olur.

INDEX OLUÅžTURMANIN AMACI

BÖLÜM 6 İndeks OluÅŸturmanın Amacı : Bir indeks, veri tabanı ortamında bir tablo ya da bir view gibi bir nesnedir ve iliÅŸkili olarak kullanıldığı tablo ya da view’deki satırların, indeksleme alanı olarak kullanılan kolondaki verilere göre sıralanmış biçimde iÅŸlenme sokulmasını saÄŸlar. Bir tablo, indekslenmiÅŸ ise , bu tablo içinde gerçekleÅŸtirilecek bir arama ya da koÅŸullu listeleme ( SELECT komutu ile ) iÅŸlemi çok daha hızlı biçimde gerçekleÅŸtirecektir. 6.1 İndeks Yaratma : SQL ‘de bir tablo ile iliÅŸkili olarak bir indeks yaratmak için gerekli komut CREATE INDEKS komutudur.Komutun yazılış biçimi aÅŸağıdaki gibidir : CREATE INDEX indeks adı ON tablo adı ( kolon adı1, koon adı2,………kolon adı (n)) ; İndeksleme artan ya da azalan ÅŸekilde olabilir. A’dan Z’ye nümerik olarak küçükten büyüğe ÅŸeklindedir. Azalan ise bunun tam tersidir. Hiçbir özel sözcük kullnılmazsa indeksleme artan sayılır ya da alan adının yanında ASC sözcüğü kullanılırsa artan sıralama yapılacağı anlaşılır. Herhangi bir DESC sözcüğünün kullanılması ise azalan sıralama yapılacağı anlamına gelmektedir. 6.1.1 Tek Bir Alana Göre Artan Sırada İndeksleme : İşletmede çalışan personeli brüt maaÅŸlarına göre artan sırada listelemek istersek, brüt alanına göre bir indeks oluÅŸturmalıyız. CREATE INDEX pers_maas ON personel (brüt) ; Index created 127 rows 127 satırlık personel tablosu ile iliÅŸkili olarak brüt kolonuna indeks anahtarı olarak kullanılan pers_maas adlı indeks oluÅŸturuluÅŸtur. Bu durumda SELECT * FROM personel ; Åžeklindeki listeleme komutu sonucunda personel tablosundaki tüm personel brüt maaÅŸlarına göre listelenecektir. 6.1.2 Tek Bir Alana Göre Azalan Sırada İndeksleme : İşletmede çalışan personeli brüt maaÅŸlarına göre azalan sırada listelemek istenirse brüt alanına göre aÅŸağıdaki gibi indeks oluÅŸturmak gerekir : CREATE INDEX pers_maas ON personel (brüt DESC) ; 6.1.3 Birden Fazla Alana Göre İndeksleme : İşletmedeki personelin öncelikle adlarına göre aynı adda olanların soyadlarına göre hem adı hem soyadı aynı olanların maaÅŸlarına göre sıralanmış olarak listelenmesi istenirse aÅŸağıdaki komut kullnılmalıdır : CREATE INDEX p_ad_soy_m ON personel ( ad, soyad ,brüt ) ; Bu durumda SELECT * FROM personel ; Komutu sonucunda sıralanmış tablo görülecektir. Unıque Sözcüğü : Bir tablo , seçilen bir sütuna göre indekslenirken indeksleme alanı olarak seçilen sütundaki verilerin tekrarlanmasına izin verilmesi istenmiyorsa indeksleme yapılırken , CREATE INDEX komutu içinde UNIQUE sözcüğü kullanılır. CREATE UNIQUE INDEX pers_sicil ON personel ( sicil ); Mevcut Bir İndeksin Silinmesi : Bir tablo üzerinde tanımlanmış herhangi bir indeks , o tablonun veri tabanından silinmesi ile otomatik olarak silinecektir. Tablo silinmeksizin , o tablo üzerinde oluÅŸturulan indeksin silinmesi içinse DROP INDEX komutu kullnılmalıdır. DROP INDEX pers_in ; komutu ile INDEX DROPPED Mesajı alınacaktır. SQL ‘in DiÄŸer Bilgisayar Dillerine Ve Yazılımlarına Katılımı : SQL’in Katılım Amacı : SQL için iki çalışma modu vardır : · EtkileÅŸimli SQL modu · Katılımlı SQL modu Buraya kadar SQL’in etkileÅŸimli modu anlatıldı. Bu modda her komut , sisteme gönderilmekte ve sistem cevabı olarak bir sonuç ya da bir hata mesajı karşılığı alınmaktadır. EtkileÅŸimli modda belirtilen 3 noktada güçlük vardır : · Tablolara bilgi giriÅŸi : Her tablo satırı giriÅŸi için ayrı bir INSERT komutuna gerek vardır. Bu oldukça önemli güçlük oluÅŸur. Ayrıca kullnıcı için kolaylık saÄŸlayan bilgi giriÅŸ ekranlarını etkileÅŸimli modda ve SQL komutları ile gerçekleÅŸtirmek olanaksızdır. · Bilgi İşleme : Belli bir anda tek bir komut icra edebilir ve aynı zamanda bir komut otomatik olarak tekrar tekrar icra edebilme yeteneÄŸine sahip deÄŸildir. · Bilgi Çıkışı : GerçekleÅŸtirilen bir sorgulama sonucunu kullanıcının arzu edeceÄŸi düzen ve esneklikle ekrana aktarma imkanı yoktur. SQL , tanım olarak bir veri tabanı alt dilidir. Yani bilgisayar dilinin gerek gösterdiÄŸi tüm yapılara saip deÄŸildir. SQL’in sahip olduÄŸu özellikler bu noktaya kadar görüldüğü gibi, veri tanımlam,bütünlük kontrolü, veriye eriÅŸim ve sorgulama ,veriyi güncelleme ile iliÅŸkili komut yapılarıdır. Dolayısıyla eksik olan I/O, ekran tasarımı,loop ili iliÅŸkili program eksiklikleridir. SQL, dili yordamsal bir dil deÄŸildir tamtersine küme esaslı bir dildir. Bunun anlamı ÅŸudur: SQL dili bir sorgulama esnasında SELECT komutu ile belli bir koÅŸulu saÄŸlayan tablo satırlarının tümü birden elde edilebilir. Kürsör * Kullanımı : SQL’deki kürsörün anlamı : SELECT komutu ile seçilmiÅŸ tablo satırları arasından belirli bir satırı iÅŸaret eden gösterge demektir. Belli bir anda kürsörün iÅŸaret ettiÄŸi satırın üzerinde güncelleme ya da silme iÅŸlemi yapılabilir.Bir SELECT iÅŸlemi ile iliÅŸkili olarak bir kürsör tanımlama iki aÅŸamalı bir süreçtir : · DECLARE CURSOR komutu ile kürsör için bildiride bulunulur. · OPEN komutu ile de kürsör açılır. Kürsör açıldığı zaman veriye eriÅŸmek için FETCH deyimi kullanılmalıdır. Kürsör ile ilgili iÅŸlemler bitince CLOSE deyimi ile ürsör kapatılır. DECLARE komutu bir kürsör ismini SELECT komutu ile iliÅŸkili hale getirir. DECLARE kürsör adı CURSOR FOR SELECT –komutu [FOR READ [ONLY]] Kullanım ÅŸeklidir. OPEN komutu, DECLARE CURSOR komutundaki SELECT deyiminin icra edilmesi ile elde edilen tablo satırları kümesi içinden eriÅŸim yapılabilmesi iÅŸlemini baÅŸlatır. OPEN kürsör1 Komutu ile küsör1 adlı kürsör açılmaktadır. FETCH komutu ile açılan eriÅŸim seti içindeki tablo sütunlarındaki veriler SQL’in içinde kullanıldığı program içindeki deÄŸiÅŸkenlere aktarılabilir. SQL’in Access İle Kullanımı : Access 7.0 : Veri tabanı yönetim yazılımı içinde, veri tabanına eriÅŸim amacı ile yapılacak iÅŸlemler ve sorgulamalar, sistem içinde , SQL’e dönüştürülür ve uygulanır. Dolayısı ile Access , sorgulama dili olarak tamamen SQL kullanır. Kullanıcının kendi tasarladığı SQL ifadelerini kullanabilmesi için , Access menüsü içinden View SQL alternatifini seçmesi gerekir.Karşısına çıkacak olan SQL penceresi içinde, SQL komutlarını kullanabilir. Ver Tabanı Tasarımı : Access ile gelen sihirbazları kullnarak kendi iÅŸimizi kolayca halledebiliriz. BoÅŸ bir veri tabanı ile iÅŸe baÅŸlayalım. Önce Dosya/Yeni Veritabanı seçenekleri ile açılan pencereden BoÅŸ Veritabanı seçeneÄŸi seçilir. Access veri tabanımıza isim vermemizi isteyecektir. Buraya uygun bir isim verdikten sonra aÅŸağıdaki proje yönetim penceresine eriÅŸilecektir. Veri tabanı birçok bileÅŸenden meydana gelir. Ancak her veri tabanında mutlaka tabloların bulunması gerekir. Tablolarda saklanacak bilgilerin özellikleri ve bilgilerin kendisi bulundurulur. Åžekil2.1. Veri tabanı tasarımı Yukarıdaki tablolar kısmında iken yeni düğmesi kullanılarak yeni bir tablo oluÅŸturmak isteyelim. Åžekil2.2.
Açılan pencereden isterseniz sihirbazı kullanarak hazır işimize yarayanları seçerek kullanabiliriz.Biz tasarım görünümü seçeneğini kullanarak tabloyu kendimiz tasarlayalım. Şekil2.3. Tablo tasarımı
Yukarıdaki tabloyu kullanarak alanları , bu alanların içinde barındıracakları bilginin tiplerini ve bir çok özelliÄŸi belirleyeceÄŸiz. Örnek : Küçük bir iÅŸletmenin müşteri iÅŸlemlerini yapmak isteyelim. Ve müşteri bilgilerini bir tabloda saklayalım. Tablomuzda bulunacak bilgiler ÅŸunlar olsun : Müşterinin : adı soyadı, ev adresi, ev telefonu, iÅŸ adresi, iÅŸ telefonu, iliÅŸki, düşünceler. Bunların her birine bir alan diyoruz. Ve bu alanların içerikleri farklı tiplerde olduklarından bu alanlara ait alan tiplerini belirtmemiz gerekir. Pencerenin Alan Adı sütununa alanların isimlerini yazarız. DiÄŸer veri tabanı programlarından farklı olarak Access ‘de bu ismi herhangi bir sınırlama olmaksızın tanımlayabiliriz. Tanım sütununa o alanla ilgili bir açıklamayı yazacağız. Bu açıklama bilgisini yazmak zorunda deÄŸiliz. Buraya yazacağımız bilgi pencerenin en altındaki durum çubuÄŸunda görülecektir.Dolayısıyla kullnıcı buraya bakarak ne girmesi gerektiÄŸini görebilir. Penceredeki veri türü sütununa ise bu alana girilecek bilginin türünü belirleyeceÄŸiz. Access’de kullanabileceÄŸimiz veri türleri ve özellikleri şöyledir : Metin : Sadece metin içeren , sayı veya metini birlikte içeren veya üzerinde iÅŸlem yapılması gerekmeyen alanlarda bu tip belirtilir. ( adı soyadı, kapı numarası,telefon numarası vb.) Ençok 255 karaktere kadar bilgiyi içerebilir. Karakter sınırı genel kısmındaki alan boyutu ile belirtilir. Sayı : Üzerinde hesap yapılması gereken ve para olmayan alanlar bu tipten tanımlanır. Bu alana girilebilecek sayıların tipi ve sınırı genel kısmındaki alan boyutu ile belirlenir. Bayt 0-255 arasındaki tam sayılar bu alanda tutulur. 1 bayt yer iÅŸgal eder. Para Birimi : Aslında bu da bir sayı veri tipidir. Ancak para hesapları düşünülerek geliÅŸtirilmiÅŸ. Para hesaplarında virgülden sonraki basamak sayısı fazla önemli deÄŸildir. Önemli olan virgülden önceki basamakların tutulmasıdır. Bu veri tipi tam kısmı 15 basamak ve virgülden sonra ise 4 basamak olan sayılar tutulabilir. Otomatik Sayı : Bazı durumlarda her bir kayda bir numara girilmesini isteyebiliriz. ÖrneÄŸin müşteri numarası alanı böyle bir alan olabilir. Bu alanı Otomatik sayı tipinden belirleriz.Sayının nasıl verileceÄŸini ise genel kısmındaki yeni deÄŸerler kutusundan belirleyebiliriz. Bu kutudan artan deÄŸerini seçersek sayı otomatik olarak her kayıtta bir artırılacaktır. Tarih / Saat : DoÄŸum tarihi , giriÅŸ saati gibi alanları text olarak tanımlarsak bunlar üzerinde iÅŸlem yapamayız. Tarih ve saat gibi bilgiler bu tipte belirtilmelidir. OLE Nesnesi : Veri tabanımıza resim, ses, animasyon gibi bir çok ÅŸeyler ekleyebiliriz. Windows altında bir çok program OLE (nesne baÄŸlama ve gömme)’yi destekler. ÖrneÄŸin paint brush’da çizmiÅŸ olduÄŸumuz bir resmi veri tabanımıza ekleyebiliriz. Ole nesnesi olarak tanımlanmış alanlara bilgi giriÅŸi için Ekle menüsündeki NESNE seçeneÄŸi kullanılır ve eklenmiÅŸ nesneleri görmek için de o alanları çift tıklayabiliriz. Örnek : Sınav giriÅŸi yapılacak alana not giriÅŸini 0-100 arasına sınırlayalım ve yanlış deÄŸer girilmesi halinde de uygun bir mesaj ile uyarılmasını saÄŸlayalım. Geçerlilik kuralı >0 OR 100 Geçerlilik Metni Sınav notu 0 ile 100 arasında olabilir. Alan özelliklerini detaylarıyla gördükten sonra ÅŸimdi müşteri listesi için gerekli alanları tanımlayalım. Bunun için aÅŸağıdaki tabloyu ÅŸu özelliklerde oluÅŸturalım: Åžekil2.4.
Her bir alana ait özellikleri ise Genel kutusundan şöyle belirleyelim : Adı soyadı : Alan boyutu : 30 Resim yazısı : Müşterinin adı soyadı Gerekli : Evet Ev adresi ve iş adresi için : Alan boyutu : 50 Ev telefonu ve iş telefonu için : Alan boyutu : 11 Giriş maskesi : (009�?)�?900

AÇIKLAMALI ÖRNEKLER

¼br /> INDEX 1.TEK TABLODAN SORGULAMALAR
—SELECT * FROM Tablo
—SELECT * DISTINCT FROM Tablo

2.TABLO BİLGİLERİNİN SIRALANMIŞ OLARAK LİSTELENMESİ
—ORDER BY
—ORDER BY ASC DSC

3.BİRDEN ÇOK ALANA GÖRE SIRALAMA
—SELECT alan1, alan2 FROM Tablo ORDER BY alan1

—KOÅžULA BAGLI OLARAK LISTELEME
—–WHERE

—KARÅžILAÅžTIRMA OPERATÖRLERi
—–ÇEŞİTLİ VERİ TİPLERİ için BASİT SORGULAMALAR
———1.NÜMERİK VERİ TİPLERİ
———2.KARAKTER VERİ TİPLERİ (CHAR)
———3.TARİH VERİ TİPİ (DATE)
———4.MANTIKSAL VERİ TİPİ 4.BİRDEN ÇOK KOÅžULA DAYALI SORGULAMALAR (NOT / AND / OR)

—BİR VERİ KÜMESİNDE ARAMA -IN OPERATÖRÜ

—BETWEEN SORGULAMA SÖZCÜĞÜ

—KARAKTER TÜRÜ BİLGİ İÇİNDE ARAMA YAPMA -LIKE SÖZCÜĞÜ

5.SQL’DE ARİTMETİKSEL İFADELER VE FONKSİYONLAR
—SUM FONKSİYONU
—AVG FONKSİYONU
—MAX FONKSİYONU
—MIN FONKSİYONU
—COUNT FONKSİYONU

6.GRUPLANDIRARAK İŞLEM YAPMAK
—GROUP BY
—HAVING

—BİRDEN FAZLA TABLOYU İLİŞKİLENDİRMEK (JOIN)
—SELF-JOIN
—NESTED SELECTS (İÇİÇE SEÇİMLER)

—UNION SÖZCÜĞÜ

——KOÅžULLAR
———ANY / ALL / EXISTS / NOT EXISTS
———EXCEPT / INTERSECT / SAVE TO TEMP / KEEP

7.TABLOLARDA DEĞİŞİKLİK YAPMAK
—INSERT INTO tablo VALUES deÄŸerler

—DELETE FROM tablo WHERE alan = 1

—UPDATE tablo SET alan = alan * 2

—CREATE INDEX ON tablo
——TEK BİR ALANA GÖRE ARTAN SIRADA İNDEKSLEME

——TEK BİR ALANA GÖRE AZALAN SIRADA İNDEKSLEME

——BİRDEN FAZLA ALANA GÖRE İNDEKSLEME
———–UNİQUE SÖZCÜĞÜ
——MEVCUT BİR İNDEKSİN SİLİNMESİ

—TABLONUN YAPISINDA DEĞİŞİKLİK YAPMAK
——ALTER TABLE
———–ADD KOMUTU (MEVCUT BİR TABLOYA ALAN (FIELD) EKLEMEK)
———–MODIFY KOMUTU (MEVCUT BİR TABLONUN ALANLARINDA DEĞİŞİKLİK YAPMAK)
———–DROP KOMUTU (MEVCUT BİR TABLODAN BİR ALAN SİLMEK)
———–RENAME KOMUTU (MEVCUT BİR TABLONUN ADINI DEĞİŞTİRMEK)
———–DROP TABLE (MEVCUT BİR TABLONUN TÜMÜYLE SİLİNMESİ)

—CREATE VIEW (VERİ GÜVENLİĞİ)
——WITH CHECK OPTION
——EKLEME
——DELETE
——UPDATE
——DROP

8. DAHA FAZLA ÖRNEK VE AÇIKLAMA 1. TEK TABLODAN SORGULAMALAR:

SELECT * FROM tablo

ÖRNEK: Bütün bilgileri personel tablosundan koşulsuz olarak listele.
SELECT * FROM personel

ÖRNEK: Personel tablosundan SEÇ komutuyla istenen sütun adlarını belirt.
SELECT sicil, sosy_g_no, ad, soyad, dog_tar, sicil,sosy_g_no,ad,soyad,dog_tar, adres, cins, brüt, böl_no, yön_s_g_n FROM personel;

ÖRNEK: Personel tablosundan istenen sütün başlıklarını listele.
SELECT sicil, ad, soyad, brüt FROM personel;

DISTINCT (Tekrarsız) TANIM: SQL’de tablo içinde birbirinin aynı datalar bulunabilir. Aynı satırların listeleme esnasında bir kez yazılması için Distinct sözcüğünü kullan.
ÖRNEK: Par _sat dosyasından sat_no’lar tekrarsız olarak listelenecektir.
SELECT DISTINCT sat_no FROM par_sat;

2. TABLO BİLGİLERİNİN SIRALANMIŞ OLARAK LİSTELENMESİ:

ORDER BY (Sırasıyla)
TANIM: Tablodaki sütunlardan ,belirli bir sütuna göre listelemek için SELECT komutuna , ORDER BY eklenir.
ÖRNEK: Personel dosyasından, sicil, ad, soyad, brüt sütunlarını seç ve brüt (maaşa) göre büyükten küçüğe sırala.

SELECT sicil, ad, soyad, brüt FROM personel ORDER BY brüt ASC;

DESC : Küçükten büyüğe sırala (A-Z) ASC : Büyükten küçüğe sırala (Z-A)
DESC yazılmazsa ASC direct kabul edilir (DEFAULT)

3. BİRDEN ÇOK ALANA GÖRE SIRALAMA:

TANIM: Bir tablo içinde ,birden fazla sütundan aynı anda sıralamak için kullanılır.
ÖRNEK: Personel dosyasından seçilen sütunlarını aynı anda hem ad, hem de otomatik olarak sıralar.

SELECT sicil, ad, soyad, brut FROM personel ORDER BY ad, brut;

ÖRNEK Personel tablosundan seçili sütunları öncelik adda olmak üzere (Z-A) adı bozmadan soyadı (A-Z) sıralı listeler.

SELECT sicil, ad, soyad, brut FROM personel ORDER BY ad ASC, soyad DESC, brut ASC;
veya;
SELECT sicil, ad, soyad, brut FROM personel ORDER BY ad, soyad DESC, brut;

KOÅžULA BAGLI OLARAK LISTELEME:
WHERE
TANIM: verilen koşulu sağlayanlar listelenir. İki veri birbiriyle karşılaştırılmaktadır. Karşılaştırılan verilerin türü aynı olmalıdır.

SELECT * FROM personel WHERE brüt > 5000000;

KARŞILAŞTIRMA OPERATÖRLERI:

OPERATÖR ANLAMI : < …den daha küçük
> …den daha büyük
= Eşit <= Küçük veya eşit
>= Büyük veya eşit
<> EÅŸit deÄŸil != EÅŸit deÄŸil
!< … den küçük deÄŸil
!> … den büyük deÄŸil
ÇEŞİTLİ VERİ TİPLERİ İÇİN BASİT SORGULAMALAR:
1. NÜMERİK VERİ TİPLERİ:

ÖRNEK: Maaşı 8000000TL’den fazla olmayan personeli listele.

SELECT * FROM personel WHERE brüt <= 8000000;

2. KARAKTER VERİ TİPLERİ (CHAR):
Karakter çift veya tek tırnak ile gösterilir.

ÖRNEK: Adı Ali olmayan personele ait kayıtları listele.
SELECT * FROM personel WHERE ad <> “Ali�?;

3. TARİH VERİ TİPİ:
Tarih VERİ TİPLERİ { } sembolleri içinde yazılır.
ÖRNEK: Hangi personelin doğum tarihi 1960 yılından daha öncedir?

SELECT * FROM personel WHERE dog_tar <={12/31/59};

4. MANTIKSAL (LOJİK) VERİ TİPİ: Mantıksal veriler için mümkün olabilen sadece iki değer söz konusudur. DOĞRU D (TRUE T), YANLIŞ Y (FALSE F) ile simgelenir. ÖRNEK: Personel tablosunda personelin cinsiyetini belirten cins adlı alan mantıksal (logical) olarak tanımlanmıştır. Cinsiyeti erkek olanları D, kadın olanları y ile tanımlarsak erkek olanları listele. SELECT * FROM personel WHERE cins = .T.;

4. BİRDEN ÇOK KOŞULA DAYALI SORGULAMALAR: (NOT, AND, OR)
TANIM: Mantıksal operatörlerin yardımı ile birden çok koşulun gerçekleştirmesine bağlı olarak ifade edilebilecek (karmaşık yada birleşik koşullu listelemeleri gerçekleştirilmektedir.)
AND (VE)
ÖRNEK: Maaşı 5000000’dan fazla olan ve cinsiyeti erkek olan personelin listelenmesi istenir yani iki koÅŸul verilmektedir ve ikisinin de olması istenir.

SELECT * FROM personel WHERE brüt >5000000 AND cins =.T.;

NOT (DEĞİL)
OR (VEYA)

ÖRNEKLER:
1. DoÄŸum tarihi 1960’dan önce olan maaşı 6000000 - 10000000 arasındaki bayan personelin listele.

SELECT * FROM dog_tar < {01/01/60} AND brüt > = 6000000 AND brüt < =10000000
AND cins = .F.;

2. Satış bölümüyle muhasebe bölümündekiler kimlerdir?
(Satış bölümünün böl_no’sunun 1 ve muhasebe bölümünün böl_no’sunun 2 olduÄŸu varsayılmaktadır.)

SELECT * FROM personel WHERE bol_no =1 OR bol_no = 2;
3. Bölümü Satış yada Muhasebe olamayan 1960’dan sonra doÄŸmuÅŸ bayan personeli listele.

1.YAZILIM:
SELECT * FROM personel WHERE NOT (böl_no =1 OR böl_no =2) AND dog_tar > ={01/01/60}
AND cins =.F.;
2.YAZILIM:
SELECT * FROM personel WHERE böl_no <> 1 AND böl_no <> 2 AND dog_tar > ={01/01/60}
AND cins =.F.;

BİR VERİ KÜMESİNDE ARAMA -IN OPERATÖRÜ

IN (içinde)
“IN�? operatörü NOT ile kullanılabilir.

ÖRNEK: Bölümü 1,2,3 olmayan personel kimlerden oluşmaktadır?
SELECT * FROM personel WHERE bol_no NOT IN (1,2,3);

ÖRNEK: Böl_no’su 1, 2 yada 3 olan personeli listele.
SELECT * FROM personel WHERE böl_no = 1 OR böl_no= 2 OR böl_no = 3;

Bu örneğin IN ile yapılmış şekli daha kısadır.

SELECT * FROM personel WHERE NOT böl_no IN (1,2,3);

BETWEEN SORGULAMA SÖZCÜĞÜ:

BETWEEN (ARASINDA)
ÖRNEK: Maaşı 5 - 10 milyon arasında olan personel kimlerdir?

SELECT * FROM personel WHERE brüt > =5000000 AND brüt < = 10000000;

BETWEEN (ARASINDA) komutu ile daha kısa olacaktır.

SELECT * FROM personel WHERE brüt BETWEEN 5000000 AND 10000000;

KARAKTER TÜRÜ BİLGİ içinde ARAMA LIKE SÖZCÜĞÜ: TANIM ÖRNEĞİ: Adres sütunu içerisinde semt bölümüne ait ayrıca bir sütun olmadığını varsayarak semt adı adres sütunu içerisinde yer alır ve buradan da LIKE (BULUNAN) komutuyla adres sütunu içerisinde Taksim semtinde oturan personeli listele. SELECT * FROM personel WHERE adres LIKE ‘% TAKSİM %’ ;

Adres LIKE ‘%TAKSİM%’ ifadesi adres içinde her hangi bir yerde TAKSİM yazan yerde oturan personeli listeleyecektir.
LIKE sözcüğünü, alt çizgi (-) sembolü ile birlikte kullanmakta mümkündür. SELECT * FROM personel WHERE ad LIKE ‘Mehmet —–‘; Åžekildeki komut ile ad alanı “Mehmet “ ile baÅŸlayan ve ad alanı uzunluÄŸu 10 karakter olan isimlere sahip personeli listeleyecektir.�?Mehmet Ali�?,�?Mehmet Can�?- “Mehmetcik�? gibi isimler listeleyecektir. Anlaşılacağı gibi - sembolü, tek karakterlik bir bilgiyi temsil etmektedir. 5. SQL’DE ARİTMETİKSEL İFADELER VE FONKSİYONLAR :

KÜME FONKSİYONLARI:
SUM FONKSİYONU:
SUM (TOPLA)
Fonksiyonun argümanı olarak belirtilen sütun ile ilişkili olana toplama işlemini gerçekleştirir.

ÖRNEK: İşletmedeki personelin brüt maaşlar toplamı ne kadardır?
SELECT SUM (brüt) FROM personel;
AVG FONKSİYONU:
AVG (ORTALA)
Aritmetiksel ortalama (average) hesaplamak için kullanılır.
SELECT AVG(brüt) FROM personel;

MAX FONKSİYONU:
MAX (EN ÜST)
Tablo içinde ,belirtilen sütun (alan)içindeki en büyük değeri bulur.
ÖRNEK: İşletme içindeki en yüksek maaş ne kadardır?
SELECT MAX (brüt) FROM personel;

MIN FONKSİYONU:
MIN (EN ALT)
Tablo içinde, belirlenen sütun alan içindeki en küçük değeri bulur.
ÖRNEK: İşletme içinde 4 Mayıs 1970’den önce doÄŸanlar için, asgari ücret nedir?
SELECT MIN(brüt) FROM personel WHERE dog_tar < {05/04/70};

COUNT FONKSİYONU:
COUNT (SAY)
Tablo içinde, her hangi bir sayma işlemi gerçekleştirmek için kullanılır.
ÖRNEK: Ücreti 6000000’dan olan personel sayısı nedir?
SELECT COUNT (*) FROM personel WHERE brüt > 6000000;

COUNT (SAY) fonksiyonu DISTINCT (TEKRARSIZ) sözcüğü ile de kullanılır.
ÖRNEK: Personel tablosunda mevcut personelin işletme içinde kaç tane farklı bölümde çalıştığını bul.
SELECT COUNT(DISTINCT böl_no) FROM personel;
COUNT (böl_no)

6. GRUPLANDIRARAK İŞLEM YAPMA:

GROUP BY (GRUPLA)
ÖRNEK: Her bölümdeki ortalama maaş nedir?
SELECT bol_no, AVG (brut) FROM personel GOUP BY bol_no;

HAVING (SAHİP) Gruplandırarak kümeleme fonksiyonunu uygularken koşulda verilebilir.Bu durumda grup üzerindeki hesaplamalarla ilgili koşul belirtilirken HAVING (SAHİP) sözcüğü kullanılır.
ÖRNEK: En yüksek maaşın 9000000’dan fazla olduÄŸu bölümlerdeki personele ait ortalama maaÅŸları listele.
SELECT böl_no,AVG (brüt) FROM personel GROUP BY böl_no HAVING AVG(brüt)> 9000000;
HAVING sözcüğü SELECT konusunda GROUP BY bulunmadığı zaman geçersizdir. HAVING sözcüğünü izleyen ifade içinde SUM , COUNT(*) ,AVG, MAX yada MIN fonksiyonlarından en az biri bulunmalıdır. HAVING sözcüğü sadece gruplanmış veriler üzerindeki işlemlerde geçerlidir. WHERE sözcüğü bir tablonun tek tek satırları üzerinde işlem yapan koşullar içinde geçerlidir. Bazı durumlarda HAVING ve WHERE sözcükleri ile birlikte SELECT komutu içinde kullanılabilir.

ÖRNEK: Personel tablosu içinde her bölümde erkek personele ait maaÅŸlar için ortalamanın 9000000’dan fazla olduÄŸu bölümleri listele.
SELECT bol_no, AVG (brut) FROM personel WHERE cins= .T. GROUP BY bol_no HAVING AVG (brut) > 9000000;

BİRDEN FAZLA TABLOYU İLİŞKİLENDİRMEK:
JOIN (İLİŞKİLENDİR)
ÖRNEK: Personel ve bölüm adlı 2 tablo bulunmaktadır.
Çalışan her personel ve personelin yöneticisi ile ilişkili bilgiler nelerdir?
SELECT * FROM personel,bölüm WHERE personel .böl_no=bölüm.bölüm_no ; ÖRNEK: JOIN (İLİŞKİLENDİR) işleminde arzu edilen (sicil, ad, soyad, böl_no, yön_s_g_n) alanların listele.
SELECT sicil,ad,soyad,bol_no,yon_s_g_n FROM personel, bolum WHERE personel .bol_no = bolum .bolum_no;

SELF-JOIN: KENDİSİYLE -İLİŞKİLENDİR:
TANIM: Bir tablonun kendisi ile birleÅŸtirilmesine “KENDISIYLE-İLİŞKİLENDİR�? denir.(SELF-JOIN)

SELECT A. sicil , A.ad , A.soyad, B .ad , B.soyad , B.dog_tar FROM personel A , personel B
WHERE A. yon_sos_g_n =B .sosy_g_no;

NESTED SELECTS:
İÇİÇE SEÇİMLER

TANIM: İç içe geçmiş SELECT komutlarından oluşur. İçteki Select komutunun bulduğu sonucu dış takı komutumuz işlevini yerine getirmesi için kullanılır.
ÖRNEK: Parça numarası 24 olan parçayı, projelerde kullanan çalışan personeli listele.
SELECT * FROM personel WHERE sosy_g_no IN(SELECT per_s_g_no FROM parca, proje, calisma WHERE pr_no = proj_no AND proj_no =proj_no AND par_no =24);

ÖRNEK: Fatih’te oturan personelin çalıştığı projelerin adlarını ve yerlerini listele.
SELECT proj_ad, yer FROM proje WHERE proj_no IN (SELECT proje_no FROM personel, calisma WHERE sosy_g_no = per_s_g_no AND adres LIKE “% fatih %�?);

UNION (BİRLEŞİM)
TANIM: İki ayrı SEÇ komutunun sonucunda elde edilen tabloların birleşimi işlemini gerçekleştirir. ÖRNEK: Adı Ahmet ve Soyadı Caner olan kişi yada kişileri işletmenin yürüttüğü projelerde çalışan bir kişi (sıradan bir personel yada bölüm yöneticisi)olarak bulunduran projelerin isimlerini ve projelerin yürütüldüğü yerleri listele.
(SELECT proj_ad,yer FROM proj,bölüm,personel WHERE bl_no=bolum_no AND
y_sos gno = sosy_g_no AND ad =�?Ahmet�?AND soyad =�?Caner�?) UNION (SELECT proj_ad,yer
FROM proje,çalışma,personel WHERE proj_no = proje_no AND Per_s_g_no = sosy_g_no AND ad =�?Ahmet�? AND soyad =�?Caner�?) KOŞULLAR:
UNION (BİRLEŞİM) sözcüğü ile, iki yada daha çok kiÅŸi SELECT ’in sonucu olan tabloların küme birleÅŸimi iÅŸlemine tabi tutulması için 2 koÅŸul gereklidir. 1) SELECT komutları sonucunda elde edilecek tablolar aynı sayıda kolon içermelidirler.
2) Sonuç tabloları karşılıklı olarak kolonların aynı veri tipi ve aynı genişlikte olmalıdır.
ANY (HER HANGİ BİRİ)

ÖRNEK: Satış bölümünde çalışan personelin her hangi birinden daha düşük maaş alan ve mühendislik bölümündeki kişileri listele.

SELECT * FROM personel WHERE brüt < ANY (SELECT brut FROM personel WHERE bol_no = 2) AND bol_no =1;

Aynı ifade aşağıdaki gibi yazılabilir:
SELECT * FROM personel WHERE brut < (SELECT MAX (brut ) FROM personel
WHERE bol_no = 2) AND bol_no =1;

ALL (HEPSİ)
ÖRNEK: Satış bölümünde çalışan ve mühendislik bölümündeki personelin hepsinden daha fazla maaş alan personeli listele.Bu örnekte satış bölümü kodu = 2 ve mühendislik bölümü kodu = 1 alınmıştır.
YAPILIÅž YOLU:
1) SELECT * FROM personel WHERE brut > ALL (SELECT brut FROM personel WHERE bol_no = 1 AND bol_no = 2;

2) SELECT * FROM personel WHERE brut > (SELECT MAX (brut) FROM personel
WHERE bol_no = 1) AND bol_no =2;

EXISTS (MEVCUT)
VE, VEYA, DEĞİL operatörleri ile kullanılabilir.
ÖRNEK: 27 no’lu parçayı satan satıcılarla iliÅŸkili tüm bilgileri listele.

SELECT * FROM satıcı WHERE EXISTS (SELECT * FROM par_sat WHERE sat_no = satici_n
AND parça_n =27);

NOT EXISTS (MEVCUT DEĞİL)
VE, VEYA, DEĞİL operatörleri ile kullanılabilir.
ÖRNEK: 27 no’lu parçayı satmayan satıcılar kimlerdir?

SELECT * FROM satıcı WHERE NOT EXISTS (SELECT * FROM par_sat WHERE sat_no = satıcı_n AND parça_n =27);

EXCEPT (FARKLI)
Tablo-1 - Tablo-2 iÅŸlemi sonuç (iki kümenin farkı) elde edilecek tabloda,Tablo-1’de bulunup, Tablo-2’de bulunmayan veriler mevcut olacaktır.
ÖRNEK: Satış bölümündeki personel adlarından,mühendislik bölümünde bulunmayanları listele.

SELECT * FROM (SELECT ad FROM personel WHERE bol_no=1 EXCEPT SELECT ad FROM personel WHERE bol_no =2);

INTERSECT (KESİŞİM)
ÖRNEK: Hem Ankara’da,hem de İstanbul’daki projelerde görev alan bölümleri listele.

SELECT * FROM (SELECT bl_no FROM proje WHERE yer LIKE “%Ankara%�? INTERSECT
SELECT bl_no FROM proje WHERE yer LIKE “%İstanbul%�?);

SAVE TO TEMP (SAKLA)
ÖRNEK: Bayan personeli,bayan adlı bir tablo içinde sakla.
SAVE TO TEMP (SAKLA)
SELECT * FROM personel WHERE cins =.F. SAVE TO TEMP bayan;

KEEP:
KEEP (KALICI)

ÖRNEK:
SELECT * FROM personel WHERE cins = .F. SAVE TO TEMP bayan KEEP;

7. TABLOLARDA DEĞİŞİKLİK YAPMAK:

INSERT (EKLE)
INTO (içinE)
VALUES (DEÄžERLER)

ÖRNEK: Bir personel tablosuna sicil_no’su 275 olan personel ile iliÅŸkili bilgileri ekle.

INSERT INTO personel(sicil, sosy_g_no,ad,soyad,doğ_tar adres,cins,brüt,böl_no,yön_s_g_no
VALUES(‘275’,’27652418’,’Ali’,’Caner’, {10/05/1962},’Merkez caddesi 46 -Fatih-İstanbul’,
.T.,27000000,2,’876215342’);

DELETE (SİL)
ÖRNEK: 2 no’lu bölümdeki personelin tümü tablodan sil.

DELETE FROM personel WHERE böl_no = 2;

5 ROWS DELETED 5 SATIR SİLİNDİ
ÖRNEK:Brüt maaş alanı boş olmayan tüm personeli sil.

DELETE FROM personel WHERE brüt IS NOT NULL;
25 ROWS DELETED 25 SATIR SİLİNDİ

UPDATE (GÜNCELLE)
SET (YAP)

ÖRNEK:2’inci bölümün yürüttüğü projelerde kullanılan tüm parçaların fiyatlarını % 7 zam yap.

UPDATE parça SET fiyat = fiyat *1,07 WHERE pr_no IN (SELECT proj_no
FROM proje WHERE bl_no = 2;

CREATE INDEX (INDEKS YARAT )
ON (Hangi Tablo İçin)

CREATE INDEX ındeks adı ON tablo adı(kolon adı 1,kolon adı 2,.,.kolon adı n); TEK BİR ALANA GÖRE ARTAN SIRADA İNDEKSLEME :

ÖRNEK:İşletmede çalışan personeli brüt maaşlarına göre artan sırada listele.(Brüt alana göre bir indeks oluşturmalıyız)
CREATE INDEX pers_maas ON personel(brüt);
INDEX CREATED 127 ROWS İNDEKS YARATILDI 127 SATIR
127 satırlık personel tablosu ile ilişkili olarak brüt kolonu indeks anahtarı olarak kullanan pers_maas adlı indeks oluşturulmuştur. Bu durumda;
SELECT * FROM personel;

Şeklinde listeleme komutu sonucunda personel tablosundaki tüm personel, brüt maaşlarina göre sirali olarak listelenecektir.

TEK BİR ALANA GÖRE AZALAN SIRADA İNDEKSLEME :
DESC Küçükten büyüğe (K-B) ÖRNEK: İşletmede çalışan personeli brüt maaşlarına göre azalan sırada (yüksek maaştan düşük maaşa doğru) listelemek istersek, brüt alanına göre aşağıdaki şekilde oluşturmak gerekir.
CREATE INDEX
ON personel (brüt DESC);
BİRDEN FAZLA ALANA GÖRE İNDEKSLEME :
ÖRNEK:İşletmedeki personelin öncelikle adlarına göre,aynı adda olanların soyadlarına göre, hem adı hemde soyadı aynı olanların maaşlarına göre sıralanmış olarak listele.

CREATE INDEX p_ad_soy_m ON personel (ad,soyad,brüt);

Bu durumda;

SELECT * FROM personel;
UNIQUE (TEK) Bir tablo, seçilen bir sütuna (alana) göre indekslenirken, indeksleme alanı olarak seçilen sütundaki verilerin tekrarlanmasına müsaade edilmesi istenmiyorsa, indeksleme yapılırken, CREATE, INDEX komutu içinde UNIQUE sözcüğü kullanılmalıdır. CREATE UNIQUE INDEX pers_sicil ON personel (sicil);

EKLEME için:

Personel tablosuna INSERT INTO Personel VALUES(53768 ,’27241685’,’ayÅŸe’,
‘ÅŸen’{01/04/63},’Merkez cad. 82 - Kadıköy’.F. ,27000000 ,2, ‘34261578’);

MEVCUT BİR İNDEKSİN SİLİNMESİ:
DROP IPTAL

DROP INDEX pers_in;
Komutu ile
INDEX DROPPED (İNDEKS SİLİNDİ)

TABLONUN YAPISINDA DEĞİŞİKLİK YAPMAK:
ALTER TABLE (TABLO DEĞİŞTİR)

MEVCUT BİR TABLOYA KOLON EKLEMEK:
ADD (EKLE)
ALTER TABLE (TABLO DEĞİŞTİR) komutu içinde ADD (EKLE) ile satır ekle.

ÖRNEK: Personel tablosuna ,işe başlama tarihini belirten bir kolon ekle
ALTER TABLE personel ADD iş_baş_tar DATE; ADD (EKLE) iş_baş_tar DATE NOT NULL (TARIH DEĞERSIZ) bu şekilde kullanılsaydı bu kolon satırı gene boş kalırdı; fakat bu kolon ile ilişkili yeni boş değerler eklemek istendiğinde buna müsaade edilmeyecekti. MEVCUT BİR TABLONUN ALANLARINDA DEĞİŞİKLİK YAPMAK :
MODIFY (DEĞİŞTİR)

MEVCUT BİR TABLODAN BİR KOLON SİLMEK:
DROP (İPTAL)

ÖRNEK: Personel tablosundan iş_baş_tar kolonunu sil.
ALTER TABLE personel DROP iÅŸ_baÅŸ_tar ;
Birden fazla kolonda silinebilir. Birden fazla kolon silmek için virgülle ayrılarak silinir.

BİR TABLONUN ADINI DEĞİŞTİRMEK:
RENAME (TABLO YENİ AD)
ALTER TABLE personel Personel tablosunda değişiklik yap RENAME TABLE elemanlar; elemanlar tablosunun adını değiştir

MEVCUT BİR TABLONUN BİR KOLONUNUN ADININ DEĞİŞTİRİLMESİ:
RENAME YENİ AD
ALTER TABLE personel RENAME brut br-maas;

MEVCUT BİR TABLONUN TÜMÜYLE SİLİNMESİ
DROP TABLE (TABLO İPTAL)
ÖRNEK:Proje tablosunu sil.
DROP TABLE proje;

VERİ GÜVENLİĞİ:
CREATE VIEW GÖRÜŞ ALANI YARAT
ÖRNEK: Personel adlı temel tablodan persview adlı bir view oluştur.
CREATE VIEW perswiew AS SELECT sicil,sos_g_no, ad, soyad, dog_tar, adres, cins, bol_no, yon_s_g_no FROM personel;

VERİ BÜTÜNLÜĞÜNÜN SAĞLANMASI:
WITH CHECK OPTİON KONTROLLÜ

CREATE VIEW UST_PER_ VIEW ‘Önce bir view oluÅŸturulsun
AS SELECT FROM personel WHERE brut >25000000 WITH CHECK OPTION; Burada, maaşı 25000000’ün üzerinde olan personelden oluÅŸan bir UST_PER_VIEW adli view oluÅŸturulmuÅŸtur.Bu view’a brüt maaşı 13000000 olan bir personel eklemek istediÄŸi zaman hata mesaji verecektir.
CHECK opsiyonu kullanılmasaydı hata mesajı alınmadan bu veri VİEW içine yükleyecekti.

EKLEME
INSERT INTO UST_PER_VIEW VALUES (27521 ,’27865427’,’ayÅŸe’, ‘okan’ ,{01/05/1962}’Cumh. Cad. 46 - Taksim’, .F.,13000000 ,1 ,’27651112’);

VIEW İÇİNDE SATIR SİLME:
ÖRNEK:UST_PER_VIEW içinden, maaşı 2500000’den az olan kiÅŸileri sil.

DELETE FROM UST_PER_VIEW WHERE brut < 25000000;
VIEW SATIRLARI ÜZERİNDE GÜNCELLEME :
ÖRNEK: UST_PER_VIEW adlı view’de sicili 27251 olan kiÅŸinin maaşını 37000000 olarak deÄŸiÅŸtir.

UPDATE UST_PER_VIEW SET brüt = 37000000 WHERE sicil = 27251;

BİR VIEW’U SİLMEK:
DROP VIEW (GÖRÜŞ ALANI IPTALI)
DROP VIEW UST_PER_VIEW; GÖRÜŞ ALANI IPTALI UST_PER_VIEW;


Alıntı ve derlemelerden oluşmaktadır
.

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.