{"id":202,"date":"2013-03-24T21:57:21","date_gmt":"2013-03-24T21:57:21","guid":{"rendered":"http:\/\/uniqturk.net\/?p=202"},"modified":"2016-07-01T19:40:44","modified_gmt":"2016-07-01T19:40:44","slug":"sql-komutlari-ve-puf-noktalari1","status":"publish","type":"post","link":"https:\/\/uniqturk.net\/sql-komutlari-ve-puf-noktalari1\/","title":{"rendered":"Sql Komutlar\u0131 ve P\u00fcf Noktalar\u0131"},"content":{"rendered":"
\n

Veri Listeleme
\n<\/strong>WHERE \u2013 ko\u015fullu olas\u0131l\u0131klar
\nGROUP BY- grup \u00f6zellikleri
\nORDER BY- kriter \u00f6zellikleri
\nLIMIT- veri al\u0131\u015f s\u0131n\u0131rland\u0131rma<\/p>\n

Olu\u015fturdu\u011fumuz tablo i\u00e7erisindeki verileri listelemek i\u00e7in \u00f6nce SELECT komutunu kullan\u0131p, veri almak istedi\u011fimiz s\u00fctun ad\u0131n\u0131 giriyoruz FROM komutundan sonrada tablomuzun ad\u0131n\u0131 girip veri taban\u0131ndaki verileri listeliyoruz. SQL tablosunda birden \u00e7ok s\u00fctunun verilerini listelemek i\u00e7in s\u00fctun adlar\u0131 aras\u0131na (,) konularak listeleme yap\u0131l\u0131r. Tablodaki t\u00fcm s\u00fctunlar\u0131n verilerini listelemek istedi\u011fimizde (*) parametresi kullan\u0131l\u0131r.<\/p>\n

SELECT adi,soyadi FROM Tablo_adi
\nSELECT*FROM Tablo_adi<\/p>\n

Belirli bir s\u00fctundaki verileri alfabetik s\u0131ra ile listelemek istedi\u011fimizde ORDER BY veya GROUP BY komutu kullan\u0131l\u0131r.<\/p>\n

ORDER BY komutunu tablo ad\u0131ndan sonra girip alfabetik veya rakamsal olarak verilerin s\u0131ralanmas\u0131n\u0131 istedi\u011fimiz s\u00fctun ad\u0131n\u0131 giriyoruz
\nSELECT adi FROM tablo_adi ORDER BY adi
\nVerilerimizi alfabetik veya say\u0131sal olarak tersi bir \u015fekilde s\u0131ralamak istedi\u011fimizde DESC komutundan yararlan\u0131yoruz.Bu komut tersine s\u0131ralama yap\u0131lacak S\u00fctun ad\u0131n\u0131 girdikten sonra yaz\u0131l\u0131r.
\nSELECT adi FROM tablo_adi ORDER BY soyadi DESC<\/p>\n

Baz\u0131 durumlarda SQL tablosu i\u00e7erisinde bulunan s\u00fctunlardaki verilerden birini veri giri\u015fi s\u0131ralamas\u0131na g\u00f6re, di\u011ferini de tersine \u00e7evirerek listelemek gerekebilir.<\/p>\n

SELECT adi,soyadi FROM tablo_adi ORDER BY soyadi DESC,ASC<\/p>\n

K\u0131yaslama ile Veri Listeleme<\/p>\n

SQL\u2019 de yer alan veri k\u00fcmesi i\u00e7erisinde istedi\u011fimiz veriyi listelemek istedi\u011fimizde WHERE kal\u0131b\u0131ndan yararlan\u0131r\u0131z.
\nSELECT*FROM tablo_adi WHERE adi=\u201dCihan\u201d<\/p>\n

Birden \u00e7ok kriterle listeleme i\u00e7in OR veya AND parametrelerinden faydalan\u0131r\u0131z
\nSELECT*FROM tablo_adi WHERE adi=\u201dCihan\u201d AND soyadi \u201cKur\u015fun\u201d
\nSELECT*FROM tablo_adi WHERE adi=\u201dOytun\u201d OR soyadi \u201dCivelek\u201d
\nSELECT* FROM tablo_adi WHERE adi IN (\u201cCihan\u201d,\u201dOytun\u201d)<\/p>\n

S\u00fctundaki veriler aras\u0131nda birden \u00e7ok s\u0131nama yapacaksak OR parametresi kullan\u0131laca\u011f\u0131na IN parametresi yard\u0131m\u0131 ile i\u015fimizi daha da kolayla\u015ft\u0131r\u0131r\u0131z.
\n= Sa\u011fdaki de\u011fer ile soldaki de\u011fer e\u015fittir
\n!= Sa\u011fdaki de\u011fer ile soldaki de\u011fer e\u015fit de\u011fildir.
\n< Sa\u011fdaki de\u011fer soldaki de\u011ferlerden b\u00fcy\u00fckt\u00fcr.
\n> Sa\u011fdaki de\u011fer soldaki de\u011ferlerden k\u00fc\u00e7\u00fckt\u00fcr.
\n<= Sa\u011fdaki de\u011fer soldaki de\u011ferle b\u00fcy\u00fck veya e\u015fittir.
\n>= Sa\u011fdaki de\u011fer soldaki de\u011ferle k\u00fc\u00e7\u00fck veya e\u015fittir.
\n<> E\u015fit de\u011fil, yok sayar.
\nBETWEN De\u011fer aral\u0131\u011f\u0131.
\nIN De\u011fi\u015fik verilerde se\u00e7me olana\u011f\u0131 sunar
\nAND Birden fazla s\u00fctunda sorgulama yapar \u201cve\u201d
\nOR Birden fazla s\u00fctunda sorgulama yapar \u201cveya\u201d
\nLIKE Belirtilen s\u00fctunda arama yapar
\nIS NULL Belirtilen s\u00fctunda bo\u015f olanlar\u0131 listeler.
\nIS NOT NULL Belirtilen s\u00fctunda dolu olanlar\u0131 listeler.
\nDESC Belirtilen s\u00fctundaki verileri belirli kriterlerin tersine listeler.
\nASC DESC komutunun tersi g\u00f6revi \u00fcstlenir. SQL default olarak ASC olarak verileri listeler.<\/p>\n

SELECT*FROM tablo_adi WHERE adi !=\u201dCihan\u201d
\nSELECT*FROM tablo_adi WHERE adi<>\u201dCihan\u201d<\/p>\n

Birinci komut sat\u0131r\u0131 ile ikinci komut sat\u0131r\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda ayn\u0131 sonucu al\u0131r\u0131z.<\/p>\n

SELEC*FROM tablo_adi WHERE no<5 GROUP BY no DESC<\/p>\n

\u00dcstte olu\u015fturdu\u011fumuz SQL c\u00fcmleci\u011finde g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi \u00f6nce 5\u2019ten k\u00fc\u00e7\u00fck olan verileri se\u00e7iyoruz daha sonrada bu verileri tersine listelemek i\u00e7in ORDER BY no DESC komutu kullan\u0131yoruz.<\/p>\n

Soru: Ad\u0131 Murat veya \u0130lker soyad\u0131 Kara veya AK s\u0131ra numaras\u0131 5ve 5 ten k\u00fc\u00e7\u00fck t\u00fcm verileri s\u0131ra numaras\u0131, ad\u0131 ve soyad\u0131 kriterlerine g\u00f6re listeleyerek verileri tersine \u00e7evirecek SQL komutunu yaz\u0131n.
\nCevap:
\nSELECT*FROM tablo_adi WHERE adi IN(\u201cMurat\u201d,\u0130lker\u201d) OR soyadi IN (\u201cKara\u201d,\u201dAk\u201d) OR no=<5 ORDER BY adi,soyadi,no DESC<\/p>\n

SQL de belirli aral\u0131klarla verileri listelemek istedi\u011fimizde BETWEEN komutundan yararlan\u0131l\u0131r.
\nSELECT * FROM tablo_adi WHERE no BETWEEN 10 AND 15<\/p>\n

BETWEEN kal\u0131b\u0131, sadece iki rakam aras\u0131ndaki verileri listelemek i\u00e7in kullan\u0131lmaz. Bu komutla alfabetik karakterler aras\u0131nda da s\u0131ralama yap\u0131labilir.<\/p>\n

SINIRLI VER\u0130 L\u0130STELEME
\nVerilerimizin bizim istedi\u011fimiz aral\u0131klarda listelenmesi i\u00e7in LIMIT komutu kullan\u0131l\u0131r.
\nSELECT*FROM tablo_adi LIMIT 0,5<\/p>\n

\u00d6rnekte g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere SQL\u2019 deki verilerin ilk veri giri\u015f s\u0131ralamas\u0131 ile ilk 5veriyi listeliyoruz.
\nBuradaki mant\u0131k genel programlama mant\u0131\u011f\u0131 d\u0131\u015f\u0131nda ilk veri i\u00e7in s\u0131ra numaras\u0131 0 de\u011fildir.T\u0131pk\u0131 g\u00fcnl\u00fck hayatta say\u0131 say\u0131yormu\u015f gibi hareket edebilir. E\u011fer veri k\u00fcmesindeki verilerin ilk X adedini listeleyeceksek LIMIT komutuna tek X yazarak ta ayn\u0131 sonucu alabiliriz. Yani 0 rakam\u0131n\u0131 koymaya gerek yok.<\/p>\n

SELECT*FROM veri LIMIT 8
\nVeri listeleme programlama dilleriyle t\u00fcm verilere ula\u015fmak s\u00f6z konusu oldu\u011funda ikili parametre kullan\u0131lmas\u0131 gerekir. Onun i\u00e7in genel kullan\u0131m iki parametreli oland\u0131r. Belli bir miktarda veri olan bir tablodaki 50 veriden sonraki t\u00fcm verileri listelemek i\u00e7in ne yapaca\u011f\u0131z?<\/p>\n

SELECT* FROM tablo_adi LIMIT 50,-1
\nBu komut sat\u0131r\u0131nda 50. Veriden sonraki t\u00fcm veriler listelenecektir.
\nSELECT*FROM veri WHERE no<15 ORDER BY adi DESC LIMIT 4
\nNo s\u00fctunundaki verilerin 15\u2019 den k\u00fc\u00e7\u00fck ilk 4 veriyi , adi s\u00fctunundaki verilerin alfabetik s\u0131ralamas\u0131n\u0131n tersi bir \u015fekilde s\u0131ralama yap\u0131yor.<\/p>\n

Not: tek T\u0131rna\u011f\u0131n ay\u0131rt edici karakter olmad\u0131\u011f\u0131n\u0131 belirtmek i\u00e7in i\u015fareti kullan\u0131l\u0131r.<\/p>\n

VER\u0130 ARAMA
\nGenel olarak SQL \u2018 de arama fonksiyonunu yerine getirmek i\u00e7in LIKE kal\u0131b\u0131 kullan\u0131l\u0131r. Yaln\u0131z bu komut tek ba\u015f\u0131na bir anlam ifade etmez. SQL de arama yapmak istiyorsak hangi s\u00fctun i\u00e7erisinde arama yapaca\u011f\u0131m\u0131z\u0131 belirtmek i\u00e7in WHERE kal\u0131b\u0131n\u0131n kullan\u0131lmas\u0131 gerekir.<\/p>\n

SELECT adi FROM tablo_adi WHERE adi L\u0130KE \u2018%tun%\u2019
\nSELECT adi FROM tablo_adi WHERE adi L\u0130KE \u2018%tun\u2019
\nSELECT adi FROM tablo_adi WHERE adi L\u0130KE \u2018tun%\u2019<\/p>\n

MySQL de kullanabilece\u011fimiz bir di\u011fer komutta REGEXP komutudur. LIKE komutu sadece % i\u015fareti kullan\u0131l\u0131rken bu komutta daha \u00e7ok karakter gruplar\u0131 kullan\u0131l\u0131r.<\/p>\n

SELECT adi FROM tablo_adi WHERE adi REGEXP \u2018^j\u2019
\nAdi kolonunda yer alan veriler i\u00e7erisinde j harfi ile ba\u015flayan t\u00fcm veriler listelenmektedir. E\u011fer aramak istedi\u011fimiz veriler i\u00e7erisinin herhangi bir yerinde arama yapmak istiyorsak herhangi bir karakter grubu kullan\u0131lmaz.<\/p>\n

SELECT adi FROM tablo_adi WHERE adi REGEXP \u2018j\u2019<\/p>\n

Bu komut sat\u0131r\u0131 adi s\u00fctunu i\u00e7erisinde j harfi i\u00e7eren t\u00fcm verileri listeler.<\/p>\n

SELECT adi FROM tablo_adi WHERE adi REGEXP \u2018j$\u2019
\n\u2018j\u2019 nin sonuna \u2018$\u2019 i\u015fareti kondu\u011funda sadece \u2018j\u2019 ile biten veri listelenir.<\/p>\n

Tablolar i\u00e7erisindeki verileri olu\u015fturduklar\u0131 karakter say\u0131lar\u0131na g\u00f6re listeletmemiz m\u00fcmk\u00fcn \u00d6rne\u011fin adi i\u00e7erisinde 9 karakter i\u00e7eren verileri listeletmemiz m\u00fcmk\u00fcn.Bu i\u015flem i\u00e7in ^ i\u015fareti ile $ i\u015faretinin yan\u0131nda ka\u00e7 karakter aramak istiyorsak o kadar nokta karakteri kullan\u0131l\u0131r.<\/p>\n

SELECT adi FROM tablo_adi WHERE adi REGEXP \u2018^\u2026\u2026\u2026$\u2019
\n\u0130stenilen noktay\u0131 tek tek yazmak yerine daha basit bir y\u00f6ntem vard\u0131r. \u2018{9}$\u2019
\nSELECT adi FROM tablo_adi WHERE adi REGEXP \u2018^.{9}$\u2019<\/p>\n

\u0130STAT\u0130ST\u0130KSEL VER\u0130 L\u0130STELEME
\nMIN S\u00fctundaki verilerin en k\u00fc\u00e7\u00fc\u011f\u00fcn\u00fc se\u00e7er
\nMAX S\u00fctundaki verilerin en b\u00fcy\u00fc\u011f\u00fcn\u00fc se\u00e7er
\nSUM S\u00fctundaki verileri toplar
\nAVG S\u00fctunlar aras\u0131ndaki de\u011ferlerin aritmetik ortalamalar\u0131n\u0131 verir
\nCOUNT Tablodaki veri say\u0131s\u0131n\u0131 verir
\nSTTDDEV S\u00fctundaki verilerin standart sapmas\u0131n\u0131 verir
\nVARIANCE S\u00fctundaki verilerin say\u0131s\u0131n\u0131 verir<\/p>\n

(+) Toplama yapar
\n(-) \u00c7\u0131karma yapar.
\n(\/) B\u00f6lme yapar
\n(*) \u00c7arpma yapar
\n(<) B\u00fcy\u00fckt\u00fcr
\n(>) K\u00fc\u00e7\u00fckt\u00fcr
\n(^) \u00fcst alma 2\u00b2<\/p>\n

SQL de belirli bir s\u00fctundaki verileri toplamak i\u00e7in SUM komutu kullan\u0131l\u0131r.<\/p>\n

SELECT SUM (no-1) FROM tablo_adi
\nSELECT SUM (no-1) AS Toplam FROM tablo_adi<\/p>\n

B\u00fct\u00fcn s\u00fctunlardaki verileri toplamak istedi\u011fimizde<\/p>\n

SELECT SUM (no1+no2) FROM tablo_adi
\nSELECT SUM (no1+ no2) AS Gtoplam FROM tablo_adi<\/p>\n

Aritmetik ortalamalar i\u00e7in AVG komutu kullan\u0131l\u0131r<\/p>\n

SELECT AVG(no1+no2)\/2 AS Ortalama FROM tablo_adi WHERE id=1
\nSELECT AVG (no1+no2)\/2 AS tum_ortalama FROM tablo_adi<\/p>\n

SQL de bulunan sat\u0131r say\u0131s\u0131n\u0131 yani veri say\u0131s\u0131n\u0131 verir.<\/p>\n

SELECT COUNT(*) AS veri_say\u0131s\u0131 FROM tablo_adi<\/p>\n

GROUP FONKSYONELL\u0130\u011e\u0130<\/p>\n

GROUP BY komutu ile SQL deki verileri belirli kriterlere g\u00f6re numaraland\u0131rmak m\u00fcmk\u00fcn.<\/p>\n

SELECT no3 , COUNT (no3) AS no FROM sayilar GROUP BY no3<\/p>\n

No3 s\u00fctunundaki bulunan t\u00fcm verilerden ka\u00e7ar adet oldu\u011funu belirlemek COUNT ve GROUP BY komutlar\u0131n\u0131 kulland\u0131k GROUP BY komutunu kullanarak istedi\u011fimiz istatisti\u011fini tutturabiliriz. \u015eimdide GROUP BY fonksiyonelli\u011fini kullanarak no3 ile no1 s\u00fctunundaki ayn\u0131 verileri toplayal\u0131m<\/p>\n

SELECT no3 SUM (no1) AS toplam FROM tablo_adi GROUP BY no3<\/p>\n

Somut olarak bir \u00f6rnek vermek gerekirse bir b\u00f6lgede se\u00e7im yap\u0131ld\u0131\u011f\u0131n\u0131 var sayal\u0131m A,B,C ad\u0131nda \u00fc\u00e7 parti se\u00e7imlere kat\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6z \u00f6n\u00fcne ald\u0131\u011f\u0131m\u0131zda t\u00fcm illerde hangi parti ka\u00e7 oy ald\u0131\u011f\u0131n\u0131 belirlemek istedi\u011fimizde GROUP BY komutundan yararlan\u0131r\u0131z
\nA
\nR\u0130ZE
\n3210
\nA
\nKARS
\n4210
\nA
\nS\u0130VAS
\n3899
\nB
\nR\u0130ZE
\n1210
\nB
\nKARS
\n2007
\nB
\nS\u0130VAS
\n707
\nC
\nR\u0130ZE
\n397
\nC
\nKARS
\n8007
\nC
\nS\u0130VAS
\n1908<\/p>\n

SELECT parti_adi AS isim, SUM (oy_sayisi) AS oy FROM tablo_adi GROUP BY parti_adi<\/p>\n

Se\u00e7imlerde oy oranlar\u0131 500 den fazla olan partileri listelemek istedi\u011fimizde HAV\u0130NG kal\u0131b\u0131n\u0131 kullan\u0131r\u0131z.<\/p>\n

\u0130S\u0130M
\nOY
\nA
\n11319
\nB
\n3924
\nC
\n10312<\/p>\n

SELECT parti_adi AS isim, SUM (oy_sayisi) AS oy FROM tablo_adi GROUP BY parti_adi HAV\u0130NG SUM(oy_sayisi)>=5000<\/p>\n

AYNI OLAN VER\u0130LER\u0130 AYIKLAMA<\/p>\n

Veritaban\u0131 i\u00e7erisinde ayn\u0131 olan verileri listelemek istedi\u011fimiz durumda neler yapabiliriz.
\nMesela bir sanal al\u0131\u015fveri\u015f sitesi yap\u0131yorsunuz ve ayn\u0131 kategoride de\u011fi\u015fik markalardan de\u011fi\u015fik \u00fcr\u00fcnler satmaktas\u0131n\u0131z. Her kategoride bulunana \u00fcr\u00fcnleri listelemek i\u00e7in do\u011fru bir kulan\u0131 olmas\u0131 gerek.
\nSanal al\u0131\u015fveri\u015f sitesinde 5 de\u011fi\u015fik marka televizyon tan\u0131t\u0131yorsan\u0131z ve \u00fcr\u00fcnleri kriterlere g\u00f6re listelemek istedi\u011finizde d\u00fcz veri listelemede t\u00fcm markalar listelenecektir. SQL de ayn\u0131 kriterdeki verileri listelemek i\u00e7in DISTINCT s\u00f6zc\u00fc\u011f\u00fcnden yararlan\u0131l\u0131r.<\/p>\n

SELECT DISTINCT no3 FROM tablo_adi
\nb\u00f6ylece ayn\u0131 t\u00fcr veriler kesinlikle olmayacak.<\/p>\n

\u0130STAT\u0130ST\u0130K \u00c7IKTILARI YUVARLAMA<\/p>\n

Verilerin ortalamalar\u0131 veya standart sapmalar\u0131n\u0131 al\u0131rken k\u00fcsuratl\u0131 say\u0131lar\u0131 tam say\u0131ya \u00e7evirebilir.<\/p>\n

SELECT AVG (no) AS d\u00fcz_ortalama FROM tablo_adi
\nFLOOR (AVG (no)) AS asag\u0131_ortalama FROM tablo_adi
\nCEIL(AVG(no)) AS yukar\u0131_ortalama FROM tablo_adi<\/p>\n

D\u00fcz Ortalama 43.5 A\u015fa\u011f\u0131 Ortalama 43 Yukar\u0131 Ortalama 44<\/p>\n

Matematiksel i\u015flemler<\/p>\n

SELECT 2+2
\nSELECT 3+5*8
\nBu \u00f6rnekte dikkat edilecek tek unsur \u00e7arpma ve b\u00f6lme i\u015flemlerinin \u00f6nce yap\u0131lmas\u0131d\u0131r.<\/p>\n

ABS(X)
\nX in mutlak de\u011feri
\nSIGN(X)
\nX negatifse -1 pozitifse 1 s\u0131f\u0131rsa 0 de\u011ferini \u00fcretir
\nMOD(X,Y)
\nX in Y ile b\u00f6l\u00fcm\u00fcnden kalan\u0131 verir
\nCEILING(X)
\nX i yukar\u0131 do\u011fru yuvarlar
\nFLOOR(X)
\nX i a\u015fa\u011f\u0131 do\u011fru yuvarlar
\nROUND(X)
\nX i mant\u0131ksal olarak a\u015fa\u011f\u0131 veya yukar\u0131 do\u011fru yuvarlar
\nLN(X)
\nex \u201cln\u201d
\nLOG2(X)
\nX in 2 taban\u0131nda logaritmas\u0131
\nLOG10(X)
\nX in 10 taban\u0131nda logaritmas\u0131
\nLOG(X,Y)
\nX tabanl\u0131 logaritman\u0131n Y say\u0131s\u0131n\u0131n de\u011feri \u201cLogxY\u201d wLogxy=a xa=y
\nPOW(X,Y)
\nX in Y inci kuvveti \u201cPOWER de ayn\u0131 i\u015flevi g\u00f6r\u00fcr.
\nSQRT(X)
\nX in karek\u00f6k\u00fc
\nPI()
\nP say\u0131s\u0131
\nLEAST(X,Y,Z)
\nDizinin en k\u00fc\u00e7\u00fck de\u011ferini verir
\nGREATEST(X,Y,Z)
\nDizinin en b\u00fcy\u00fck de\u011ferini verir
\nRADIANS(X)
\nX derecesini radyana \u00e7evirir
\nRAND(X)
\nX in rastgele de\u011ferini \u00fcretir
\nACOS(X)
\nX in ters \u00e7evrilmi\u015f kosin\u00fcs\u00fc
\nASIN(X)
\nX in ters \u00e7evrilmi\u015f sin\u00fcs\u00fc
\nATAN(X)
\nX in ters \u00e7evrilmi\u015f te\u011feti
\nATAN2(X,Y)
\nX ve Y b\u00f6l\u00fcm\u00fcn\u00fcn ters \u00e7evrilmi\u015f te\u011feti
\nCBRT(X)
\nX in k\u00fcp k\u00f6k\u00fc SADECE POSTGRESQL i\u00e7in \u00e7al\u0131\u015f\u0131r
\nCOS(X)
\nX in kosin\u00fcs\u00fc
\nCOT(X)
\nX in kotanjant\u0131
\nTAN(X)
\nX in tanjant\u0131
\nDEGREES( r)
\nRadyan\u0131n r derecesi (c)<\/p>\n

UN\u0130ON \u0130LE TABLOLARI B\u0130RLE\u015eT\u0130RME<\/p>\n

Birden \u00e7ok tablo i\u00e7erisinde belirtilen s\u00fctun veya s\u00fctunlar i\u00e7erisindeki verilerden birini almak kayd\u0131yla verileri listelemek i\u00e7in kullan\u0131l\u0131r. Bu komut sadece birden \u00e7ok tablodan ayn\u0131 olan verileri listelemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n

SELECT no FROM tablo_adi UN\u0130ON SELECT no FROM tablo_adi1<\/p>\n

UNION komutu ile tablodaki verilerde istatistiksel i\u015flemlerde kullan\u0131labilir. Mesela bir tablodaki en b\u00fcy\u00fck veri ile di\u011fer tablodaki en k\u00fc\u00e7\u00fck veriyi listeleyebiliriz.<\/p>\n

SELECT max(no) FROM tablo_adi UNION SELECT m\u0131n(no) FROM tablo_adi1<\/p>\n

\u0130K\u0130 TABLODAN KIYAS YAPARAK VER\u0130 L\u0130STELEMEK
\n\u00d6rne\u011fin a tablosundaki en k\u00fc\u00e7\u00fck de\u011ferin b tablosundaki en k\u00fc\u00e7\u00fck de\u011ferinin b tablosundaki bu bu verileri listelemek istedi\u011fimizde a\u015fa\u011f\u0131daki gibi bir kullan\u0131ma gitmemiz gerek.<\/p>\n

A B
\n15 25
\n25 45 sayi=25
\n35 55
\n45 25
\n55 25<\/p>\n

SELECT * FROM a WHERE sayi = (SELECT min (sayi) FROM b)<\/p>\n

SELECT sayi AS sonuc FROM a WHERE sayi BETWEEN (SELECT min (sayi) FROM b) AND (SELECT max (sayi) FROM b )<\/p>\n

Burada b tablosundaki en k\u00fc\u00e7\u00fck de\u011fer ile en b\u00fcy\u00fck de\u011fer aral\u0131\u011f\u0131ndaki verileri a tablosundan \u00e7ekiyoruz. Sonu\u00e7 olarak b tablosundaki en k\u00fc\u00e7\u00fck veri 25, en b\u00fcy\u00fck veri ise 55 oldu\u011fu i\u00e7in a tablosunda ilk veri hari\u00e7 t\u00fcm de\u011ferler listelenebilir.<\/p>\n

SONU\u00c7
\n25
\n35
\n45
\n55<\/p>\n

TAR\u0130H ZAMAN FONKS\u0130YONLARI
\nDATE \u201c2005-12-31 zaman\u0131n rakamsal de\u011ferini
\nTIME \u201c00:00:00\u201d zaman\u0131n saat de\u011ferini
\nTIMESTAMP \u201c2005:12:30 00:00:00\u201d zaman ve saatin ayn\u0131 anda de\u011ferini verir<\/p>\n

*** tarih alan\u0131nda veri girerken dikkat etmemiz gereken bir husus, tarih alan\u0131n\u0131 tutan DATE tipindeki alanlarda y\u0131l ay g\u00fcn \u015feklinde, saat i\u00e7eri\u011fini tutan TIME veri alan\u0131nda ise saat dakika ve saniye olmak \u00fczere elle veri giri\u015finde bulunabiliriz. G\u00fcn\u00fcn tarihi ve saatini otomatik olarak veri giri\u015finde ger\u00e7ekle\u015ftirmek i\u00e7in NOW() komutunu t\u0131rnak i\u00e7ine almadan giriyoruz.<\/p>\n

SELECT* FROM tablo_adi WHERE tarih <2002-01-01<\/p>\n

Burada g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi SQL de tutulan tarihler i\u00e7erisinde 2002-01-01 tarihinden k\u00fc\u00e7\u00fck verileri i\u015fliyoruz<\/p>\n

SELECT* FROM tablo_adi WHERE MONTH (tarih)=8<\/p>\n

SQL de bulunan tablonun tarihleri i\u00e7erisinde 8. Ay olan verileri listelemek i\u00e7in WHERE \u015fart\u0131ndan sonra MONTH komutunu kullan\u0131yoruz. Y\u0131l alan\u0131n\u0131 tespit etmek i\u00e7inde WHILE komutundan sonra YEAR komutundan yararlan\u0131l\u0131r. Bulundu\u011fumuz y\u0131l\u0131n SQL deki tabloda bulunan veriler aras\u0131nda olanlar\u0131 listelemek i\u00e7inse NOW() komutundan yararlan\u0131l\u0131r.<\/p>\n

SELECT*FROM tablo_adi WHERE YEAR (tarih)=YEAR (NOW())<\/p>\n

KOMUT
\nA\u00c7IKLAMA
\nDATE
\nTarih \u00e7\u0131kt\u0131s\u0131 verir 2003-10-19
\nTIME
\nSaat \u00e7\u0131kt\u0131s\u0131 verir 23:59:59
\nDAYOFWEEK
\nBelirtilen tarihin g\u00fcn say\u0131s\u0131n\u0131 verir (Pazar g\u00fcn\u00fc 1 rakam\u0131 olarak listelenebilir.
\nWEEKDAY
\nBelirtilen tarihin g\u00fcn say\u0131s\u0131n\u0131 verir(pazartesi 0 rakam\u0131 al\u0131narak listelenebilir.
\nDAYOF MONTH
\nBelirtilen tarihin g\u00fcn say\u0131s\u0131n\u0131 al\u0131r
\nDAYOFYEAR
\nBelirtilen tarihin y\u0131l\u0131n ka\u00e7\u0131nc\u0131 g\u00fcn\u00fc oldu\u011funu \u00e7\u0131kar\u0131r
\nMONTH
\nBelirtilen tarihin ay rakam\u0131n\u0131 al\u0131r
\nDAYNAME
\nBelirtilen tarihin g\u00fcn ad\u0131n\u0131 verir(Thursday gibi)
\nMONTHNAME
\nBelirtilen tarihin ay ad\u0131n\u0131 verir (February gibi)
\nWEEK
\nBelirtilen tarihin ka\u00e7\u0131nc\u0131 hafta oldu\u011funu g\u00f6sterir
\nYEAR
\nBelirtilen tarihin y\u0131l\u0131n\u0131 \u00e7\u0131kart\u0131r
\nHOUR
\nBelirtilen zaman\u0131n saatini \u00e7\u0131kart\u0131r
\nMINUTE
\nBelirtilen zaman\u0131n saatini \u00e7\u0131kart\u0131r
\nSECOND
\nBelirtilen zaman\u0131n saniyesini \u00e7\u0131kart\u0131r
\nPERIOD_ADD(X,y)
\nBelirtilen tarihte belirtilen ay say\u0131s\u0131n\u0131 ekler
\nPERIOD_DIFF(X,y)
\nBelirtilen tarihten belirtilen tarihi \u00e7\u0131kart\u0131r
\nDATE_ADD(X,INTERVAL,y)
\nBelirtilen tarihe belirtilen \u201cy\u201d tip tarih ekler (y i\u00e7in : YEAR MONTH WEEK DAY ve komutlar kullan\u0131l\u0131r
\nDATE_SUB(X,INTERVAL,y)
\nBelirtilen tarihe belirtilen \u201cy\u201d tip tarih \u00e7\u0131kart\u0131r(y i\u00e7in: YEAR MONTH WEEK DAY ve komutlar kullan\u0131l\u0131r<\/p>\n

SQL i bir hesap makinesi olarak nas\u0131l kulland\u0131\u011f\u0131m\u0131z\u0131 g\u00f6stermi\u015ftik SQL say\u0131lar aras\u0131nda hesap yapabilece\u011fi gibi harf ve tarihler aras\u0131nda da hesap yapabilmesi m\u00fcmk\u00fcn.
\nSELECT adi, dogum_tarihi, CURRENT_DATE as bugun,(YEAR(CURRENT_DATE)) \u2013(YEAR(dogum_tarihi))-(RIGHT(CURRENT_DTE,5))<RIGTH(dogum_tarihi,5)) AS fark FROM tablo_adi ORDER BY fark
\nAdi dogum_tarihi bugun fark
\nNazl\u0131 1983-07-24 2003-09-16 20
\nErsin 1980-01-30 2003-09-16 23
\n\u0130lk olarak g\u00fcn\u00fcn tarihi ile SQL deki kay\u0131tl\u0131 olan \u00fcyelerin do\u011fum tarihlerini k\u0131yaslayarak \u00fcyelerin ya\u015flar\u0131n\u0131 belirliyoruz. Sadece y\u0131l k\u0131yaslamas\u0131 yap\u0131lmas\u0131 yanl\u0131\u015f olabilir. B\u00f6yle hatalarla kar\u015f\u0131la\u015fmamak i\u00e7in ay k\u0131yaslamas\u0131 yap\u0131larak MYSQL de d\u00f6nen 0 veya 1 sonucunu y\u0131l hesab\u0131ndan \u00e7\u0131kard\u0131\u011f\u0131m\u0131zda \u00fcyelerin tam ya\u015flar\u0131 ortaya \u00e7\u0131kar.<\/p>\n

 <\/p>\n


\n","protected":false},"excerpt":{"rendered":"

Veri Listeleme WHERE \u2013 ko\u015fullu olas\u0131l\u0131klar GROUP BY- grup \u00f6zellikleri ORDER BY- kriter \u00f6zellikleri LIMIT- veri al\u0131\u015f s\u0131n\u0131rland\u0131rma Olu\u015fturdu\u011fumuz tablo i\u00e7erisindeki verileri listelemek i\u00e7in \u00f6nce […]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":540,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/posts\/202"}],"collection":[{"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/comments?post=202"}],"version-history":[{"count":0,"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/posts\/202\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/media\/540"}],"wp:attachment":[{"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/media?parent=202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/categories?post=202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uniqturk.net\/wp-json\/wp\/v2\/tags?post=202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}