Bloğa geri dön

MySQL Sorgularına Genel Bir Bakış

MySQL Sorgularına Genel Bir Bakış

Doğru veri yönetimi olmadan iş dünyasında sürdürülebilirlik zordur. İyi tanımlanmış bir sistem kurmak, iç ve dış operasyonları yönetmek için gereklidir. İş verilerine ilişkin ayrıntılı içgörü, genel iş akışını anlamaya ve performansı ölçmeye yardımcı olur. Dahası, veritabanı kullanmak zaman kazandırır ve bilgilere zahmetsizce erişmeyi sağlar.

Veritabanı nedir?

Bir veritabanı, bilgileri güvenli bir şekilde depolamak için kullanılan düzenli bir sistemdir. Kategorizasyon sunar ve benzer türdeki öğeleri tek bir grup altında sıralamak için tablolar oluşturulmasına olanak tanır. Tablolar, bilgileri birden fazla satır ve sütunda listeleme seçenekleri sunar. Sonuç olarak, verilerin kalitesi ve tutarlılığı artar. Depolama ve kolay erişim özelliklerinin yanı sıra veritabanları, gizliliğin korunmasında ve sistemlerin güvenliğinin sağlanmasında önemli bir rol oynar. İster geçici ister bir uygulamaya kodlanmış bir sürecin parçası olsun, verileri geri çağırmak veritabanı yönetiminin en kritik yönlerinden biridir.

Bir sorgu, ilişkisel DMS'de bir tablodan veri çekmek için kullanılan herhangi bir komuttur. SELECT ifadeleri neredeyse her zaman Yapılandırılmış Sorgu Dili (SQL) sorgularında kullanılır. Bir veritabanından bilgi çekmek için birkaç yöntem vardır. Genellikle geliştiriciler, hızlı ve etkili olduğu için komut satırı seçeneğini tercih ederler. Sorguların sorunsuz bir şekilde gönderilmesini sağlar.

Bu kılavuzda, sizi MySQL ile tanıştıracağız ve MySQL'de sorgularla nasıl çalışılacağını tartışacağız. Başlayalım!

Gereksinimler

Bu eğitimi takip etmek için aşağıdakilere ihtiyacınız olacak:

Adım 1 — Bir Veritabanı Oluşturma ve Kurma

Başlamadan ve ilk SQL sorgumuzu yazmadan önce, bir veritabanı oluşturmamız ve buna tablolar eklememiz gerekir. Ardından, örnek verileri kullanarak tabloları dolduracağız. Veritabanlarıyla çalışmak, temel kurulumu anlamanıza yardımcı olacak ve sorgularla çalışma konusunda güven aşılayacaktır.

Pratik deneyim, kavramları oluşturmanın ve veritabanlarının önemini anlamanın en etkili yoludur. Bu kılavuzda, gerçek dünya sorunlarını çözmek için veritabanlarının kullanımını ve önemini size aktaracağız. Veritabanlarının kayıtları yapılandırılmış bir şekilde düzenlemeye nasıl yardımcı olabileceğini anlamak için bir senaryoyu inceleyelim.

Senaryo: Bir grup üniversite öğrencisinin doğum günlerini kutlamak için tatile gittiği bir veritabanı oluşturacağız. Tatile gitmeden önce, dostane bir yüzme yarışmasına katılmayı planlıyorlar. Ayrıca, gruptaki her arkadaş, seyahatlerini heyecan verici ve keyifli hale getirmek için yapılacaklar listesi planlıyor.

İlk olarak, MySQL'i root kullanıcısı olarak açın:

Ardından, aşağıdaki komutu çalıştırarak bir veritabanı oluşturun:

Ardından, aşağıdaki komutu kullanarak veritabanımızı kullanalım:

Ondan sonra veritabanımızda tablolar oluşturacağız. İlk tabloyu şu şekilde adlandırın: celebration. Tablomuzda arkadaşlarımızın isimleri için (name), kazandıkları turnuvalar için (wins) ve ayrıca en iyi en iyi süreleri için (time):

Daha sonra tablomuzu verilerle dolduracağız:

