Kategoriler


SON YORUMLAR
atomparcacigi
Güzel ve bilgilendiren makaleler var çok beğendim. Ama yeni yazsanız daha iyi olur.
skynetademir@gmail.com
Her türlü C#, C++ ödevi yapılır.skynetademir@gmail.com
spiderman
tatar ramazan ODTÜ ve Sakarya mezunları süper ama İTÜ mezunlarını kapıdan içeri almıyorlar diyorsun ben de tam tersini biliyorum İTÜ mezunları mezun olmadan iş buluyor havada kapıyorlar OdTÜ ve sakarya mezunları iş arıyorlar sektörü bilmesek ?
Ömer karikutal
Php,mvc asp.net, c # ödevleriniz uygun fiyata yapılır. karikutalomer@gmail.com
Ercan Sezdi
Donanimsal ödevlerinizi de yapabilirim. Raspberry pi, Ardiuno, Msp430 donanimsal programlama yapabilirim. Programlama dilleri C++, Python, Assembly olabilir. Zorluk derecesine gore mobil uygulama da yazabilirim. Iletisim: ercansezdi007@gmail.com
Ercan Sezdi
Elektrik elektronik mühendisliği okuyorum. Pyhon ve C++ ödevleri yapabilirim. Iletisim: ercansezdi007@gmail.com
Senior Dotnet Developer
Merhaba arkadaslar, Yazilan yorumlari bikmadan usanmadan okudum. Ssagdan soldan duyacaklariniz yerine gercek hayat hikayesinden baslayayim. Elk elktrnk muhendisi olarak 7 yilda 2.2 ortalama Uldag unv den mezun oldum. Sene 2010. Askere gidip geldim.1 sene de bos bos kahvede okey oynayarak gecirdim :)) is aradimmi? Hayir. Nasilsa yillarca calisacagiz diyerek keyfime daha cok zaman ayirdim. Hafif bir giristen sonra hizli bir giris olsun. Aldigim maaslari yazayim heyecanli olsun:) 1. Firma :1250- 6 ay (asgari ucret:900) 2. Firma : 2500-10 ay 3. Firma : 3000-1 yil 4. Firma : 4000-10 ay 5. Firma : 6000- 18 ay 6.Firma : 9000+ istanbul ?? henuz baslamadim :) Bu kadar detayi verdim ki biraz motive olun. 7 yilda farkli muhendislikten gelen biri buraya gelebilirse calisan herkes icin bu sans var. Bu firmalardan son 3 tanesi hergun duydugunuz yerler. 2 kez de 2 farkli yerde terfi aldim. Herkesin girmeye can attigi iyi maas veren yerler. Cok da gozunuzde buyutmeyin. He soylemeyi unuttum java diil .net developer olarak calisiyorum. Bu maaslar ile cok javaciyi geciyorum. Piyasayi baya iyi tanidim.Maas skalalarini vs. Size tavsiyem her duydugunuza inanmayin. Yok pahasina calismayin, fazla da ucmayin hersey dozunda guzel. Kisacik bir detay daha. 2012 de istanbula ilk geldigimde 3 haftada 21 yer ile gorusmustum. Gecen ay 2 haftada 20 yer ile gorustum. Piyasa 2012 den beri acik. Torpilsiz sadece calisarak buralara geldim.Ise giremiosaniz cv nize bakan yoksa oturup dusunmekte fayda var. Birsryleri eksik yapiorsunuz belki de. Not ::::::: Gecenin 2sinde tum bunlari yazdim ki birilerinr faydam olsun. Ne yazikki her kafadan bi ses cikiyor guzelim Turkiyemde. Bilenler atanlar tutanlar bol bol. 70 den fazla yer ile gorustum buyuk kucuk. 50 tanesinden olumsuz donus yada hic donus olmamistir. Sonucta buralara gelebildim. Gelecek bilisimde. Motivasyonunuz hic kirilmasin. Kalin saglicakla.
Memet
Katılım ödevim var yardıma ihtiyacım var yardımcı olabilecek var mı
Halil
Tatar Ramazan
Bizim Sakarya üniversitesinden iyi yerlere gelen bir sürü adam var. Hatta ödevleri yapmayan tembel bilinen biri katılım bankasına girdi şimdi de Avustralyada programcılık yapıyor. Kurumsal firmalarda her üniversiteden eleman vardır zaten. Mesela Ford Otosan. Çok da para vermez hepsi. Memur maaşına çalışırsın. General Elektrik gibi yerler yüksek maaş verebilir. Ama oralara girmek zordur. İşi de zordur. Ben 2010 yılında KPDS İngilizceden 89 almıştım. Süper bilişim uzmanıyım. İyi öğretim almak, Üniversitede bol proje yapmak kişiyi 1-0 öne geçirir. Veya ortalamada yüksek puanlı, öğretimi iyi olan üniversite mezunları daha başarılı olabilir. İtirazım yok. Ama istisnalar da her zaman mevcuttur. Kocaelinin birincisi elbette yıldızın sonuncusundan daha başarılı olacaktır.
No One
Tatar, sen neye atarlanıyorsun? Boş işler dediğin bütün hayatını etkileyecek kariyer planın ve senin bütün hayatın. Herkes her yere gelemez, kimse kimseyi kandırmasın, en öncelikle de kendini kandırmasın. Verdiğin örnekler istatistik orsnında yüzde kaç acaba? Mesela anadolu okulundan mezun kaç kişi iyi şirketlerde çalışıyor, büyük çoğunluk iş bulamıyor kendi tanıdıklarım var, ben üzerine diyorumki iyi okuldakiler de her yerde istediği gibi bulamıyor, sen burada montajcılık yaparken amerikalısı avrupalısı senin kullandığın teknolojileri üretiyor, senin yaptığın mühendislik mi montajcılık mı şimdi? Tr de en iyi şirketlerde çalışan farklı 10 üzeründe onlarca kişiye sor bakalım neyin dizaynını neyin teknolojisini üretmişler? Söylediğin bakan ingilterede yaşıyorsa sterlin olarak maaş alır 70bin tl diyerek manipule etme 6 ya böl, 11 bin sterlin de, tr de veriyorlarsa kim kime o kadar parayı veeiyor kaç tane bölüm birincisi o parayı alıyor saçmalama lütfen. Ben diyorumki birincil hedef herşeyini kariyere odaklama veya tamamen boşa salma, herkes bir şekilde yaşıyor hayatını zaten ancak neyi istiyorsa ona çabalasın ama bazı şeyler olmuyorsa da hayatını mutsuz geçirme. Sen mesela bırak dünya işlerini ahiretini yaşa diyorsun, milyonluk girişimcilik yapsan ve işlerin tıkırında gitseydi ve birçok hayalini gerçekleştirseydin şu anda beyler şunu şunu yapın hayat çok güzel diyecektin, şimdi gelmiş hayat boş diyorsun, komik. Benim yazdıklarımdan herkes ne demek istediğimi anlamıştır zaten, bazı şeyleri görmek için 40 yaşına gelmeye gerek yok, çok fazla araştırıp çok fazla kişiye sorarsan ve işin içinde bizzat bulunursan görüyorsun zaten ki yazdıklarım çok az şey olmasına rağmen anlaşışır özet bilgiler, seversin kullanırsın, sevmezsin saygı duyar ve okumazsın bu kadar basit.
ali
amk bilgisayar mühendsiliği nerden seçtim seni mis gibi kolay bölümler varken çekilir dert değil...... tavsiye etmiyorum kardeşim.
Tatar Ramazan
No One bırak boş işleri başlarım kariyerine de üniversitesine de! Dünyada bir halt olmadığını anlayın işte. Ahirete yatırım önemli. Herkes bir şekilde yükseliyor ilerde zaten. ODTÜ mezununun 26 yaşında geldiği noktaya Sakarya mezunu 33 yaşında geliyor. Ortalamada ne kadar çalıştıysan hayat sana o kadar verir. Mesele Karadeniz Teknik Maliye bitiren biri vardı. 29 yaşında vergi denetmeni oldu. Ankara Siyasal bitirseydi 22 yaşında işe girerdi. Eski bakan Mehmet Şimşek bölüm birincisi oldu. İngilterede 70 bin lira maaş alıyordu. Her şey ve herkes derece derece.
No One
Yeni mezun olarak birkaç küçük şey yazmak istiyorum, kariyer net veya linkedin deki iş ilanlarına bakarsanız, özellikle yeni mezun olanlar için bile min 2 yıl deneyim ve birçok programlama dilleri vs isterler. 5 kişi işe alınacaktır, 500 kişi başvurur. Her yere gereksiz sayıda birçok üniversite açıldı, avrupanın en kaliteli üniversiteleri ingiltere ve almanyada bile max 50 civarı, bizde ise 150-200 arasında bunun siyasi bazı sebepleri var. Mesela siz her il e üniversite açarsanız, tüm ailelerin çocukları üniversite mezunu olacaktır, çocuk ve aile pskolojikmen rahatlar. Esnaf ise öğrencilerden ciddi gelir elde edecektir. Sorun ise bizim gibi ülkelerde bilim veya teknoloji geri plandadır ve iş istihdamı azdır, mesela 100 kişi işe alınacaktır ancak açılan birçok üniversite ile 1000 kişi mezun olur ve kalan 900 kişi işe giremez, bu sayı her yıl daha da artar ve işsizlik artar, insanlar da artık üniversite mezunu olma fark yapmıyor master yapayım, part time çalışayım der, zaten birçoğu çok kalitesiz eğitim alır ve giriş maaşları 1500-3000 arasında olur yılları işsizlik veya düşük maaşla geçirir. Kişi de sorunu kendisinde sanır, halbuki tüm suç sistemin böyle olmasını sağlayanlar, anca siz yıllar sonra para ve zaman kaybınızı anlarsınız, veya anlasanız bile elinizden çok fazla birşey gelmez. Peki şirketler insanları neye göre seçer, kendini geliştir denilen tavsiye ne kadar doğru? Arz-talep dengesini iyi analiz etmelisiniz, mesela şu anda çok fazla mezun var, ekonomik kriz dolayısı ile iyi okuldan mezunlar bile zannettiğiniz gibi hemen iş bulamıyor. Ya top 5 okul dan 3+gpa ile mezun olacaksınız, ya da torpiliniz olacak. Ben top 5 okuldan mezunum ve okulun zorluğundan dolayı mezun olan herkesin onlarca projesi, jaca, c, c++, python, matlab gibi dilleri, birçok farklı ideleri, oop, mvc, design pstterns, ve çok farklı çeşitte algoritma çeşitleri görmelerine ve ingilizce seviyesinin çok iyi olmalarına rağmen (toefl a girenelerin çoğu 80-100 arası) ve alese girenlerin çoğu 80-95 arası aldığını düşünürseniz, yine de işe girerken sizi beğenmezler, benim gördüğüm kadarıyla şirketlerin insan seçerken yaptıkarı sıralama şu şekilde, 1- okul ismi (boun, koç, itü, odtü, bilkent top 5, ytü, sabancı, tobb, hacettepe vs gibi ikincil seviye okullar, diğerleri daha geri planda, her şirketin kendince filtreleme sistemi var ve bazı okul mezunlarını asla almazlar) 2- gpa ortalama (kurumsal veya büyük şirketler savunma, telekom, banka vs hepsi önem verir, master yapmak istiyorsanız birinci kriterdir, küçük teknokent şirketlerinden de soran çok oluyor ben ve arkadaşlarıma staj için bile) 3- ingilizce (iyi okulların çoğunun ingilizce seviyesi upper dır, ingilizceniz yoksa bilgisayarcı sayılmazsınız) 4- yaptığınız projeler, staj, part time, iş deneyimi (bazı şirketler ilanlarda iyi yerde staj yapmış olma koşulu koyar, iş yaptığınız sektörde staj yapmanızı beklerler vs, 2017 den beri birçok şirket kurumsal ve normal hemen hemen hepsinde artık staj yapmak bile zordur, ya gpa 3+ olacak, ya da torpiliniz, top5 okuldaki ben ve birçok arkadaşım staj bulmada zorlandı, top5 te değilseniz part time veya normal iş tecrübesi sizi direk öne atar, iyi okuldakilerin çoğu derslerinde projeler çok ve zordur, o yüzden diğer okuldakilerin aradaki açığı iş tecrübesi ve hobby projelerle kapatması lazım) 5-referans (okuldaki hocanız veya staj, iş yerindeki mühendisin işe girerken size olumlu referans olması, şu anda yeni mezunlardan 2-3 tane referans istiyor birçok şirket 6-diğerleri, aklıma gelmeyen diğer işler, sosyal sorumluluk, klüp, sertifika, yarışma vs bunlara önem veren ik cı veya şirketler olabiliyor cv nin kenarında durması işe yarayabilir 0- torpil, çevreden veya akraba aile tanıdık ile torpiliniz var ise diğer herşeyden etkili hale gelip herkesin önüne geçebilirsiniz, batıda iş liyakat veya işi en iyi yapana verilir. Doğu toplumlarında ise iş güvenilir kişi ile yapılır, o yüzden tanıdıkları işe alırlar, şirket gizliliği ve güvenliği bazı şirketler için çok sıkıntılı olabiliyor vs, bu kozu olan çok fazla insan var piyasada, o yüzden siz bunlardan birisi değilseniz yukarıdaki beş maddenin hepsini yükseltmeye bakın. İyi okul hiçbirşey mi, veya herşey mi? Top5 ten gpa 2.0 - 2.5 arasında mezun olursanız biraz zor günler sizi bekliyor, master yapamazsınız, paranız yoksa yurt dışına gidemezsiniz, çok ağır ders ve projeler yaptınız ama okulu zor bitirdiniz ve dışarıdaki şirketler size çok önem vermeyebilir, iş bulurken ve bulduktan sonra da min 1 yıl falan zorluk çekersiniz, ilk başlarda iyi kurumsaldan başlamak zordur İyi okul mezunu Gpa 2.5-3.0 arası, savunmaya girmek zorlar, onun dışında bazı kurumsallara ilk başta giremezsiniz ama bazılarına girebilirsiniz, master içinde şartlar biraz zorlar İyi okul mezunu 3gpa+ ile master veya iş bulmak daha kolaydır ancak okuldaki zorluklardan sonra hiçbir zaman tatmin olamayabilirsin, çünkü hayat üniversitede zor projelerle uğraşırken kurduğun hayaller gibi değilmiş onu işe girince öğreniyorsun Diğer okullardan mezunlar, okulda gezip tozduysanız çok güzel, en güzel yıllarınız o yıllardı, zor okuldakiler kadar çalışmadınız ve gençliğiniz full çalışmayla geçmediyse iş hayatı ilk birkaç yıl zorlar, sonrasında kurumsal şirketlerin bazılarında hatta çoğunda devam edebilirsiniz belki (2-3 yıl sonra girenler var oran olarak bilmiyorum, bazı şirketlere çok zor) Yaş 28-30 üstü ise, srtık iş bulmak yeni mezun kadar zordur, çünkü maaş beklentisi fazla ancak şirketler siz ne kadar kaiteli olursanız olun sizden daha ucuza çalışacak birisini bulabiliyor, maaş zamları veya artışı düşük, tl nin alım gücü her seferinde düşüyor, kaygılar çocuk varsa dahada fazla Yurt dışına mastera gitsenizde, phd yapsanızda yaş ilerliyor, 30 una yaklaştığında hala öğrenci gibi takılmak zorunda olmak, avrupada 2-3-4 bin euro ya yaşamak, hangi ara evleneceksin, ev veya araba alacaksın, geri.dönecek misin, hayatın boyunca atomu mu parçalayacaksın? Tr dekiler en azından atom parçalamıyor Sonuçta top5 okuldan yeni mezun, tr de yine top şirketlerin birinde ben ve çoğu arkadaşım 3.5-4.5k ya başladık, savunmadakiler 5k üstü, ancak tavsiye verecek olursam, tünelin ucu bmbk bir yere çıkıyor. Hayatınızı doya doya yaşayın, çok zengin olmadığınız sürece para o kadar önemli değil, ben daha 22-25 yaşındayım (tam yaşım belli olmasın diye) ve umutsuzum bazı şeyler için, hayatınızı ev veya araba almaya mı harcamak istiyorsunuz, büyük şehirde zar zor yaşamaya mı? Öğrenciyken anlamanız pek mümkün değil kapitalist sistemin içine girip para kazanmaya başlayınca, insanların nasıl davrandıklarını çok daha net anlıyorsunuz, okuyun, gezin, eğlenin, anı yaşayın. Ne çok çalışın, ne de çok tembellik edin, herşeyi dozunda yaşayın. Daha çoook şey yazardım da boşver

Bilgisayar Mühendisleri
Here is the website inspired me to use 
it as a guide when I tried to define 
myself as an engineer candidate a few 
years ago. It really helped me to work
 and study feeling in confidence with 
being on the right way. I suggest this 
website to whom it may direct her/his 
to find the right career path. It 
includes many articles varies from 
real life experiences to detailed 
software engineering issues. But the 
most dignified parts for me are the 
articles in general and career titles.
Son okunan makaleler:
Transact-SQL - T-SQL - SQL NEDİR?
Transact-SQL - T-SQL - SQL NEDİR?
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
Türkiye'de Bilgisayar Mühendisliğinin Durumu? Bilg. Mühendisliğinin bugünü ve geleceği
Yeni mezun bilgisayar mühendisleri için 10 büyük günah!
Kim neyi niye seçer? Java mı c# mı? Oracle vs SqlServer?
Kim neyi niye seçer? Java mı c# mı? Oracle vs SqlServer?
ViewState’in Sunucuda Saklanması
Çok okunan blog yazmanın 10 sırrı
Çok okunan blog yazmanın 10 sırrı
Çok okunan blog yazmanın 10 sırrı
İş bulmak üzerine
Online Java Dersleri - Polimorfizm
Bilgisayar Mühendisleri Kaç Para Alır?
2016 ekonomik krizi
Dünya ile Rekabet Edecek Zehir Gibi Bir Bilgisayar Şirketi Kurmak
Bilgisayar Mühendisleri Kaç Para Alır?
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
Bilgisayar Mühendisleri Kaç Para Alır?
İSTANBULU SEÇİN!

Bilgisayar Mühendisleri Portalı

Transact-SQL - T-SQL - SQL NEDİR?

SQL NEDİR?
SQL, İngilizce adıyla “Structured Query Language” (Yapılandırılmış Sorgulama Dili) bir veri tabanı sorgulama dilidir. SQL ile veri tabanına yeni tablolar, kayıtlar ekleyip silebilir, mevcut veriler üzerinde düzenlemeler ve sorgular yapılabilir. SQL ile ORACLE, db2, Sybase, Informix, MS SQL Server, MS Access gibi veri tabanı yönetim sistemlerinde çalışılabilir. SQL, standart bir veri tabanı sorgu dilidir, bütün gelişmiş veri tabanı uygulamalarında kullanılır.
 
Transact-SQL (T-SQL)
SQL, düzeltilmesi veya değiştirilnesi istenen bilgileri açıkça belirtmeye izin veren ve yerine getirilebilecek başlıca işlemleri tanımlamamızı sağlayan bir komut takımıdır. Bu komutların oluşturduğu yapıya T-SQL dili denir. T-SQL ile veri ve sorgulara erişebilir, güncelleyebilir ve ilişkisel veri tabanı sistemi yönetilebilir. T-SQL komutları kullanım amaçlarına göre üç genel kategoriye ayrılır.
 
SQL Veri İşleme Dili (Data Manipulation Language – DML)
SQL veri işleme dili veri girmek, değiştirmek, silmek ve verileri almak için kullanılan DML komutlarının tümüdür. En sık kullanılan DML komutları ve kullanım amaçları aşağıdaki gibidir:
SELECT:Veri seçmek
DELETE:Veri silmek
UPDATE:Veri güncellemek
INSERT:Veri girmek
 
SQL Veri Tanımlama Dili (Data Definition Language – DDL)
SQL Veri tanımlama dili verilerin tutulduğu nesneler olan tabloların yaratılmasını, silinmesini ve bazı temel özelliklerinin düzenlenmesini sağlar. En sık kullanılan bazı DDL komutları ve kullanım amaçları aşağıdaki gibidir:
CREATE TABLE:Yeni bir tablo yaratmak
ALTER TABLE:Tabloda değişiklik yapmak
DROP TABLE:Tabloyu silmek
CREATE INDEX:Tabloda dizin oluşturmak
 
SQL Veri Kontrol Dili (Data Control Language – DCL)
SQL veri kontrol dili bir veri tabanı kulalnıcısı veya rolü ile ilgili izinlerin düzenlenmesini sağlar. DCL komuları ve fonksiyonları şöyledir:
GRANT:Kullanıcıya yetki verir.
DENY:Kullanıcı, grup veya rolü herhangi bir eylem için eneller.
REVOKE:Daha önce atanmış olan yetki veya engeli kaldırır.
 
 
SELECT İfadesi
Select ifadesi bir tablodan verileri seçmek için kullanılır. Elde edilen veriler sonuç kümesi olarak adlandırılır ve yine bir tablo görüntüsü şeklinde görüntülenir.
 
Sentax (Söz dizimi):
SELECT <sütun adı> FROM <tablo adı>
 
Belirli Sütunların Görüntülenmesi
Çoğu durumda tablomuzda sakladığımız tüm veriyi görmektense, o an için gerekli kısmını görüntülemek isteriz. Dunun için Select ifadesinin ardında, kullanılacak sütun adları belirtilir.
 
Örnek: Northwind veri tabanındaki Employees tablosunda çalışanlar ile ilgili bilgiler saklanır. Bize personelimizin sadece telefon numaraları gerekli olduğunda aşağıdaki alanları görüntülememiz yeterlidir.
 
Sorgu:
USE Northwind
SELECT firstname, lastname, homephone FROM employees
Tüm Sütunları Görüntülemek
Bir tablodaki tüm alanları görüntülemek için ise tek tek bütun sütun adlarını belirtmekten daha kolay bir yol vardır. Select ifadesinden sonra asterix (*) işaretini yazdığımızda SQL bunu “tablodaki tüm sütunlar” olarak yorumlayacaktır.
 
Sorgu:
USE northwind
SELECT * from shippers
WHERE Yancümlesi
WHERE yancümlesi görüntülenmek istenen verilerin belirli bir kritere göre seçilmesini sağlar. Örneğin günlük satış bilgilerinin tutulduğu, yüzbin kayıttan oluşan satışlar tablosundaki sadece son 3 gün içindeki satışların görüntülenmesini sağlar.
WHERE yancümlesinin kullanımı zorunlu değildir. Fakat bir koşula bağlı verileri seçmek istediğimizde FROM yancümlesinden sonra eklenebilir.
 
Sentax:
SELECT <sütun adı> FROM <tablo adı> WHERE <koşul(lar)>
Operatörler(İşleçler)
Aşağıdaki operatörleri WHERE ifadesi ile birlikte sınanmasını istediğiniz koşulları oluştururken kullanabilirsiniz.

Operatör
İfade
=
Eşittir
<> 
Eşit değildir, farklı
Büyük
Küçük
>=
Büyük veya eşit
<=
Küçük veya eşit
BETWEEN
Arasında
LIKE
Metin arama
!=
Bazı SQL sürümlerinde <> ile aynı anlamdadır.

 
Örnek: Northwind veri tabanında Customers tablosundan, Kanada’daki müşterileri görüntülemek istediğimizde Country alanında bir koşul belirtmemiz gerekir.
 
Sorgu:
USE northwind
SELECT CustomerID, CompanyName, Country
FROM customers WHERE Country=’Canada’
 
Örnek: Birim fiyatı 20$’dan büyük olan ürünleri listelemek için Products tablosunda UnitPrice alanı için bir koşul belirtmemiz gerekir.
 
Sorgu:
USE Northwind
SELECT ProductID, ProductName, UnitPrice
FROM products WHERE UnitPrice>20
 
Örnek: 01.01.1998 tarihinden itibaren verilmiş olan siparişleri görüntüleyin.
 
Sorgu:
USE Northwind
SELECT OrderID, CustomerID, OrderData FROM Orders WHERE OrderDate>’1/1/1998’
LIKE İfadesi
LIKE kelimesi sütundaki değerlerin, joker karakter kullanılarak oluşturduğumuz bir arama koşulu ile karşılaştırılmasını sağlar.
 
Sentax:
SELECT <sütun adı> FROM <tablo adı>
WHERE <aranacak sütun> LIKE <kriter>
 

Joker Karakter
Anlamı
% (SQL Server)
Herhangi uzunlukta karakter
* (MS Access)
Herhangi uzunlukta karakter
_
Herhangi tek karakter
? (MS Access)
Herhangi bir karakter
[]
Belirtilen aralıkta herhangi bir karakter
[^]
Belirtilen aralıkta olmayan herhangi bir karakter

 
Örnek: Müşterilerimiz içerisinden ilk harfi K olanları listeleyin.
 
Sorgu:
USE northwind
SELECT * FROM Customers WHERE CustomerID LIKE ‘K%’
 
Örnek Arama Koşulları:
LIKE ‘BR%’İlk iki harfi BR olan tüm kayıtlar
LIKE ‘Br%’İlk iki harfi BR olan tüm kayıtlar
LIKE ‘%een’Son 3 harfi een olan tüm kayıtlar
LIKE ‘%en%’İçinde en ifadesi geçen tüm kayıtlar
LIKE‘_en’Son iki harfi en olan 3 harften oluşan tüm kayıtlar
LIKE‘[CK]%’C veya K harfleriyle başlayan tüm kayıtlar
LIKE‘[S-V]ing’ing ile biten ve ilk harfi S ile V harfleri arasında olan 4 harfli herhangi kelime
LIKE‘M[^c]%’M ile başlayan 2. harfi c olmayan tüm kayıtlar.
 
Örnek: firma adı içinde “restaurant” kelimesi geçen müşteriler
 
Sorgu:
USE northwind
SELECT companyname FROM customers
WHERE companyname LIKE ‘%RESTAURANT%’
 
SQL AND, OR, NOT Mantıksal Operatörleri
AND ve OR mantıksal operatörlerini birden fazla koşulu birleştirmek için kullanırız. AND operatörü kullanılarak, birleştirişen koşulların tümüne uyan satırlar listelenir. OR operatörü kullanılarak, birleştirilen koşullardan en az birine uyan satırlar listelenir. NOT operatörü kendisinden sonra gelen koşulu sağlamayan kayıtları listeler.
 
Parantez kullanımı ikiden fazla koşul olması durumunda koşulların öncelik sırasını belirler. Parantez kullanılmaması durumunda SQL önce NOT, sonra AND ve en sonra da OR mantıksal operatörünü işler.
 
Sentax:
SELECT <sütun adı> FROM <tablo adı> WHERE <koşul> AND <koşul>[AND <koşul>...]
SELECT <sütun adı> FROM <tablo adı> WHERE <koşul> OR <koşul>[OR <koşul>...]
 
Örnek: Personel numarası 5 olan çalışanın 1997 yılından sonra aldığı siparişleri listelemek için kontrol edilmesi gereken iki koşul vardır.
 
Sorgu:
USE northwind
Select EmployeeID, CustomerID, OrderID, OrderDate
FROM Orders WHERE EmployeeID=5 AND OrderDate>’1/1/1997’
 
Örnek: Berlin’deki veya Amerika’daki üreticileri seçelim.
 
Sorgu:
USE northwind
SELECT SupplierID, CompanyName, City, Country FROM suppliers WHERE Country=’USA’ OR city=’Berlin’ ORDER BY city, country
 
Örnek: 1 veya 2 nolu üreticilerin 18$ dan pahalı ürünlerini listelemek istersek.
 
Sorgu:
USE northwind
SELECT ProductName, SupplierID, UnitPrice FROM Products WHERE (SupplierID=1 OR SupplierID=2) AND UnitPrice > 18
 
SQL BETWEEN ... AND
BETWEEN ... AND operatörü 2 değer ile belirtilen aralığı sınar. Bu değerler sayı, metin veya tarih olabilir.
 
Sentax:
SELECT <sütun adı> FROM <tablo adı>
WHERE <sütun adı> BETWEEN <değer 1> AND <değer 2>
 
Örnek: Alfabetik olarak müşteri kodu CACTU ve DUMON arasında yer alan tüm müşterileri görüntülemek için;
 
Sorgu:
USE northwind
SELECT * FROM Customers
WHERE CustomerID BETWEEN ‘CACTU’ AND ‘DUMON’
 
Örnek: Sadece 1996 yılı içerisinde, ilk harfi ‘V’ olan müşterilerin verdiği siparişleri görmek için;
 
Sorgu:
USE Northwind
SELECT OrderID, CustomerID, Freight FROM Orders
WHERE OrderDate BETWEEN ‘01/01/1996’ AND ‘31/12/1996’
AND CustomerID LIKE ‘v%’
 
Bir Listedeki Elemanların Aranması – IN
IN anahtar sözcüğü, bir listedeki elemanlardan herhangi biriyle eşleşen satırları görüntülemek için kullanırız.
NOT IN arama kriterini ise listede olmayan değerleri aramak için kullanırız.
NOT koşul bildirimi diğer arama koşullarına göre biraz daha yavaş çalışır. Performans açısından çok sık kullanılması tavsiye edilmez.
IN ile elde ettiğimiz sonuçları OR kullanarak da elde edebiliriz.
 
Örnek: Japonya ve İtalya’daki üreticileri görmek istediğimizde;
 
Sorgu:
USE Northwind
SELECT companyname, country FROM Suppliers
WHERE counrty IN (‘Japan’, ‘Italy’)
 
Boş Değerlerin Görüntülenmesi – NULL Değerler
Veri girişi sırasında alana herhangi bir değer girilmezse ve alan için herhangi bir varsayılan değer atanmamışsa, alanda boş(null) değer saklanır. NULL değeri boşluk (‘ ‘) veya sıfır (0) değerinden farklıdır. Belirli bir alanına hiçbir değer girilmemiş kayıtları listelemek için IS NULL arama kriteri kullanılır.
Bir tablodaki hangi alanların varsayılan değerleri olacağına veya alanın NULL değere izin verip vermediğine, tablo tasarımı sırasında karar verilir.
Boş olmayan satırları listelemek gerektiğinde IS NOT NULL arama kriteri kullanılır.
 
Örnek: Fax numarası girilmemiş firmaları listele.
 
Sorgu:
USE northwind
SELECT companyname, fax FROM suppliers
WHERE fax IS NULL
 
Örnek: ShipRegion bilgisi girilmemiş olan kayıtlar.
 
Sorgu:
USE Northwind
SELECT OrderID, CustomerID, Freight, ShipRegion
FROM Orders WHERE ShipRegion IS NOT NULL
 
SQL Select Distinct
DISTINCT anahtar sözcüğü bir sütundaki benzersiz kayıtları listeler. Bir sütunda belirli bir kelime iki veya daha fazla sayıda tekrarlanıyor olabilir. Distinct ile her tekrarlanan kelime sadece bir kez listelenir.
 
Sentax:
SELECT DISTINCT <sütun adı>
FROM <tablo adı> [WHERE <koşul>]
 
Örnek: Hangi ülkelerdeki üreticilerle çalıştığımızı görmek için,
 
Sorgu:
USE northwind
SELECT DISTINCT country
FROM suppliers ORDER BY country
 
SQL Order BY
ORDER BY yancümlesi, satırları belirtilen sütun(lar)a göre sıralamak için kullanılır.
ORDER BY ile hangi sütuna göre sıralayacağımızı ve sıralamanın artan veya azalan şekilde yapılacağını belirleri. Sıralama yönü belirtilmez ise SQL veriyi artan şekilde sıralar.
Sıralama yapılacak alanlar SELECT ifadesinde yer almak zotunda değildir.
 
Sentax:
SELECT <sütun ad(lar)ı> FROM <tablo adı>
ORDER BY <sütun adı><sıralama yönü>,
<sütun adı><sıralama yönü>, ...
 
Örnek: Aşağıdaki sorguda Sonuç kümesi CategoryID alanına göre azalan, atnı kategorideki ürünleri ise UnitPrice alanına göre artan şekilde sıralandı.
 
Sorgu:
USE northwind
SELECT productid, productname, categoryid, unitprice
FROM products ORDER BY categoryid DESC, unitprice ASC
 
Matematiksel & Metinsel İfadeler
Tablolardaki alanları kullanarak, matematiksel veya metinsel operatörler yardımıyla oluşturduğumuz ifadeler ile sorguların gücünü arttırabiliriz.
 
Operatör
Görev
+
Toplama
-
Çıkarma
*
Çarpma
/
Bölme
%
Mod
 
Örnek: Aşağıdaki örnekte birim fiyat (UnitPrice) alanı Miktar(Quantity) alanı ile çarpılarak toplam fiyat hesaplanmış ve “TotalCost” adı ile yeni bir alan olarak görüntülenmiştir.
 
Sorgu:
USE Northwind
SELECT OrderID, ProductID, (UnitPrice * Quantity) AS TotalCost
FROM [Order Details] WHERE (UnitPrice * Quantity) > 10000
 
Dikkat edersniz, Order Details isimli tablo çağırılırken köşeli parantezler kullanılmış. SQL’de tablo isimlerinde boşluk karakteri kullanılmışsa, sorgu içerisinde köşeli parantezler içinde çağırılır.
 
SQL Count Fonksiyonları
SQL, veri tabanındaki kayıtları sayabilmek için yerleşik (built-in) COUNT fonksiyonu kullanır.
 
Sentax:
SELECT COUNT (<sütun adı>) FROM <tablo adı>
 
COUNT(*)
COUNT fonksiyonu (*) ile kullanıldığında FROM ile belirtilen tablodaki toplam satır sayısını verir.
 
Örnek: Aşağıdaki örnekte Siparişler (Orders) tablosundaki kayıt sayısı listelenmiştir.
 
Sorgu:
USE northwind
SELECT COUNT(*) AS [Kayıt Sayısı] FROM Orders
 
Örnek: Aşağıda, yaşı 20’den büyük olan çalışanlar listelenir.
 
Sorgu:
USE Northwind
SELECT COUNT (*) AS [Yirmi Yaşından Büyükler]
FROM Employees WHERE getdate() – BirthDate > 20
COUNT(<sütun adı>)
COUNT fonksiyonu bir sütun adı ile birlikte kullanıldığında, o sütundaki boş (NULL) olmayan kayıtların sayısını verir.
 
Örnek: Orders tablosundan ShipRegion alanını saydıralım.
 
Sorgu:
USE Northwind
SELECT COUNT(ShipRegion) FROM Orders
COUNT DISTINCT
DISTINCT anahtar sözcüğü COUNT ile kullanıldığında, belirtilen sütundaki benzersiz kayıtların sayısını verir.
 
Sentax:
SELECT COUNT(DISTINCT <sütun adı>) FROM <tablo adı>
 
Örnek: Siparişlerin kaç farklı müşteriden alındığını öğrenelim.
 
Sorgu:
USE Northwind
SELECT COUNT (DISTINCT CustomerID) FROM Orders
SÜTUNLARIN VE TABLOLARIN YENİDEN ADLANDIRILMASI – AS ANAHTAR SÖZCÜĞÜ
Sonuç kümelerindeki sütun adları varsayılan olarak tablodaki alan adlarıdır. AS yardımcı kelimesini kullanarak sütunları farklı adlarla görüntüleyebiliriz.
Aynı şekilde uzun tablo isimlerini de kullanımı daha kolay olacak şekilde değiştirebiliriz.
 
Sentax:
SELECT <sütun adı> AS <yeni ad> FROM <tablo adı> AS <yeni tablo adı>
SQL TOPLAM FONKSİYONLARI (AGGREGATE FUNCTIONS)
AVG (<sütun adı>) Fonksiyonu
AVG fonksiyonu belirtilen sütundaki ortalama değeri verir. Bu hesaplama sırasında boş (NULL) değerler işleme katılmaz.
 
Örnek: Aşağıda Ürünler (Products) tablosundaki ortalama ürün birim fiyatı (UnitPrice) hesaplanmıştır.
 
Sorgu:
USE Northwind
SELECT AVG(UnitPrice) AS ‘Avarage Price’ FROM Products
MAX(<sütun adı>) Fonksiyonu
MAX fonksiyonu, bir sütundaki en yüksek değeri verir. Boş (NULL) değerler işleme katılmaz. MAX fonksiyonu alfabetik sıralamadaki ilk metinsel ifadeyi de bulmamızı sağlar.
MIN(<sütun adı>) Fonksiyonu
MIN fonksiyonu, bir sütundaki kayıtlardan en küçük olanının değerini verir. Boş (NULL) değerler işe katılmaz. MIN fonksiyonu alfabetik sıralamadaki son metinsel ifadeyi de bulmamızı sağlar.
SUM(<sütun adı>) Fonksiyonu
SUM fonksiyonu, belirtilen sütundaki sayısal değerlerin bir toplamını geri döndürür.
İlk n Kaydın Görüntülenmesi – TOP n
Bazı durumlarda bir tablo veya sorgudaki tüm kayıtları görmek istemeyebiliriz. Bir sonuç kümesindeki ilk n satırı veya tüm kayıtların belirli bir yüzdesini görüntüleyebilmek için TOP n  anahtar sözcüğü kullanılır.
TOP n veya TOP n PERCENT anahtar sözcükleri ORDER BY yan cümlesi ile birlikte kullanılmalıdır. Aksi halde listelenen verilerde WHERE ifadesi ile belirtilen koşula uyan kayıtlar rastgele dizileceğinden, istediğimiz sonucu elde edemeyebiliriz.
WITH TIES
WITH TIES yan cümlesi, ORDER BY ile sıralanan sonuç kümesinde son kayıt ile aynı değerde olan kayıtların da listelenmesini sağlar. Bu durumda sonuç kümemi belirttiğimiz n sayısından daha fazla olabilir.
WITH TIES yan cümlesi, sadece ORDER BY yan cümlesi ile kullanılabilir.
 
Örnek: Aşağıda sipariş detayları tablosundan (order details) en yüksek siparişi verilen 5 ürün listelenmek istenmiştir.
 
Sorgu:
USE Northwind
SELECT TOP 5 orderid, productid, quantity
FROM [order details] ORDER BY quantity DESC
 
Örnek: Yukarıdaki sorguyu WITH TIES ile birlikte çalıştırırsak sonuç kümesinin bu kez 10 satırdan oluştuğunu görürüz. Bu durumda miktarı son kayıttaki değere eşit olan kayıtlar da listelenmiştir. İki örneği de karşılaştırın.
 
Sorgu:
USE Northwind
SELECT TOP 5 WITH TIES orderid, productid, quantity
FROM [order details] ORDER BY quantity DESC
GROUP BY
DISTINCT anahtar sözcüğü sadece benzersiz satırları listelemek için kullanılırken, GROUP BY yan cümlesi belirtilen sütun yada sütunlardaki aynı değere sahip satırları tek bir satırda birleştirmeyi sağlar. GROUP BY genellikle toplam fonksiyonlarıyla (aggregate function) kullanılır. GROUP BY sorgularında kullanılan en yaygın toplama fonksiyonları MIN, MAX, SUM ve COUNT’dır.
GROUP BY ile belirtilen sütunlar SELECT ifadesinde de yer almalıdır.
 
Örnek: Aşağıda Sipariş Detayları(Order Details) tablosu productid alanına göre gruplandırılmış ve her grubun toplam sipariş miktarı hesaplanmıştır.
 
Sorgu:
USE Northwind
SELECT productid, SUM(quantity) AS ‘Total’
FROM [Order Details] GROUP BY productid ORDER BY productid
 
Örnek: Aşağıdaki örnekte sadece ürünkodu 2 olan kayıdın toplam miktarı hesaplanmıştır.
 
Sorgu:
USE Northwind
SELECT productid, SUM(quantity) AS ‘Total’
FROM [Order Details] WHERE productid=2
GROUP BY productid ORDER BY productid
HAVING YAN CÜMLESİ
Toplam fonksiyonlarını kullanırken kısıt getirimesi gerektiğinde WHERE yan cümlesini kullanamayız. HAVING yan cümlesi, GROUP BY ile elde edilecek satırları kısıtlamak için kullanılır. İşlev olarak WHERE yan cümlesi gibi çalışır fakat WHERE yan cümlesi gruplama işlemlerinden önce, HAVING yan cümlesi ise GROUP BY’dan sonra uygulanır.
 
Örnek: Bu sorguda toplam sipariş miktarı 1200 adetten fazla olan ürün kodları listelenmiştir.
 
Sorgu:
USE Northwind
SELECT productid, SUM(quantity) AS total_quantity
FROM [order details]
GROUP BY productid HAVING SUM(quantity) > 1200
 
Örnek: Siparişler (Orders) tablosunu EmployeeID alanına göre gruplandırılmış ve CustomerID alanı her grup için sayılmıştır. Bu şekilde her çalışanın toplam kaç sipariş aldığı görülür. Burada saydırılacak olan CustomerID’den farklı bir alan da olabilirdi.
 
Sorgu:
USE Northwind
SELECT EmployeeID, COUNT(CustomerID) FROM orders
GROUP BY EmployeeID HAVING COUNT(CustomerID)>120
ORDER BY EmployeeID
GROUP BY – ÖZET BİLGİ
GROUP BY ile bir toplama fonksiyonu kullandığımızda her farklı değer için sadece sonuç satırı görüntülenir. Gruplandırdığımız değerlerin detaylarını farklı yan cümleler kullanarak görüntüleyebiliriz.
ROLLUP
Grup değerlerini özetlemek için kullanılır.
 
Örnek:
Sorgu:
USE Northwind
SELECT orderid, productid, SUM(quantity) AS total_quantity
FROM [order details]
WHERE orderid < 10250 GROUP BY orderid, productid
WITH ROLLUP ORDER BY orderid, productid
CUBE
GROUP BY ile belirtilen sütunların tüm olası eşleşmelerini özetler.
 
Örnek: Aşağıdaki örnekte sipariş kodu 10250’den küçük olan kayıtların ve ürünlerin detaylı toplamları listelenmiştir.
 
Sorgu:
SELECT orderid, productid, SUM(quantity) AS total_quantity
FROM [order details] WHERE OrderID < 12500
GROUP BY OrderID, productid
WITH CUBE ORDER BY OrderID, productid
GROUPING FONKSİYONU
ROLLUP ve CUBE ile elde edilen sonuç kümesini görsel olarak daha kolay yorumlanabilmesini sağlar. GROUPING ile belirtilen her sütun için yeni bir sütun oluşturulur. Bu sütunlarda özet bilgiler için 1, detay bilgiler için 0 değeri görüntülenir.
 
Örnek: Yukarıdaki alıştırmalardan farklı olarak fazladan eklenmiş sütunlara dikkat edin. OrderID alanı NULL olarak görülen kayıtlar tüm siparişlerdeki ürünlerin toplamlarını göstermektedir.
 
Sorgu:
USE Northwind
SELECT orderid, GROUPING(orderid), productid, GROUPING(productid), SUM(quantity) AS total_quantity
FROM [order details] WHERE orderid < 10250 GROUP BY orderid, productid WITH CUBE ORDER BY orderid, productid
COMPUTE ve COMPUTE BY
COMPUTE ifadesi tüm sonuç kümesini listeler ve bu listenin altında tek bir detay satırı görüntülenir. COMPUTE ile kullandığınız sütun SELECT listesinde de yer almalıdır.
COMPUTE BY kullanarak daha detaylı gruplandırma da yapılabilir.
 
Örnek: Aşağıdaki sorgu Sipariş detayları (Order Details) tablosundaki tüm satırları listeler ve kayıt kümesinin sonuna tüm ürünlerin genel toplamını verir.
 
Sorgu:
USE Northwind
SELECT productid, orderid, quantity FROM [Order Details]
ORDER BY productid, orderid COMPUTE SUM(quantity)
 
Örnek: Aşağıdaki sorgu Sipariş Detayları tablosundaki tüm satırları listeleyecek ve her sipariş altına sipariş genel toplamını verecektir. Son olarak ise tüm siparişlerdeki genel toplam görüntülenecektir.
 
Sorgu:
USE Northwind
SELECT productid, orderid, quantity FROM [order details]
WHERE orderid < 10250 ORDER BY orderid, productid
COMPUTE SUM(quantity) BY orderid COMPUTE SUM(quantity)
SQL JOIN
Şimdiye kadar aynı anda sadece tek bir tablodan veriler ile çalışıldı. Bazı durumlarda sonuç kümemizin daha anlamlı olabilmesi için iki farklı tablodan verilere ihtiyacımız olabilir. Bunun için sorgumuzda iki anahtar kelime daha kullanırız;
JOIN ifadesi ile hangi tabloları ve nasıl birleştireceğimizi
ON ifadesi ile tabloların hangi alanlar üzerinden birleşeceğini belirtiriz.
 
Tablolar genelde Primary Key(birincil anahtar) ve Foreign Key(yabancı anahtar) alanları üzerinden birleştirilseler de, gerektiğinde diğer herhangi bir alan da bunun için kullanılabilir. Fakat bu alanların aynı tür veri içerdiğinden emin olmalısınız.
 
Primary key, her kayıt için benzersiz bir değer taşıyan alandır. Örneğin, öğrenci kayıtlarının tutulduğu bir tabloda, öğrenci numarasının saklandığı alan birincil anahtar olarak seçilebilir. Öğrenci ile ilgili tüm bilgiler gerçekte öğrenci numarası ile kodlanmıştır ve her öğrencinin numarası birbirinden farklıdır.
INNER JOIN
SQL’de varsayılan (default) bağlantı türüdür. İlişkili tablolarda sadece JOIN koşulunu sağlayan kayıtlar listelenir.
 
Örnek:
Sorgu:
USE Northwind
SELECT productname, companyname
FROM products INNER JOIN suppliers
ON products.supplierid = suppliers.supplierid
 
Örnek: Aşağıdaki örnekte 01.01.1998 tarihinden sonra sipariş vermiş olan müşterilerin isimleri listelenmiştir. Bu iki bilgi farklı tablolarda olduğundan iki tablo arasında, her iki tabloda da olan CustomerID alanı üzerinden bir bağlantı sağlanmıştır.
 
Sorgu:
USE Northwind
SELECT DISTINCT companyname, orderdate FROM orders
INNER JOIN customers
ON orders.customerid = customers.customerid
WHERE orderdate > ‘1/1/98’
OUTER JOIN
LEFT veya RIGHT OUTER JOIN ifadeleri ilişkili alanda birbiriyle eşleşenlerin yanında eşleşmeyen kayıtları da listeler. JOIN koşuluna uymayan satırlar NULL(boş) değer olarak görüntülenirler.
LEFT JOIN
LEFT OUTER JOIN ile yazımdaki ilk tablonun tüm satırları listelenir ve diğer tablo ile eşleşmeyen alanlar NULL(boş) değer ile gösterilir. Eğer tabloların sorgudaki sırası değişirse aynı sonucu elde edebilmek için RIGHT OUTER JOIN kullanılır.
 
Sentax:
SELECT <sütun ad(lar)ı>
FROM <ilk tablo> LEFT JOIN <ikinci tablo>
ON <ilk tablo>.<anahtar alan> = <ikinci tablo>.<anahtar alan>
 
Örnek: Aşağıdaki sorgunun SELECT kısmında iki sütn tek bir sütın adı altında birleştirilmiştir. Çalıştırıldığında çalışanın tam adı ve müşterilerden aldığı siparişler ve tarihleri listelenecektir.
 
Sorgu:
USE Northwind
SELECT Employees.FirstName + ‘ ’ + Employees.LastName
AS Name, OrderID, OrderDate
FROM Employees LEFT JOIN Orders
ON Employees.EmployeeID = Orders.EmployeeID
RIGHT JOIN
İkinci tablodaki tüm kayıtları listelemek istendiğinde RIGHT JOIN kullanılır. Bu durumda ise birinci tablodaki eşleşmeyen kayıtlar NULL olarak görüntülenir. Eğer tabloların yazım önceliğini değiştirirseniz, sorgu LEFT OUTER JOIN ile aynı sonucu verecektir.
 
Sentax:
SELECT <sütun ad(lar)ı> FROM <ilk tablo>
RIGHT JOIN <ikinci tablo> ON
<birinci tablo>.<anahtar alan> = <ikinci tablo>.<anahtar alan>
 
Örnek: Aşağıdaki örnekte tüm müşteriler ve verdikleri siparişlerin tarihleri listelenmiştir. Hiç siparişi olmayan müşterilerin tarih alanı NULL olarak görüntülendiğine dikkat edin.
 
Sorgu:
USE Northwind
SELECT companyname, customers.customerid, orderdate
FROM customers LEFT OUTER JOIN orders
ON customers.customerid = orders.customerid
CROSS JOIN
İlişkili tablolar arasında olası tüm eşleşmeleri listeler. Belirli ortak bir alan belirtilmesine gerek yoktur.
 
Örnek: Aşağıdaki örnek üreticilerin çalışabilecekleri tüm olası gemi şirketlerini görmemizi sağlar. Shippers tablosu 3 kayıt ve Suppliers tablosunda 29 kayıt olduğundan, sonuç kümesinde 87 satır görüntülenecektir.
 
Sorgu:
USE Northwind
SELECT suppliers.companyname, shippers.companyname
FROM suppliers CROSS JOIN shippers
İkiden Fazla Tablonun Birleştirilmesi
Gerektiğinde ikiden fazla tabloyu birleştirmek de mümkündür. Bir JOIN işlemiyle birleştirilen tablolar bir başka tabloya aralarındaki ortak bir sütun üzerinden bağlanabilir.
 
Örnek: Aşağıdaki örnekte Order Details tablosunu ara tablo şeklinde kullanarak, Orders ve Products tablosundan gerekli bilgiler görüntülenmiştir. Bir sipariş birden fazla ürünü içerebilir ve bir ürün birden fazla siparişte yer alabilir. Sonuç kümemizde Order Details tablosundan hiçbir alan görüntülemesekte sorguda kullanmalıyız.
 
Sorgu:
SELECT orderdate, productname FROM orders AS O
INNER JOIN [order details] AS OD ON O.orderid = OD.orderid
INNER JOIN products AS P ON OD.productid = P.productid
WHERE orderdate = ‘7/8/96’ ORDER BY productname
SELF-JOINS
Bir tablodaki aynı değerleri içeren farklı satırları listelemek istendiğinde o tablo kendisi ile birleştirilir.
 
Örnek: Aşağıdaki örnek job title aynı olan çalışanları listeler. WHERE ifadesi ile belirtilen koşul kendisiyle eşleşen kayıtların görüntülenmesini engeller.
 
Sorgu:
SELECT a.employeeid, LEFT(a.lastname, 10) AS NAME,
LEFT(a.title, 10) AS Title, b.employeeid,
LEFT(b.lastname, 10) AS NAME, LEFT(b.title, 10) AS Title
FROM Employees AS a INNER JOIN employees AS b
ON a.title = b.title WHERE a.employeeid < b.employeeid
ORDER BY a.employeeid
UNION
UNION fonksiyonu, iki veya daha fazla SELECT sorgusunun sonuçlarını tekbir sonuç kümesinde birleştirir. Görüntülenecek olan tablolar aynı veri türünde aynı sayıda ve aynı düzendeki sütunlardan oluşmalıdır.
 
Örnek: Aşağıdaki örnekte Customers tablosu ve Employees tablosu verileri birleştirilmiştir. Birinci sorgunun SELECT ifadesindeki takma adın görüntülendiğine dikkat ediniz.
 
Sorgu:
SELECT (firstname + ‘ ’ + lastname) AS Name, city, postalcode
FROM employees
UNION
SELECT companyname, city, postalcode FROM customers
ALT SORGULAR (SUBQUERIES)
Bir alt sorgu, başka bir SELECT, INSERT, UPDATE veya DELETE ifadesi içine yuvalanmış bir SELECT ifadesidir. Çoğu kez alt sorgular, JOIN ifadelerine dönüştürülebilir. Alt sorgular, karmaşık sorguları biraz daha anlaşılabilir mantıksak bölümlere ayıtmak için veya bir başka sorgunun sonuç kümesine dayalı bir sorguyu çalıştırmak için kullanılır. JOIN bağlantıları alt sorgulardan daha hızlı işlenirler.
Sonuç Kümesinin Tablo Olarak Kullanımı
Bir sorgunun FROM ifadesinde kullanılan tablonun yerine bir başka sorguyu kullanabilirsiniz. Sonuç kümesine herhangi bir tabloya yapabildiğimiz gibi bir geçici takma ad verilebilir.
 
Örnek: İç sorgu ile üretilen sonuç kümesi dış sorguda kullanılmıştır.
 
Sorgu:
SELECT T.orderid, T.customerid
FROM (SELECT orderid, customerid FROM orders) AS T
Sonuç Kümesinin Bir Deyim Olarak Kullanılması
T-SQL de bir sorgu herhangi bir deyimin yerine kullanılabilir. Bu amaç için kullanılacak bir sorgu tek bir sayısal değer veya tek bir sütun değer listesi döndürmelidir. Bir değerler listesi geri döndüren sorgular IN anahtar sözcüğü içeren WHERE yan cümlesi yerine kullanılabilir.
 
Örnek: Aşağıdaki sorgu çok satan bir bilgisayar kitabının fiyatını, bütün kitapların ortalama fiyatlarını ve bilgisayar kitabı ile ortalama fiyat arasındaki farkı geri döndürür.
 
Sorgu:
USE pubs
SELECT title, price,
(SELECT AVG(price) FROM titles) AS Average,
price-(SELECT AVG(price) FROM titles) AS Difference
FROM titles WHERE type=’popular_comp’
İlişkili Alt Sorgu
İç sorgu ile dış sorgu bir alan üzerinden doğrudan ilişkilidir.
 
Örnek: Aşağıdaki örnekte 23 nolu üründen 20’den fazla sipariş veren müşterileri listeler.
 
Sorgu:
USE northwind
SELECT orderid, customerid FROM orders AS or1
WHERE 20 < (SELECT quantity FROM [order details] AS od
WHERE or1.orderid = od.orderid AND od.productid = 23)
 
Örnek: Aşağıdaki sorgu ürünlerin bir listesini ve ürünün o ana kadarki verilmiş en yüksek sipariş miktasını gösterir.
 
Sorgu:
USE Northwind
SELECT DISTINCT productid, quantity
FROM [order details] AS ord1
WHERE quantity = (SELECT MAX(quantity) FROM [order details]
AS ord2 WHERE ord1.productid = ord2.productid)
ALT SORGU – JOIN DÖNÜŞÜMÜ
İlişkili alt sorguları bir JOIN ifadesi yerine kullanabiliriz.
 
Örnek: Aşağıdaki iki farklı sorgu aynı sonucu üretir. Birincisi alt sorgu, ikincisi ise JOIN kullanır.
 
Sorgu 1:
USE pubs
SELECT DISTINCT t1.type FROM titles AS t1
WHERE t1.type IN (SELECT t2.type FROM titles AS t2
WHERE t1.pub_id<>t2.pub_id)
 
Sorgu 2:
USE pubs
SELECT DISTINCT t1.type FROM titles AS t1 INNER JOIN titles
AS t2 ON t1.type = t2.type WHERE t1.pub_id<>t2.pub_id
 
ALT SORGU – HAVING DÖNÜŞÜMÜ
İlişkili bir alt sorgunun ürettiği sonuç kümesini HAVING yan cümlesi ile de elde edilebilir.
 
Örnek: Aşağıdaki iki örnekte kendi türünün ortalama fiyatından daha pahalı olan ürünleri listeler.
 
Sorgu 1:
USE pubs
SELECT t1.type, t1.title, t1.price FROM titles AS t1
WHERE t1.price > (SELECT AVG(t2.price) FROM titles AS t2
WHERE t1.type = t2.type)
 
Sorgu 2:
USE pubs
SELECT t1.type, t1.title, t1.price FROM titles AS t1
INNER JOIN titles AS t2 ON t1.type = t2.type
GROUP BY t1.type, t1.title, t1.price
HAVING t1.price > AVG(t2.price)
 
 
Bu makaleyi beğendin mi? Yorumunu Yaz!







Sizden Gelen Yorumlar:

Yorum Yazın

BEYZADE BOZTEPE(14.3.2017 12:33:06)
YORUM
%11 %0 %89
Katılıyorum Çekimserim Katılmıyorum



Hasan(27.8.2016 02:29:57)
SQL kısa ve öz ancak bu kadar iyi anlatılabilirdi.
Emeğine sağlık teşekkütler..
%67 %0 %33
Katılıyorum Çekimserim Katılmıyorum



eyup(4.2.2016 01:02:04)
Elinize emeğinize sağlık teşekkürler
%58 %0 %42
Katılıyorum Çekimserim Katılmıyorum



orhan(2.9.2015 11:39:45)
teşekkürler.
%27 %0 %73
Katılıyorum Çekimserim Katılmıyorum



Ş.AKGÜN(4.6.2015 13:29:39)
Teşekkürler, çok mükemmel bir çalışma olmuş. Konular çok ayrıntılı ve örneklerle desteklenmiş olup ve sadece özetlenmiş olması hoşuma gitti. Herkese tavsiye ediyorum.

Emeyinize sağlık. Başarılarınızın devamını dilerim.
%40 %0 %60
Katılıyorum Çekimserim Katılmıyorum



zeynep(13.4.2015 14:39:19)
süperrrrr
%50 %7 %43
Katılıyorum Çekimserim Katılmıyorum



HASAN(18.1.2015 10:29:22)
Hocam çok güzel anlatıyorsunuz,dediğinize göre de sitenizin ziyaretçi sayısı da fazla bence siz SQL hakkında veya diğer programlama dilleri hakkında eğitici videolar yapsanız çok güzel olur bence ama tabi size kalmış.Başarılarınızın devamıyla
%40 %20 %40
Katılıyorum Çekimserim Katılmıyorum



Tamer(3.12.2014 15:41:01)
Tebrikler uzun zmandır böle bişey bekliyorum iyi bir öze olmuş net şeyler yazılmış... ;)
%48 %0 %52
Katılıyorum Çekimserim Katılmıyorum



Gökhan(31.8.2014 15:04:37)
Mükemmel bir makale;konu çok kapsamlı ve örneklerle birlikte anlatılmış;teşekkürler....
%33 %19 %48
Katılıyorum Çekimserim Katılmıyorum



volkan(14.11.2013 10:32:41)
SQL ile ilgili o kadar makale örnek v.s. okudum.
Bu kadar düzenli ve özenli bir yazı yörmedim.
Elinize sağlık. Mükemmel bir yazı olmuş.

Bir arkadaşım copy-paste makale yapmayın demiş:
Ben nerden kopylandığını da bulamadım. İyiki kopyalamışsınız. Zira kopyaladığınız site arama motorlarında denk gelmiyor.
%56 %15 %30
Katılıyorum Çekimserim Katılmıyorum





Yazılan yorumlar tek sayfaya sığmadı. Daha fazlasını okumak için aşağıda sayfa numarasına tıklayın:
1   > 2   > 3 

Copyright© 2001-2018. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.