|
SQL ASP ve diğerleri hakkında bilgiler DERS 2 |
|
|
DERS 2![[Resim] [Resim]](http://img8.imageshack.us/img8/5650/elim1kl.gif) INSERT INTO ifadesi
Bu ifadeyi kullarak veritabanındaki bir tabloya bir satır ekleyebilirsiniz.
ifadenin kurulusu; INSERT INTO tabloAdi (kolonBir,kolonIki,...) VALUES (kolonBir,kolonIki,...)
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15
INSERT INTO bilgi VALUES (’veli’, ’sözcü’, ’trabzon’, ’20’)
dediğimizde sonucu;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20
olucaktır.
Tüm satırdaki bilgileri doldurmak yerine, sadece belli yerlere veri girmek için ne yapmak gerek derseniz, bir ornekle acıklayalım..
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20
INSERT INTO Persons (ad, il) VALUES (’necmi’, ’sivas’)
dediğimizde sonucu;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi sivas
olucaktır.
UPDATE ifadesi
Bu ifadeyi kullanarak veritabanındaki bir veriyi guncelleyebilirsiniz.
ifadenin kurulusu; UPDATE tabloAdi SET kolonAdi = Yenideger WHERE kolonAdi = tanimlayiciDeger
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan sivas 19
UPDATE bilgi SET ad = ’osman’ WHERE soyad = ’yakan’
dediğimizde sonucu;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 osman yakan sivas 19
olucaktır.
Birden fazla veriyi guncellemek isteyebiliriz, ohalde alttaki ornegi inceleyelim:
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan sivas 19
UPDATE bilgi SET il = ’hatay’, yas = ’13’ WHERE soyad = ’yakan’
dediğimizde sonucu;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan hatay 13
DELETE ifadesi
Bu ifadeyi kullanarak veritabanındaki bir satırı silebilirsiniz.
ifadenin kurulusu; DELETE FROM tabloAdi WHERE kolonAdi = tanimlayiciDeger
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan sivas 19
DELETE FROM bilgi WHERE yas = ’20’
dediğimizde sonuc
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 necmi yakan sivas 19
Tablodaki tüm bilgileri silmek için şu ifadeleri kullanabilirsiniz:
DELETE FROM tabloAdi DELETE * FROM tabloAdi
ORDER BY ifadesi
bu ifade ile sonucları sıralamak mumkundur.
Satırları sıralamak için ifade şu şekilde kurulur; SELECT kolonAd(lar)i FROM tabloAdi ORDER BY referansKolonu
örnek veri tabanımızda "bilgi" tablomuz olsun
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan sivas 19
SELECT ad,soyad FROM bilgi ORDER BY ad
dediğimizde sonuc
ad soyad ----- ------- ali özgür necmi yakan veli sözcü
eger sıralamayı tersine cevirmek istersek ifadenin sonuna DESC sözdizimini, sayıları kucukten buyuye sıralamak içinde ASC sözdizimini ekliyoruz.
SELECT ad,soyad FROM bilgi ORDER BY ad DESC
dediğimizde sonuc
ad soyad ----- ------- veli sözcü necmi yakan ali özgür
AND ve OR operatorlerinin kullanılısı
AND ve OR operatorleri WHERE ifadesiyle birlikte, birden cok durumu birleştirmek için kullanılır. AND operatoru eger TÜM durumlar dogru ise ilgili satırı gosterir. OR operatoru ise durumlardan bir tanesi bile dogru olsa bile ilgili satırı gosterir.
örnekleri "bilgi" adlı tablomuza gore vericek olursak
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan sivas 19 osman yakan van 33 alp özgür ankara 12
SELECT * FROM bilgi WHERE ad=’ali’ AND soyad=’özgür’
dediğimizde sonuc
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15
SELECT * FROM bilgi WHERE ad=’alp’ OR soyad=’özgür’
dediğimizde sonuc
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 alp özgür ankara 12
heriki operatorude birleştirecek olursak
SELECT * FROM bilgi WHERE (ad=’alp’ OR ad=’ali’) AND LastName=’özgür’
dediğimizde sonuc
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 alp özgür ankara 12
IN operatorunun kullanılısı
Bu operator, bir degeri tam biliyorsak ve bunu goruntulemek istiyorsak kullanabiliriz.
ifadenin kurulusu; SELECT kolonAdi FROM tabloAdi WHERE colonAdi IN (degerBir,degerIki,...)örnek veritabanımızda "bilgi" tablomuz olsun
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan sivas 19 osman yakan van 33 alp özgür ankara 12
SELECT * FROM bilgi WHERE il IN (’van’,’trabzon’)
dedigimzde sonuc
ad soyad il yas ----- ------- ---- ----- veli sözcü trabzon 20 osman yakan van 33
BETWEEN operatorunun kullanılısı
Bu operator yardımı ile iki deger arasındaki veriyi secebiliriz, bu degerler numara,yazı yada tarih olabilir.
ifadenin kurulusu; SELECT kolonAdi FROM tabloAdi WHERE colonAdi BETWEEN degerBir AND degerIkiörnek veritabanımızda "bilgi" tablomuz olsun
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan sivas 19 osman yakan van 33 alp özgür ankara 12
SELECT * FROM bilgi WHERE il BETWEEN ’trabzon’ AND ’van’
dediğimizde sonuc
ad soyad il yas ----- ------- ---- ----- veli sözcü trabzon 20 necmi yakan sivas 19
Yanlız BETWEEN operatoru veritabanı cinsine gore degişik sonuclar verebilir. Yukarda oldugu gibi sonraki degeri sonuca dahil etmeyebilir, ilk degeri dahil etmeyebilir, iki degerden hiçbirini dahil etmeden sonuc verebilir yada iki degeride dahil edip sonucu verebilir. Bu yuzden etkili biçimde kullanmadan once bu operatorun tam olarak nasıl davrandıgını veritabanınızda denemeniz önerilir.
Birde bu aralıkta olmayanlarıda listeleyebiliriz;
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan sivas 19 osman yakan van 33 alp özgür ankara 12
SELECT * FROM bilgi WHERE il NOT BETWEEN ’trabzon’ AND ’van’
dediğimizde sonuc
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 osman yakan van 33 alp özgür ankara 12
ALIAS operatorunun kullanılısı
Bu operator ile bir kolonun yada tablonun adı bir baska şeymiş gibi kullanılabilir.
ifadelerin kurulusu; SELECT kolon AS kolonAliasi FROM tabloSELECT kolon FROM tablo AS tabloAliasiörnek veritabanımızda "bilgi" tablomuz olsun
ad soyad il yas ----- ------- ---- ----- ali özgür ankara 15 veli sözcü trabzon 20 necmi yakan sivas 19 osman yakan van 33 alp özgür ankara 12
SELECT soyad AS aile, il AS yerleske FROM bilgi
dediğimizde sonuc
aile yerleske ----- -------- özgür ankara sözcü trabzon yakan sivas yakan van özgür ankara
yada alias ı tablo için kullanabiliriz..
SELECT ad, soyad FROM bilgi AS nufusBilgileri
ad soyad ----- ------- ali özgür veli sözcü necmi yakan osman yakan alp özgür
SQL Join methodunun kullanılısı
Bazen iki yada daha fazla tablodan veri cekmemiz gerekebilir, bu gibi durumlarda bu methodu kullanırız.
Veritabanındaki tablolar, birbirleriyle bazı key lerle ilişkilendirilmiştir. İlk ve oncelikli (primary) key, satırlarda bulunan kolonla birlikte tek ve benzeri olmayan degerdir. İki verinin birbiriyle ilişkilendirilmesinin amacı tabloları aşıp, tablo isimlerini tekrarlamadan veriyi almaktır.
veritabanımızda iki adet tablomuz olsun
ilk tablo adımız "kisi"
kisiID tamAdi ------ -------- 01 ali,özgür 02 veli,sözcü 03 necmi,yakan 04 osman,yakan 05 alp,özgür
ikinci tablo adımız "detay"
kimlikNo il kisiID -------- ---- ------ 4893 ankara 01 6889 trabzon 02 3684 sivas 03 5285 van 04 4234 ankara 05
"kisi" tablosundaki "kisiID" kolonu bir ilk ve oncelikli (primary) keydir. Bunun anlamı baska herhangi bir satır aynı degere sahip olamaz. Bu sayede diger kolonlarda aynı degeri bulunan veriler olsa bile bu key onları birbirinden ayırmakta kullanılabilir.
"detay" tablosunun il ve oncelikli (primary) keyi "kimlikNo" dur. Ve "kisiID" kolonu "bilgi" tablosunu "detay" tablosuyla baska herhangi bir veri girmeden ilişkilendirmiştir.
veritabanımıza birkac SQL tarzı soru soralım bakalım nasıl soruyoruz ve nasıl cevaplar alıyoruz 
İnsansı soru: kim nerde oturuyor? SQL tarzı soru(sorgu): SELECT kisi.tamAd, detay.il FROM kisi, detay WHERE kisi.kisiID=detay.kisiID
Cevap:
tamAdi il -------- ---- ali,özgür ankara veli,sözcü trabzon necmi,yakan sivas osman,yakan van alp,özgür ankara
İnsansı soru: kim trabzonda oturuyor? SQL tarzı soru(sorgu): SELECT kisi.tamAdi FROM kisi, detay WHERE kisi.kisiID=detay.kisiID AND detay.il=’trabzon’
Cevap:
tamAdi -------- veli,sözcü
Bu işi birde JOIN sozdizimi kullanarak yapabiliriz.
INNER JOIN operatorunun kullanılısı
ifadelerin kurulusu; SELECT bolgiBir, bolgiIki, bolgiUc FROM ilkTablo INNER JOIN ikinciTablo ON ilkTablo.keyBolgesi = ikinciTablo.yabanciKeyBolgesiveritabanımızda iki adet tablomuz olsun
ilk tablo adımız "kisi"
kisiID tamAdi ------ -------- 01 ali,özgür 02 veli,sözcü 03 necmi,yakan 04 osman,yakan 05 alp,özgür 06 zeki,civi 07 alp,öztürk
ikinci tablo adımız "detay"
kimlikNo il kisiID -------- ---- ------ 4893 ankara 01 6889 trabzon 02 3684 sivas 03 5285 van 04 4234 ankara 05
ve sorularımıza INNER JOIN kullarak devam edelim..
İnsansı soru: kim nerde oturuyor? SQL tarzı soru(sorgu): SELECT kisi.tamAdi, detay.il FROM kisi INNER JOIN detay ON kisi.kisiID = detay.kisiID
cevap:
tamAdi il -------- ---- ali,özgür ankara veli,sözcü trabzon necmi,yakan sivas osman,yakan van alp,özgür ankara
Bu method tablolardaki eşleşmiş her veriyi cıkartıcaktır, eger eşlenmemiş bir veri varsa onu cıkarmıyacaktır.
LEFT JOIN operatorunun kullanılısı
ifadelerin kurulusu; SELECT bolgiBir, bolgiIki, bolgiUc FROM ilkTablo LEFT JOIN ikinciTablo ON ilkTablo.keyBolgesi = ikinciTablo.yabanciKeyBolgesiveritabanımızda iki adet tablomuz olsun
ilk tablo adımız "kisi"
kisiID tamAdi ------ -------- 01 ali,özgür 02 veli,sözcü 03 necmi,yakan 04 osman,yakan 05 alp,özgür 06 zeki,civi 07 alp,öztürk
ikinci tablo adımız "detay"
kimlikNo il kisiID -------- ---- ------ 4893 ankara 01 6889 trabzon 02 3684 sivas 03 5285 van 04 4234 ankara 05
ve sorularımıza INNER JOIN kullarak devam edelim..
İnsansı soru: kim nerde oturuyor? SQL tarzı soru(sorgu): SELECT kisi.tamAdi, detay.il FROM kisi LEFT JOIN detay ON kisi.kisiID = detay.kisiID
cevap: tamAdi il -------- ---- ali,özgür ankara veli,sözcü trabzon necmi,yakan sivas osman,yakan van alp,özgür ankara zeki,civi alp,öztürk
Gördünüz gibi bu sefer LEFT JOIN operatorunu kullandık ve veritabanımızda il bilgsi bulunmayan kayıtlarımızı cevap listesine ekledi..
Bu demek oluyorki LEFT JOIN ilk tabloda(SQL sorgusunda ismi gecen ilk tablo) girdisi olmasına karsın ikinci tabloda eşlendiği bir degeri yoksabile o girdiği sonuca ekleniyor.
Bunun tam tersini yapmak için yani ikinci tabloda girdisi oldugu halde ilk tabloda karşılıgı olmayan verileride sonuca eklemek istersek, kurmamız gereken SQL ifadesi: SELECT bolgiBir, bolgiIki, bolgiUc FROM ilkTablo RIGHT JOIN ikinciTablo ON ilkTablo.keyBolgesi = ikinciTablo.yabanciKeyBolgesiSQL UNION ve UNION ALL methodlarının kullanılısı
Bu method verdiği sonuc itibari ile JOIN methoduna benzesede, bu methodun JOIN den farkı secilecek kolonların veri tiplerinin aynı olma sartıdır.
UNION methodu, eger secilmiş olan verilerde çiftler varsa onları sonuca yansıtmaz .. UNION ALL dersek düz mantıkla, secilmiş tum verileri (aynısından olsa bile) sonuc olarak veririr...
ifadelerin kurulusları; ilk SQL sorgusu UNION ikici SQL sorgusuilk SQL sorgusu UNION ALL ikici SQL sorgusuveritabanımızın ilk tablosu, "donerSevenler"
kisiID ad ------ ---- 01 mert 02 can 03 aslı
ikinci tablosu, "pideSevenler"
kisiID ad ------ ---- 01 veli 02 ali 03 aslı 04 ersin
SELECT ad FROM onerSevenler UNION SELECT ad FROM pideSevenle
dediğimizde sonuc
ad --- mert can aslı veli ali ersin
eger SELECT ad FROM onerSevenler UNION ALL SELECT ad FROM pideSevenle dersek sonuc
ad --- mert can aslı veli ali aslı ersin
olur...
SELECT ifadesi
Veritabanı yaratmak için kullanılan ifade; CREATE DATABASE veriTabaniAdiVeritabanına tablo eklemek için kullanılan ifade; CREATE TABLE tabloAdi ( kolonAdi veriTipi, kolonAdi veriTipi, ................., )örneğin:
CREATE TABLE kisi ( ad varchar, soyad varchar, il varchar, yas int )
Buna ek olarak bir kolona girilecek max. girdi uzunlugunu belirleyebilirsizin.
örneğin:
CREATE TABLE kisi ( ad varchar(10), soyad varchar(30), il varchar, yas int(2) )
Şimdi sorucaksınız baska hangi veri tipleri vardır, yada yukardaki ornektekiler nedemekdir diye ...
Veri tipleri
integer(uzunluk), int(uzunluk) ,smallint(uzunluk) ,tinyint(uzunluk); Sadece tamsayıları tutar, eger parantez içinde bir sayı yazarsanız o uzunluk degerini gecmeden veri tutar..
decimal(uzunluk,hassasiyet), numeric(uzunluk,hassasiyet); Ondalıklı sayıları tutar, parantez içinde uzunluk olarak en fazla kac karakterli sayı tutmasını ve hassasiyet olarakta virgulden sonra kac rakam tutmasını istediğinizi yazabilirsiniz.
char(uzunluk); Belli bir degerdeki diziyi tutar. Bu dizi harf, sayı yada ozel karakterlere sahip olabilir. Bellirliyecegimiz dizi uzunlugu parantez içine yazılmalıdır.
varchar(uzunluk); Max. uzunlugu verilen bir diziyi tutar. Bu dizi harf, sayı yada ozel karakterlere sahip olabilir.
date(YYYYAAGG); Tarih degerini tutar, Yıl Ay ve Gun olarak..
INDEX ifadesi
index (arama anahtarı) olusturur, bu sayede sorgulamaya hız getir. Yanlız guncelleme esnasında indexli kolonlar daha fazla zaman alır bu yuzden indexlerin sadece arama tarzında kullanılması onerilir..
Unique index Tabloya unique index olusturur, fakat bu index tarzında iki satır aynı index degerine sahip olamaz.
ifadenin kurulusu; CREATE UNIQUE INDEX indexAdi ON tabloAdi (kolonAdi)Basit index Bu indexde ise, unique dan farklı olarak iki tane index degeri aynı olabilir.
ifadenin kurulusu; CREATE INDEX indexAdi ON tabloAdi (kolonAdi)eger index degerlerini azalan bir biçimde sıralamak isterseniz o zamanda ifadeyi soyle kurarız; CREATE INDEX indexAdi ON tabloAdi (kolonAdi DESC)eger index degerini birden fazla kolona vermek istiyorsanız ise ifadeyi soyle kurarız; CREATE INDEX indexAdi ON tabloAdi (kolonAdi,digerKolonAdi)DROP ifadesi
DROP genel olarak silme işlemi gercekleştirir...
indexleri silmek için kurulacak ifade; DROP INDEX tabloAdi.indexAditablo silmek için kurulacak ifade; DROP TABLE tabloAdiveritabanını silmek için kurulacak ifade; DROP DATABASE veritabaniAdiEger sadece bir tablo içindeki verilerin hepsinden kurtulmak istersek, kullanıcagımız ifade; TRUNCATE TABLE tabloAdiALTER TABLE ifadesi
Bu ifade varolan bir tabloya kolon eklemek yada silmek için kullanılır.
ifadelerin kullanılışı; ALTER TABLE tabloAdi ADD kolonAdi veriTipi
ALTER TABLE tabloAdi DROP COLUMN kolonAdiYanlız bazı veritabanları kolonu silme işlemini bu şekilde izin vermiyor, o zaman sizde DROP COLUMN kolonAdi sorgusunu kullanınız.
örnek veritabanımızda "bilgi" tablomuz olsun
ad soyad il -- ------ -- ali saygın tekirdag
ALTER TABLE bilgi ADD yas varchar(2)
dediğimizde sonuc
ad soyad il yas -- ------ -- --- ali saygın tekirdag
ALTER TABLE bilgi DROP COLUMN il
dedimizde sonuc
ad soyad yas -- ------ --- ali saygın
SQL Fonkisyonları
SQL kendi içinde bir cok fonksiyonu barındırır, bunlar sayım ve hesaplama için kullanılabilir.
Fonksiyon sözdizimi kuruluşu; SELECT fonksiyon(kolon) FROM tablo
Fonksiyon tipleri; SQL fonksiyonları birkaç temel tip ve kategoriye sahiptir. Temel fonksiyon tipleri:
++ Aggregate (birleşik degerli) fonksiyonlar ++ Scalar (tekil degerli) fonksiyonlar
Aggregate (birleşik degerli) fonksiyonlar Bu tip fonksiyonlar birçok deger ile çalışır ama sonucu tek bir degerdir.
Bu fonksiyonların MS Access e uygun olanları: AVG(kolon): girilen kolondaki sayıların aritmetik ortalama degerini geri yollar COUNT(kolon): Boş degerler haric, girilen kolondaki satır sayısını yollar COUNT(*): Verilen tablodaki satır sayısını yollar FIRST(kolon): girilen kolondaki ilk degeri yollar LAST(kolon): girilen kolondaki son degeri yollar MAX(kolon): girilen kolondaki en yuksek degeri yollar MIN(kolon): girilen kolondaki en dusuk degeri yollar STDEV(kolon): girilen kolondaki basit istatiksel standard sapma degerini yollar STDEVP(kolon): girilen kolondaki nüfus istatiksel standard sapma degerini yollar SUM(kolon): girilen kolondaki sayıların toplamını yollar
Bu fonksiyonların SQL Server a uygun olanları: AVG(kolon): girilen kolondaki sayıların aritmetik ortalama degerini geri yollar BINARY_CHECKSUM: tablonun verilen satırındaki ikilik tabandaki checksum degerini yollar CHECKSUM: tablonun verilen satırındaki checksum degerini yollar CHECKSUM_AGG: boş degerler haricindeki verilerin checksum degerini yollar COUNT(kolon): Boş degerler haric, girilen kolondaki satır sayısını yollar COUNT(*): Verilen tablodaki satır sayısını yollar COUNT(DISTINCT kolon): Verilen tablodaki satır sayısını yollar, fakat cift veri bulunan satırları bir defa sayar FIRST(kolon): girilen kolondaki ilk degeri yollar LAST(kolon): girilen kolondaki son degeri yollar MAX(kolon): girilen kolondaki en yuksek degeri yollar MIN(kolon): girilen kolondaki en dusuk degeri yollar STDEV(kolon): girilen kolondaki basit istatiksel standard sapma degerini yollar STDEVP(kolon): girilen kolondaki nüfus istatiksel standard sapma degerini yollar SUM(kolon): girilen kolondaki sayıların toplamını yollar
Scalar (tekil degerli) fonksiyonlar Girilen degere gore bir deger ile calısır ve sonuc olarak bir deger yollar.
Bu fonksiyonların MS Access e uygun olanları: UCASE(c): bolgedeki karakterlerin hepsini buyuk yapar LCASE(c): bolgedeki karakterlerin hepsini kucuk yapar MID(c,start[,end]): yazı alanından karakterleri calıstırır INSTR(c): yazı alanından karakterleri gosterir LEFT(c,karakterNumarasi): text alanının girilen sayıya kadar olan kısmını yollar (soldan sayar) RIGHT(c,number_of_char): text alanının girilen sayıya kadar olan kısmını yollar (sagdan sayar) ROUND(c,hassasiyet): sayı alanını verilen hassasiyete gore yuvarlar MOD(x,y): bolme işleminde kalanı gosterir (mod işlemi yapar) NOW(): o anki sistem zamanını gosterir FORMAT(c,format): alanın gosterim biçimini degiştirir DATEDIFF(d,birinciTarih,ikinciTarih): tarih hesaplarını yapmak için kullanılır
SQL GROUP BY VE HAVING methodlarının kullanılısı
Aggregate (birleşik degerli) fonksiyonları ( SUM gibi ) genellikle GROUP BY fonsiyonuna gerek duyar.
GROUP BY ek fonksiyonu
Bu ek fonksiyonun kullanımı, SUM fonksiyonu ile kolon içinde istenilen bir belli bir bolumun toplamını sonuca verememesinden kaynaklanmaktadır. Bu ek fonksiyon yardımıyla toplamı istenen veriler gruplanıp daha detaylı sorgulanır.
ifadenin kuruluşu; SELECT kolon,SUM(kolon) FROM tabloAdi GROUP BY kolonveritabanımızda "satis" tablosu olsun
firma miktar ------ -------- CyberHost 15 internetSahibi 19 CyberHost 23 digerHost 12 internetSahibi 18
SELECT firma, SUM(miktar) FROM satis
dedigimizde sonuc
firma miktar ------ -------- CyberHost 87 internetSahibi 87 CyberHost 87 digerHost 87 internetSahibi 87
SELECT firma,SUM(miktar) FROM satis GROUP BY firma
dedigimizde sonuc
firma miktar ------ -------- CyberHost 38 internetSahibi 37 digerHost 12
HAVING ek fonksiyonu
Bu fonksiyonun eklenmesinin nedeni WHERE ifadesi ile Aggregate (birleşik degerli) fonksiyonlarının kullanılamaması ve sonucların bazı ayıklama ve testten gecirilme ihtiyacıdır.
ifadenin kurulusu; SELECT kolon,SUM(kolon) FROM tabloAdi GROUP BY kolon HAVING SUM(kolon) durumYadaFonsiyon degerveritabanımızda "satis" tablosu olsun
firma miktar ------ -------- CyberHost 15 internetSahibi 19 CyberHost 23 digerHost 12 internetSahibi 18
SELECT firma,SUM(miktar) FROM satis GROUP BY firma HAVING SUM(miktar)>35
dediğimizde sonuc
firma miktar ------ -------- CyberHost 38 internetSahibi 37
SELECT INTO ifadesi
Bu ifade genel olarak tablo yedekleri almakta ve kayıtları arşivlemeyi sağlamakta kullanılır.
ifadenin kurulusu; SELECT kolonAd(lar)i INTO yeniTabloAdi [IN farklıBirVeriTabaniAdi] FROM anaKaynakörnek ifadeler;
SELECT * INTO bilgiYedek FROM bilgi
bilgi tablosunu aynı veritabanında bilgiYedek adlı yeni bir tabloya kopyalar.
IN sözdizimini kullanarak tamamen yeni bir vertabanı olusturup onun içine yedekleme yapabiliriz.
SELECT bilgi.* INTO bilgi IN ’yedekVeritabaniAdi.mdb’ FROM bilgi
Yedeklemek istediğiniz tum tablo degilde belli satırları yada belli kolonları yedekleyebilirsiniz.
SELECT ad,soyad INTO bilgiYedegi FROM bilgi
yada
SELECT ad,soyad INTO bilgiYedegi FROM bilgi WHERE il=’Ankara’
dediğimizde sadece il kolonu Ankara olan kişilerin adlarını yedekliyecektir..
eger birden cok tabloyu yedeklemek istersek, asagıdaki gibi bir SQL sorgusu yazabiliriz..
SELECT kisi.tamAdi,detay.il INTO ikiTablonunYedegi FROM kisi INNER JOIN detay ON kisi.kisiID=detay.kisiID
CREATE VIEW ifadesi
View (görüntü) nedir?
VIEW ifadesi sanal bir tablodur ve SELECT ifadesinin sonuc kumesini barındırır.
Bir view ile satır ve kolonları aynı gercek tabloda oldugu gibi gorebiliriz. SQL fonksiyonlarını, WHERE ve JOIN ifadelerini kullanarak tek bir tablo olarak goruntuleyebiliriz.
NOT: Veritabanı tasarımı ve yapıları view ifadesi ile bozulmamaktadır.
ifadenin kurulusu; CREATE VIEW goruntuAdi AS SELECT kolonAd(lar)i FROM tabloAdi WHERE durumNOT: View ifades(ler)i veritabanında barındırılmaz. Her sorguda yeniden oluşturur.
View (görüntü) kullanımı
Sorgulamada, işlem kayıtlarında, fonksiyon, baglantı gibi methodları kullanarak verileri kullanıcılara etkili biçimde gosterebilirisizin.
bazı View yaratma örnegi;
CREATE VIEW [kisi bilgi listesi] AS SELECT kisiID,tamAdi FROM bilgi
bunu goruntulemek için;
SELECT * FROM [kisi bilgi listesi]
|
|
|
|
Konu Yoruma Kapalı
|
|
|
|