Ardından, en sevdikleri doğum günü etkinlikleri hakkındaki bilgileri depolamak için veritabanımızda başka bir tablo oluşturun. Adı olan bir tablo oluşturacağızvacation ve şu sütunlara sahip olacak:

List

Detail

name:

Her arkadaşın adını depolar.

birthdate:

Her bireyin doğum tarihini takip eder.

activity:

En sevdikleri etkinliğin kaydını tutar.

Destination:

Her bireyin en sevdiği hedef hakkındaki bilgileri depolar.

meal:

Bir bireyin sevdiği en sevdiği yemeği takip eder.

Tabloyu verilerle doldurun:

Artık veritabanınızı kurmayı tamamladınız.

Adım 2 — SELECT İfadeleri ile Başlayın

SQL'deki sorgular normalde ile başlarSELECT. Sorgularda, bir tablodaki hangi sütunların sonuçlarla birlikte döndürüleceğini belirtmek için kullanılır. Bir sorgu her zaman ifadesini de içermelidirFROM, bu da ifadenin sorgulayacağı tabloyu belirtmek için kullanılır.

Sorgular aşağıdaki sözdizimini takip eder:

Sorgu sözdizimini kullanarak meal sütununu vacation tablosundan döndüreceğiz:

Çıktımız aşağıdaki gibi olacaktır:

Sütunları ayırmak için bir sütun kullanarak birden fazla sütun da seçebilirsiniz:

Çıktı:

Tablodaki tüm sütunları temsil etmek istiyorsanız bir asterisk (*) de kullanabilirsiniz:

Çıktı:

Belirtilen bir koşulu karşılayan kayıtları filtrelemek istiyorsanız, WHERE kullanırsınız. Belirtilen koşulu karşılamayan satırlar sonuçlardan elenir. WHERE tümcesi aşağıdaki sözdizimini kullanır:

Belirtilen sütunun değerle nasıl karşılaştırılması gerektiğini tanımlayan bir karşılaştırma operatörüdür. Yaygın SQL karşılaştırma operatörleri şunları içerir:

Operatör

Kullanım

=

Eşitlik

!=

Eşitsizlik

<

Küçüktür

>

Büyüktür

<=

Küçük veya eşittir

>=

Büyük veya eşittir

BETWEEN

Değerin verilen aralıkta olup olmadığını test eder.

IN

Bir satırın değerinin belirtilen değerler kümesinde yer alıp almadığını test eder.

EXISTS

Bir satırın var olup olmadığını test eder

LIKE

Bir değerin belirtilen dizeyle eşleşip eşleşmediğini test eder

IS NULL

Null değerleri test eder

IS NOT NULL

NULL dışındaki tüm değerleri test eder

Aisha'nın en sevdiği hedefi bulmak isteseydiniz aşağıdaki sorguyu kullanabilirdiniz:

Sorgu ardından şunları döndürecektir:

SQL, özellikle WHERE yan tümcelerinde son derece yararlı olan joker karakterlerin kullanımını destekler. Yüzde işaretleri ( %) sıfır veya daha fazla bilinmeyen karakteri belirtirken, alt çizgiler ( _) tek bir bilinmeyen karakteri belirtir. Bunlar, bir tablodaki belirli bir girdiyi bulmak istediğinizde ancak girdi hakkında emin olmadığınızda yardımcı olur.

Örneğin, bir arkadaşınızın en sevdiği tatil yerini unuttuysanız ve sadece başladığı harfi biliyorsanız (örneğin “m”), aşağıdaki sorguyu kullanarak hedef adını bulabilirsiniz:

Sorgu şunları döndürecektir:

Veritabanlarıyla çalışırken, nispeten uzun veya okunması zor adlara sahip sütunlarla veya tablolarla karşılaşabilirsiniz. Bu durumlarda, AS anahtar sözcüğünü kullanarak bir takma ad (alias) oluşturup adları daha okunabilir hale getirebilirsiniz. AS ile oluşturulan takma adlar yalnızca oluşturuldukları sorgunun süresi boyunca geçerlidir:

Adım 3 — Toplama (Aggregate) Fonksiyonlarına Giriş

