Veritabanından veri almak istediğinizde, Yapılandırılmış Sorgu Dili veya SQL kullanarak verileri istersiniz. SQL, İngilizceye çok benzeyen ancak veritabanı programlarının anladığı bir bilgisayar dilidir. Çalıştırdığınız her sorgu arka planda SQL kullanır.
SQL'in nasıl çalıştığını anlamak daha iyi sorgular oluşturmanıza yardımcı olabilir ve istediğiniz sonuçları döndürmeyen bir sorguyu nasıl düzelteceğinizi anlamanıza yardımcı olabilir.
Bu, Access SQL ile ilgili bir dizi makaleden biridir. Bu makalede verileri seçmek için SQL'in temel kullanımı açıklanır ve SQL söz dizimini göstermek için örnekler kullanılır.
Bu makalenin başlıkları
SQL nedir?
SQL, olgu kümeleriyle ve aralarındaki ilişkilerle çalışmaya yönelik bir bilgisayar dilidir. Microsoft Office Access gibi ilişkisel veritabanı programları, verilerle çalışmak için SQL kullanır. Birçok bilgisayar dilinden farklı olarak, acemi biri için bile SQL'i okumak ve anlamak zor değildir. Birçok bilgisayar dili gibi SQL de ISO ve ANSI gibi standart kuruluşları tarafından tanınan uluslararası bir standarttır.
SORULARı yanıtlamanıza yardımcı olabilecek veri kümelerini açıklamak için SQL kullanırsınız. SQL kullanırken doğru söz dizimini kullanmanız gerekir. Söz dizimi, bir dilin öğelerinin doğru bir şekilde birleştirildiği kurallar kümesidir. SQL söz dizimi İngilizce söz dizimini temel alır ve Visual Basic for Applications (VBA) söz dizimi ile aynı öğelerin çoğunu kullanır.
Örneğin, adı Mary olan kişilerin soyadlarının listesini alan basit bir SQL deyimi şuna benzer olabilir:
SELECT Last_Name
FROM Contacts WHERE First_Name = 'Mary';
Not: SQL yalnızca verileri işlemek için değil, tablolar gibi veritabanı nesnelerinin tasarımını oluşturmak ve değiştirmek için de kullanılır. Veritabanı nesnelerini oluşturmak ve değiştirmek için kullanılan SQL bölümüne veri tanımı dili (DDL) adı verilir. Bu konu DDL'i kapsamaz. Daha fazla bilgi için veri tanımı sorgusu kullanarak tablo veya dizin oluşturma veya değiştirme makalesine bakın.
SELECT deyimleri
SQL kullanarak bir veri kümesini açıklamak için bir SELECT deyimi yazarsınız. SELECT deyimi, veritabanından almak istediğiniz bir veri kümesinin tam açıklamasını içerir. Bunlar aşağıda belirtilmiştir:
-
Hangi tabloların verileri içerdiği.
-
Farklı kaynaklardan gelen verilerin nasıl ilişkili olduğu.
-
Verileri üretecek alanlar veya hesaplamalar.
-
Verilerin dahil edilmesi için eşleşmesi gereken ölçütler.
-
Sonuçların sıralanıp sıralanmadığı ve nasıl sıralanacağını.
SQL yan tümceleri
Tümce gibi SQL deyiminin de yan tümceleri vardır. Her yan tümce SQL deyimi için bir işlev gerçekleştirir. Select deyiminde bazı yan tümceler gereklidir. Aşağıdaki tabloda en yaygın SQL yan tümceleri listelemektedir.
SQL yan tümcesi |
Yaptığı işlem |
Gerekli |
SELECT |
İlgi çekici verileri içeren alanları Listeler. |
Evet |
FROM |
SELECT yan tümcesinde listelenen alanları içeren tabloları Listeler. |
Evet |
WHERE |
Sonuçlara dahil edilecek her kayıt tarafından karşılanması gereken alan ölçütlerini belirtir. |
Hayır |
ORDER BY |
Sonuçların nasıl sıralanacağını belirtir. |
Hayır |
GROUP BY |
Toplama işlevleri içeren bir SQL deyiminde, SELECT yan tümcesinde özetlenmeyen alanları listeler. |
Yalnızca bu tür alanlar varsa |
HAVING |
Toplama işlevleri içeren bir SQL deyiminde, SELECT deyiminde özetlenen alanlara uygulanan koşulları belirtir. |
Hayır |
SQL terimleri
Her SQL yan tümcesi terimlerden oluşur; konuşma bölümleriyle karşılaştırılabilir. Aşağıdaki tabloda SQL terimlerinin türleri listelenmiştir.
SQL terimi |
Konuşmanın benzer bir parçası |
Tanım |
Örnek |
Tanımlayıcı |
Isim |
Alan adı gibi bir veritabanı nesnesini tanımlamak için kullandığınız ad. |
Müşteri. [Telefon Numarası] |
işleç |
fiil veya saldırgan |
Bir eylemi temsil eden veya eylemi değiştiren anahtar sözcük. |
AS |
sabit |
Isim |
Sayı veya NULL gibi değişmeyen bir değer. |
42 |
ifade |
Sıfat |
Tanımlayıcıların, işleçlerin, sabitlerin ve işlevlerin tek bir değer olarak değerlendirilen birleşimi. |
>= Ürünler. [Birim Fiyat] |
Temel SQL yan tümceleri: SELECT, FROM ve WHERE
SQL deyimi genel biçimi alır:
SELECT field_1
FROM table_1 WHERE criterion_1 ;
Notlar:
-
Access bir SQL deyimindeki satır sonlarını yoksayar. Ancak, SQL deyimlerinizin kendiniz ve diğerleri için okunabilirliğini geliştirmeye yardımcı olmak için her yan tümce için bir satır kullanmayı göz önünde bulundurun.
-
Her SELECT deyimi noktalı virgülle (;)) biter. Noktalı virgül, son yan tümcenin sonunda veya SQL deyiminin sonunda tek başına bir satırda görünebilir.
Access'teki bir örnek
Aşağıda, Access'te basit bir seçme sorgusunun SQL deyiminin nasıl görünebileceği gösterilmektedir:
1. SELECT yan tümcesi
2. FROM yan tümcesi
3. WHERE yan tümcesi
Bu örnek SQL deyimi "Kişiler adlı tablodan E-posta Adresi ve Şirket adlı alanlarda depolanan verileri, özellikle de City alanının değerinin Seattle olduğu kayıtları seçin" sözlerini okur.
SQL söz diziminin nasıl çalıştığını görmek için bir kerede bir yan tümcesi olan örneğe bakalım.
SELECT yan tümcesi
SELECT [E-mail Address], Company
Bu SELECT yan tümcesidir. Bir işleç (SELECT) ve ardından iki tanımlayıcı ([E-posta Adresi] ve Şirket) oluşur.
Tanımlayıcı boşluk veya özel karakterler içeriyorsa ("E-posta Adresi" gibi), köşeli ayraç içine alınmalıdır.
SELECT yan tümcesinin hangi tabloların alanları içerdiğini belirtmesi gerekmez ve dahil edilecek veriler tarafından karşılanması gereken koşulları belirtemez.
SELECT yan tümcesi her zaman BIR SELECT deyiminde FROM yan tümcesinin önünde görünür.
FROM yan tümcesi
FROM Contacts
Bu FROM yan tümcesidir. Bir işleçten (FROM) ve ardından bir tanımlayıcıdan (Kişiler) oluşur.
FROM yan tümcesi, seçilecek alanları listelemez.
WHERE yan tümcesi
WHERE City="Seattle"
Bu WHERE yan tümcesidir. Bir işleç (WHERE) ve ardından bir ifade (City="Seattle") oluşur.
Not: SELECT ve FROM yan tümcelerinden farklı olarak WHERE yan tümcesi, SELECT deyiminin gerekli bir öğesi değildir.
SQL'in SELECT, FROM ve WHERE yan tümcelerini kullanarak yapmanızı sağladığı eylemlerin çoğunu gerçekleştirebilirsiniz. Bu yan tümceleri nasıl kullandığınız hakkında daha fazla bilgi şu ek makalelerde sunulmuştur:
Sonuçları sıralama: ORDER BY
Microsoft Excel gibi Access de sorgu sonuçlarını veri sayfasında sıralamanıza olanak tanır. Sorguda, bir ORDER BY yan tümcesi kullanarak sorgu çalıştırıldığında sonuçları nasıl sıralamak istediğinizi de belirtebilirsiniz. ORDER BY yan tümcesi kullanırsanız, SQL deyimindeki son yan tümcedir.
ORDER BY yan tümcesi, sıralama işlemleri için kullanmak istediğiniz alanların listesini, sıralama işlemlerini uygulamak istediğiniz sırayla içerir.
Örneğin, sonuçlarınızın önce Şirket alanının değerine göre azalan düzende sıralanmasını ve (Şirket için aynı değere sahip kayıtlar varsa) E-posta Adresi alanındaki değerlerin yanında artan düzende sıralanmasını istediğinizi varsayalım. ORDER BY yan tümceniz aşağıdakine benzer olacaktır:
ORDER BY Company DESC, [E-mail Address]
Not: Varsayılan olarak, Access değerleri artan düzende (A-Z, en küçükten en büyüğe) sıralar. Bunun yerine değerleri azalan düzende sıralamak için DESC anahtar sözcüğünü kullanın.
ORDER BY yan tümcesi hakkında daha fazla bilgi için ORDER BY Yan Tümcesi konusuna bakın.
Özetlenmiş verilerle çalışma: GROUP BY ve HAVING
Bazen bir aydaki toplam satışlar veya bir envanterdeki en pahalı öğeler gibi özetlenmiş verilerle çalışmak isteyebilirsiniz. Bunu yapmak için SELECT yan tümcenizdeki bir alana toplama işlevi uygularsınız. Örneğin, sorgunuzun her şirket için listelenen e-posta adreslerinin sayısını göstermesini istiyorsanız, SELECT yan tümceniz aşağıdakine benzer olabilir:
SELECT COUNT([E-mail Address]), Company
Kullanabileceğiniz toplama işlevleri, kullanmak istediğiniz alanda veya ifadede bulunan verilerin türüne bağlıdır. Kullanılabilir toplama işlevleri hakkında daha fazla bilgi için SQL Toplama İşlevleri makalesine bakın.
Toplama işlevinde kullanılmayan alanları belirtme: GROUP BY yan tümcesi
Toplama işlevlerini kullandığınızda, genellikle bir GROUP BY yan tümcesi de oluşturmanız gerekir. GROUP BY yan tümcesi, toplama işlevi uygulamadığınız tüm alanları listeler. Bir sorgudaki tüm alanlara toplama işlevleri uygularsanız GROUP BY yan tümcesini oluşturmanız gerekmez.
GROUP BY yan tümcesi WHERE yan tümcesini veya WHERE yan tümcesi yoksa FROM yan tümcesini hemen izler. GROUP BY yan tümcesi, alanları SELECT yan tümcesinde göründükleri şekilde listeler.
Örneğin, önceki örneğe devam edersek, SELECT yan tümceniz [E-posta Adresi] için bir toplama işlevi uygular ancak Company'ye uygulamazsa GROUP BY yan tümceniz aşağıdakine benzer olacaktır:
GROUP BY Company
GROUP BY yan tümcesi hakkında daha fazla bilgi için GROUP BY Yan Tümcesi konusuna bakın.
Grup ölçütlerini kullanarak toplama değerlerini sınırlama: HAVING yan tümcesi
Sonuçlarınızı sınırlamak için ölçüt kullanmak istiyorsanız ancak ölçüt uygulamak istediğiniz alan bir toplama işlevinde kullanılıyorsa WHERE yan tümcesini kullanamazsınız. Bunun yerine HAVING yan tümcesi kullanırsınız. HAVING yan tümcesi WHERE yan tümcesi gibi çalışır, ancak toplanan veriler için kullanılır.
Örneğin, SELECT yan tümcenizdeki ilk alanla AVG işlevini (ortalama değeri hesaplayan) kullandığınızı varsayalım:
SELECT COUNT([E-mail Address]), Company
Sorgunun sonuçları count işlevinin değerine göre kısıtlamasını istiyorsanız WHERE yan tümcesinde bu alan için ölçüt kullanamazsınız. Bunun yerine, ölçütleri HAVING yan tümcesine koyarsınız. Örneğin, sorgunun yalnızca şirketle ilişkilendirilmiş birden fazla e-posta adresi varsa satırları döndürmesini istiyorsanız HAVING yan tümcesi aşağıdakine benzer olabilir:
HAVING COUNT([E-mail Address])>1
Not: Sorgunun WHERE yan tümcesi ve HAVING yan tümcesi olabilir. Toplama işlevinde kullanılmayan alanların ölçütleri WHERE yan tümcesine, toplama işlevleriyle kullanılan alanların ölçütleri ISE HAVING yan tümcesine gider.
HAVING yan tümcesi hakkında daha fazla bilgi için HAVING Yan Tümcesi konusuna bakın.
Sorgu sonuçlarını birleştirme: UNION
Birkaç benzer seçme sorgusu tarafından döndürülen tüm verileri birleştirilmiş bir küme olarak birlikte gözden geçirmek istediğinizde UNION işlecini kullanırsınız.
UNION işleci, iki SELECT deyimini tek bir deyimde birleştirmenizi sağlar. Birleştirdiğiniz SELECT deyimleri, aynı sırada ve aynı veya uyumlu veri türleriyle aynı sayıda çıkış alanına sahip olmalıdır. Sorguyu çalıştırdığınızda, her bir karşılık gelen alan kümesindeki veriler tek bir çıkış alanında birleştirilir, böylece sorgu çıktısı, seçme deyimlerinin her biriyle aynı sayıda alana sahiptir.
Not: Birleşim sorgusunun amaçları doğrultusunda Sayı ve Metin veri türleri uyumludur.
UNION işlecini kullandığınızda, ALL anahtar sözcüğünü kullanarak sorgu sonuçlarının varsa yinelenen satırlar içerip içermeyeceğini de belirtebilirsiniz.
İki SELECT deyimini birleştiren birleşim sorgusu için temel SQL söz dizimi aşağıdaki gibidir:
SELECT field_1
FROM table_1 UNION [ALL] SELECT field_a FROM table_a ;
Örneğin, Products adlı bir tablonuz ve Services adlı başka bir tablonuz olduğunu varsayalım. Her iki tablo da ürün veya hizmetin adını, fiyat, garanti veya garanti kullanılabilirliğini ve ürünü veya hizmeti özel olarak sunup sunmamanızı içeren alanlara sahiptir. Ürünler tablosu garanti bilgilerini depolasa ve Hizmetler tablosu garanti bilgilerini depolasa da, temel bilgiler aynıdır (belirli bir ürün veya hizmet kalite garantisi içerse de). İki tablodaki dört alanı birleştirmek için aşağıdaki gibi bir birleşim sorgusu kullanabilirsiniz:
SELECT name, price, warranty_available, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee_available, exclusive_offer FROM Services ;
UNION işlecini kullanarak SELECT deyimlerini birleştirme hakkında daha fazla bilgi için bkz. Birleşim sorgusu kullanarak birkaç seçme sorgusunun sonuçlarını birleştirme.