Veritabanı MSSQL SQL nedir
|
#6798 |
|
|
Kaan
User is:
Posts: 2772
Meslek: Serbest Meslek
Age: 43
|
SQL nedir ?
++ SQL in a??l?m?; Structured Query Language [ Yap?sal Sorgu Dili ] ++ SQL sizi veritaban?na eri?menizi saglar. ++ SQL, ANSI standard?nda bir bilgisayar dilidir. ++ SQL veritaban?na kar?? sorgular? ?al??t?rabilir. ++ SQL veritaban?ndaki verileri tekrar ele alabilir. ++ SQL veritaban?na yeni bir kay?t ekleyebilir. ++ SQL veritaban?ndan bir kay?t silebilir. ++ SQL veritaban?ndaki bir kayd? guncelleyebilir. ++ SQL kolay ??renilir SQL standartt?r, fakat ... SQL, ANSI (American National Standards Institute - Amerikan Ulusal Standardlar? Enstitus?) standard?nda vertaban?na ulasmak ve i?lemek i?in kullan?lan bir bilgisayar dilidir. SQL komutlar? veritaban?ndaki verileri guncellemek, tekrar ele almak i?in kullan?l?r. SQL in kullan?ld?g? veritaban? programlar? MS Access, MS SQL Server, DB2, Informix, Oracle, Sybase vs. Fakat SQL dilinin bir?ok farkl? versiyonlar? vard?r, ama yinede ?nemli anahtarlar genelde ayn?d?r yada cok benzerdir (?rnegin SELECT, UPDATE, DELETE, INSERT, WHERE, ve digerleri). SQL Veritaban? tablolar? Veritaban? bir yada birden fazla tablodan olusur. Her tablonun bir ad? vard?r. Bu tablolardaki kay?tlar dizilerde (row) saklan?r. ?rne?in "bilgi" tablosunda; ad soyad il yas ----- ------- ---- ----- ali ?zg?r ankara 15 veli s?zc? trabzon 20 necmi yakan sivas 19 yukardaki tablo ?? kay?da sahiptir, her bir ki?i i?in bir tane, yani 3 sat?ra (row) ve ayr?ca 4 adet kolona (column) sahiptir. SQL sorgular? SQL ile, veritaban? sorgulanabilir ve soncular? al?nabilir. ?rnek bir sorgu; SELECT soyad FROM bilgi Sonucu; soyad ----- ?zg?r s?zc? yakan SQL Veri i?leme dili (DML - Data Manipulation Language) SQL, sorgular? cal?st?rmak i?in bir s?zdizimidir. Fakat ayn? zamanda kay?tlar? guncelleme, ekleme ve silmek i?inde kullan?l?r. Bu sorgu ve guncelleme komutlar?, birlikte SQL in bir bolumu olan Veri i?leme dilinin olusturuyor: ++ SELECT - veritaban?ndaki tablodan veri al?r ++ UPDATE - veritaban?ndaki tablodaki veriyi gunceller ++ DELETE - veritaban?ndaki tablodan veri siler ++ INSERT INTO - veritaban?ndaki tabloya yeni bir veri ekler SQL Veri tan?mlama dili (DDL - Data Definition Language) SQL in bir bolumu olan veri tan?mlama dili, veritaban? tablolar?nda i?lem yapmaya izin veren, tablolar? olusturmak yada silmek i?in kullan?l?r. Ayr?ca index (arama anahtar?) belirlemedede kullan?lan bir dildir. Tablolar aras?nda etkile?imi saglayabilir, aralar?nda bir ba? kurabilirsiniz. En s?k kulllan?lan veri tan?mlama s?zdizimleri: ## CREATE TABLE - tablo yarat?r ## ALTER TABLE - tabloyu degi?tirir ## DROP TABLE - tabloyu siler ## CREATE INDEX - index (arama anahtar?) olusturur ## DROP INDEX - indexi siler ?imdi bu s?zdizimlerini biraz daha ayr?nt?l? anlatal?m... SELECT ifadesi Bu ifade tablodan veri secmek i?in kullan?l?r. ifadenin kurulusu; SELECT kolonAd(lar)i FROM tabloAdi ?rnek veri taban?m?zda "bilgi" tablomuzda ad soyad il yas ----- ------- ---- ----- ali ?zg?r ankara 15 veli s?zc? trabzon 20 necmi yakan sivas 19 verileri var diyelim SELECT yas FROM bilgi dedi?imizde yas --- 15 20 19 sonucu al?r?z. birden cok kolon secmek i?in ise; SELECT ad,soyad FROM bilgi dedi?imzde ad soyad ----- ------- ali ?zg?r veli s?zc? necmi yakan sonucunu verir. tum kolonlar? secmek i?inde; SELECT * FROM bilgi dememiz yeterlidir. SELECT DISTINCT ifadesi Bu ifade sadece farkl? ifadeleri secmek i?in kullan?l?r. ifadenin kurulusu; SELECT DISTINCT kolonAd(lar)i FROM tabloAdi ?rnek veritaban?m?zda "veriler" tablomuzda firma urunNo ----- -------- CS 4586278 CW 7894331 CL 456 CH 45689 CW 789666879 verileri var diyelim SELECT firma FROM veriler dedi?imizde sonuc; firma ----- CS CW CL CH CW olucakt?r. Ama ifadeye distinct eklersek, yani SELECT DISTINCT firma FROM veriler dersek sonuc; firma ----- CS CW CL CH seklinde olucakt?r, yani tekrarlanan sat?r bilgileri al?nm?yacakt?r. WHERE ?art? Bu ?art, select ifadesi ile kullan?l?r. ?art?n kurulusu; SELECT kolonAdi FROM tabloAdi WHERE kolonAdi operator deger Bu ?artta kullan?labilir operatorler; = e?it <> e?it de?il > b?y?kt?r < k?c?kt?r >= b?y?k yada esittir <= k?c?k yada esittir BETWEEN belli bir aral?k aras?nda LIKE belli bir kal?pla arama NOT: baz? SQL versiyonlar?nda <> yerine != de kullan?labiliyor. ?rnek veritaban?m?zda "ipList" tablomuz olsun; kullaniciAdi sifresi ipNumarasi ------------ --------- ---------- Admin bulamazs?n 127.0.0.1 Ziyaretci bulsamdasoylemem 127.0.0.2 Backup op. guvenlisifre 127.0.0.1 MMx enguzelsifrebu 127.0.0.1 Haberci forerunner 127.0.0.3 SELECT * FROM ipList WHERE ipNumarasi=?127.0.0.1? dedi?imizde sonuc; kullaniciAdi sifresi ipNumarasi ------------ --------- ---------- Admin bulamazs?n 127.0.0.1 Backup op. guvenlisifre 127.0.0.1 MMx enguzelsifrebu 127.0.0.1 olucakt?r. Bu ?artta kulland?g?m?z degeri tek t?rnak (?) i?ine almam?z onemlidir, aksi taktirde sorunlar c?kabilir. SELECT * FROM ipList WHERE ipNumarasi=?127.0.0.1? ---> Dogru SELECT * FROM ipList WHERE ipNumarasi=127.0.0.1 ---> Yanl?s SELECT * FROM ipList WHERE kullaniciAdi=?MMx? ---> Dogru SELECT * FROM ipList WHERE kullaniciAdi=MMx ---> Yanl?s LIKE operatorunun kullan?l?s? Bu operatorle belli bir kal?pta arama yapabilirsiniz. ifadenin kurulusu; SELECT kolonAdi FROM tabloAdi WHERE kolonAdi LIKE kalip (%) i?areti bilinmeyen yada eksik olan karakter i?in kullan?l?r. ?rnek SQL ifadeleri; SELECT * FROM ipList WHERE kullaniciAdi LIKE ?A%? SELECT * FROM ipList WHERE kullaniciAdi LIKE ?%x? SELECT * FROM ipList WHERE kullaniciAdi LIKE ?%er%? 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 tablo SELECT 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.yabanciKeyBolgesi 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 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.yabanciKeyBolgesi 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 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.yabanciKeyBolgesi SQL 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 sorgusu ilk SQL sorgusu UNION ALL ikici SQL sorgusu veritaban?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 veriTabaniAdi Veritaban?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.indexAdi tablo silmek i?in kurulacak ifade; DROP TABLE tabloAdi veritaban?n? silmek i?in kurulacak ifade; DROP DATABASE veritabaniAdi Eger sadece bir tablo i?indeki verilerin hepsinden kurtulmak istersek, kullan?cag?m?z ifade; TRUNCATE TABLE tabloAdi ALTER 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 kolonAdi Yanl?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?: bolgedeki karakterlerin hepsini buyuk yapar LCASE?: bolgedeki karakterlerin hepsini kucuk yapar MID(c,start[,end]): yaz? alan?ndan karakterleri cal?st?r?r INSTR?: 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 kolon veritaban?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 deger veritaban?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 durum NOT: 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] Kaynak: http://www.teknolojioku.com/foru.....1226.html |
Emlak, Oto Galeri, Rent A Car, ?iir, Edebiyat Script Sipari?lerinizi Verebilirsiniz. Detaylar ??in: kaan@ntka.org Seditio 170 ?ndir Capte M?zik ?ndir Seditio Toolbar ?ndir |