Verilerle çalışırken her zaman verinin kendisini görmek istemeyebilirsiniz. Bunun yerine veri hakkında bilgi edinmeyi tercih edebilirsiniz. Bir SELECT sorgusu göndererek, SQL sözdizimini kullanarak verileriniz üzerinde yorum yapabilir veya hesaplamalar çalıştırabilirsiniz. Bunlar toplama (aggregate) fonksiyonları olarak adlandırılır.

The COUNT fonksiyonu, belirli bir kriter kümesini karşılayan satırların sayısını sayar ve döndürür. Örneğin, kaç arkadaşınızın Maldives gitmeyi tercih ettiğini bilmek istiyorsanız aşağıdaki sorguyu kullanabilirsiniz:

Aşağıdaki sonuçlar döndürülecektir:

MIN belirtilen bir sütundaki en küçük değeri bulmak için kullanılır:

Sorgu şu çıktıyı verecektir:

MAX belirli bir sütundaki en büyük sayısal değeri bulmak için kullanılır:

Beklenen çıktı şu şekildedir:

Hem MIN hem de MAX fonksiyonları sayısal ve alfabetik veriler üzerinde kullanılabilir. Bir dize (string) değerleri sütununa uygulandığında, MIN fonksiyonu alfabetik olarak ilk değeri döndürür.

The MIN fonksiyonu alfabetik olarak ilk değeri döndürür:

Çıktı şu şekilde olacaktır:

The MAX fonksiyonu alfabetik olarak son değeri döndürür:

Çıktı şu şekilde olacaktır:

Adım 4 — Sorgu Çıktılarını Düzenleme

Kullanılan bir diğer popüler ifade de GROUP BY ifadesidir. Bir sütun üzerinde toplama işlevi gerçekleştirirken, bu işlevi başka bir sütundaki eşleşen değerlerle ilişkilendirmek için kullanılır:

Çıktı şu şekilde olacaktır:

Sorgu sonuçlarını sıralamak için ORDER BY ifadesini kullanın. Sayısal değerler varsayılan olarak artan düzende sıralanırken, metin değerleri alfabetik olarak sıralanır. Aşağıdaki sorgu name ve birthdate sütunlarını listeler, ancak sonuçları birthdate:

Çıktı aşağıdaki gibi olacaktır:

Çıktı artan düzendedir; azalan düzende sıralamak için sorguyu şu kelimeyle sonlandırın: DESC:

Çıktıya göz atın:

The HAVING ifadesi, WHERE ifadesine benzer bir işlevsellik sağlamak ve aynı zamanda toplama işlevleriyle uyumlu olmak amacıyla SQL'e eklenmiştir. Bu iki ifade arasındaki fark, WHERE ifadesinin tekil kayıtlara başvurması, HAVING ifadesinin ise grup kayıtlarına başvurmasıdır. Bu amaçla, bir HAVING ifadesi kullanıldığında her zaman bir GROUP BY ifadesi de bulunmalıdır:

Sorgu şu çıktıyı verecektir:

The COUNT değeri, hiçbir iki arkadaş aynı aktiviteden hoşlanmadığı için hepsinde 1'dir.

Adım 5 — Birden Çok Tabloyu Sorgulama

The JOIN ifadesi, iki veya daha fazla tablodan satırları birleştirmek için bir sorgu sonucunda kullanılabilir. Bunu, tablolar arasında ilişkili bir sütun bularak ve çıktıyı uygun şekilde sıralayarak gerçekleştirir.

SELECT ifadesi içeren JOIN deyimleri aşağıdaki sözdizimini takip eder:

Arkadaşlarınızın her birine, wins ve swimming aktiviteleri için birthdays birer kupa almak isteseydiniz, tek bir sorguyla istediğiniz tüm bilgileri bulmanıza yardımcı olması için her iki tabloyu birleştiren bir sorgu oluşturabilirdiniz:

Çıktı şu şekilde olacaktır:

Bu bir iç JOIN ifadesidir. Bunun nedeni, her iki tabloda da eşleşen değerlere sahip tüm kayıtları seçmesi ve bunları bir sonuç kümesine yazdırmasıdır. Sorguyla eşleşmeyen kayıtlar dahil edilmez. Tablolarımıza herhangi bir girdiyle eşleşmeyen yeni bir satır ekleyebiliriz:

Ardından, SELECT ifadesini JOIN ifadesiyle yeniden çalıştırın:

celebration tablosunda Peter için bir girdi bulunmadığından ve vacation tablosunda Ella için bir girdi bulunmadığından, bu kayıtlar mevcut değildir.

Dış bir JOIN ifadesi kullanarak tablolardan birindeki tüm kayıtları döndürebiliriz. Bu bir LEFT JOIN veya bir RIGHT JOIN olabilir. Bir LEFT JOIN sol tablodaki tüm kayıtları ve sağ tablodan yalnızca eşleşen kayıtları döndürür. Dış birleştirmeler bağlamında sol tablo, FROM ifadesi tarafından başvurulan tablodur ve sağ tablo ise JOIN ifadesinden sonra başvurulan herhangi bir tablodur.

Sorguyu bir LEFT JOIN ifadesi kullanarak tekrar çalıştırın:

Komut, sağ tabloda karşılık gelen bir kayıt olmasa bile sol tablodaki ( celebration) tüm kayıtları döndürecektir. Sağ tabloda eşleşen bir kayıt olmadığında, NULL:

Bu da RIGHT JOIN ifadesidir:

Sağ tablodaki (vacation) tüm değerler döndürülecektir. Peter'ın birthdate bilgisi sağ tabloda kayıtlı olup sol tabloda kayıtlı olmadığından, name ve wins sütunları bu satırlarda NULL değerlerini döndürecektir:

Birden fazla tablodan kayıtları sorgulamak için UNION ifadesi yerine JOIN kullanabilirsiniz. UNION operatörü, sonuçları tek bir SELECT ifadesi kullanarak birden fazla tablodan benzersiz sütunlar olarak yazdırmak yerine iki SELECT ifadesinin sonuçlarını tek bir sütunda birleştirmesi bakımından JOIN ifadesinden farklıdır.

Bunu göstermek için bu sorguyu çalıştırabilirsiniz:

Sorgu, yinelenen kayıtları kaldırır. Bu, UNION operatörünün varsayılan davranışıdır:

Tüm kayıtları (ve yinelenenleri) döndürmek için UNION ALL operatörünü kullanın:

Çıktı:

Alt sorgular, birden fazla tabloyu sorgulamak için başka bir yöntemdir. Alt sorgular, başka bir sorgunun içine yerleştirilmiş sorgulardır (iç veya iç içe geçmiş sorgular olarak da bilinir). Bunlar, bir sorgunun sonuçlarını ayrı bir toplama işlevinin sonuçlarıyla karşılaştırmak istediğinizde kullanışlıdır.

Ella'dan daha fazla yüzme turnuvası kazanan arkadaşın hangisi olduğunu bulma örneğini kullanacağız. Ella'nın kaç maç kazandığını sorgulayıp ardından bundan daha fazla oyun kazananları görmek için başka bir sorgu çalıştırmak yerine, her ikisini de tek bir sorguyla hesaplayabilirsiniz:

Sorgu şunları döndürecektir:

Arkadaşlarınızı sürpriz bir tatile götürmek isteseydiniz, en çok galibiyete kimin sahip olduğunu görmek ve gidecekleri yeri döndürmek için bir sorgu kullanabilirdiniz:

Sorgu şunları döndürecektir:

Bu ifade, bir alt sorgu içinde başka bir alt sorgu içerir.

Sonuç

Sorgu oluşturma, veritabanı yönetimindeki en yaygın görevlerden biridir. Sorgularla çalışmak ve sonuçlarını görselleştirmek için kullanabileceğiniz phpMyAdmin ve pgAdmin gibi çeşitli veritabanı yönetim araçları vardır. Ancak, kullanım kolaylığı ve mükemmel kontrolü nedeniyle komut satırından SELECT ifadesi en çok tercih edilen seçenektir.

Ayrıca, veritabanları hakkında keşfedebileceğiniz birçok öğreticiye blogumuzdan ulaşabilirsiniz:

Keyifli Bilişimler!

author

Preslav Dobrev

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.