MySQL MariaDB

MySQL Alt Sorguları

MySQL Alt Sorguları
Bir alt sorgu, özyinelemeli daha büyük bir sorgu içindeki bir SQL sorgusudur veya bir alt sorgu dahili bir sorgu olarak kabul edilir. Buna karşılık, bir dış sorgu, alt sorguyu içeren sorgu olarak adlandırılır. SELECT, INSERT, UPDATE veya DELETE dahil olmak üzere sorgulara bir MySQL alt sorgusu gömülebilir. Ayrıca, başka bir alt sorgu içinde, bir alt sorgu yuvalanmış olabilir. Alt sorgu ifadesi, kullanıldığı her yerde parantez içinde kapatılmalıdır. Karmaşık sorgular oluşturmak için MySQL alt sorgusunun nasıl ve ne zaman kullanılacağını size öğreteceğiz ve ilişkili alt sorgu fikrini açıklayacağız. Masaüstünüzden komut satırı kabuğunu açın ve kullanmaya başlamak için parolanızı yazın. Enter'a basın ve devam edin.

Tek Tablo Kayıtlarında Alt Sorgu:

'veri' veritabanında 'hayvanlar' adlı bir tablo oluşturun.' Aşağıda gösterildiği gibi farklı özelliklere sahip farklı hayvanların aşağıdaki kaydını ekleyin. SELECT sorgusunu kullanarak bu kaydı aşağıdaki gibi alın:

>> verilerden * SEÇİN.hayvanlar;

Örnek 01:

Alt sorguları kullanarak bu tablonun sınırlı kayıtlarını alalım. Aşağıdaki sorguyu kullanarak, önce alt sorgunun yürütüleceğini ve çıktısının ana sorguda girdi olarak kullanılacağını biliyoruz. Bir alt sorgu, hayvan fiyatının 2500 olduğu yaşı getiriyor. Tablodaki fiyatı 2500 olan bir hayvanın yaşı 4'tür. Ana sorgu, yaşın 4'ten büyük olduğu tüm tablo kayıtlarını seçecektir ve çıktısı aşağıda verilmiştir.

>> verilerden * SEÇİN.hayvanlar NEREDE Yaş > ( Verilerden Yaş SEÇİN.hayvanlar NEREDE Fiyat='2500' );

Örnek 02:

Aynı tabloyu farklı durumlarda kullanalım. Bu örnekte, alt sorguda WHERE yan tümcesi yerine bazı Function kullanacağız. Hayvanlar için verilen tüm fiyatların ortalamasını alıyoruz. Ortalama fiyat 3189 olacak. Ana sorgu, fiyatı 3189'dan fazla olan hayvanların tüm kayıtlarını seçecektir. Aşağıdaki çıktıyı alacaksınız.

>> verilerden * SEÇİN.hayvanlar NEREDE Fiyat > ( VERİLERDEN AVG(Fiyat) SEÇİN.hayvanlar);

Örnek 03:

Ana SELECT sorgusunda IN yan tümcesini kullanalım. Her şeyden önce, alt sorgu 2500'den daha yüksek fiyatlar getirecektir. Bundan sonra, ana sorgu, alt sorgu sonucunda fiyatın bulunduğu 'hayvanlar' tablosunun tüm kayıtlarını seçecektir.

>> verilerden * SEÇİN.hayvanlar NEREDE Fiyat (verilerden Fiyat SEÇİN).hayvanlar NEREDE Fiyat > 2500 );

Örnek 04:

Fiyatın 7000 olduğu hayvanın adını almak için alt sorguyu kullanıyoruz. Bu hayvan bir inek olduğundan, bu nedenle 'inek' adı ana sorguya döndürülecektir. Ana sorguda, hayvan adının 'inek' olduğu tablodan tüm kayıtlar alınacaktır.Hayvan 'inek' için sadece iki kaydımız olduğu için, bu yüzden aşağıdaki çıktıya sahibiz.

>> verilerden * SEÇİN.hayvanlar NEREDE İsim = ( veriden İsim SEÇ.hayvanlar NEREDE Fiyat='7000' );

Çoklu Tablo Kayıtlarında Alt Sorgu:

Veritabanınızda aşağıdaki iki tabloyu, 'öğrenci' ve 'öğretmen' olduğunu varsayalım. Bu iki tabloyu kullanarak bazı alt sorgu örnekleri deneyelim.

>> verilerden * SEÇİN.Öğrenci;
>> verilerden * SEÇİN.öğretmen;

Örnek 01:

Alt sorguyu kullanarak bir tablodan veri alacağız ve bunu ana sorgu için girdi olarak kullanacağız. Bu, bu iki tablonun bir şekilde ilişkili olabileceği anlamına gelir. Aşağıdaki örnekte, öğretmen adının 'Samina' olduğu 'öğrenci' tablosundan öğrencinin adını almak için alt sorguyu kullanıyoruz.' Bu sorgu 'Samina' ana sorgu tablosuna 'öğretmen' döndürür.' Ana sorgu daha sonra 'Samina' öğretmen adıyla ilgili tüm kayıtları seçecektir.' Bu isim için iki kaydımız olduğu için, bu sonucu elde ettik.

>> verilerden * SEÇİN.öğretmen NEREDE TeachName = ( TeachName FROM verilerinden SEÇ.öğrenci WHERE TeachName = 'Samina' );

Örnek 02:

Farklı tablolar durumunda alt sorguyu detaylandırmak için bu örneği deneyin. Tablo öğrencisinden öğretmenin adını alan bir alt sorgumuz var. Adı, değerinde herhangi bir konumda 'i' içermelidir. Bu, TeachName sütunundaki değerlerinde 'i' olan tüm adların seçileceği ve ana sorguya döndürüleceği anlamına gelir. Ana sorgu, alt sorgu tarafından döndürülen çıktıda öğretmen adının bulunduğu 'öğretmen' tablosundaki tüm kayıtları seçecektir. Alt sorgu 4 öğretmen ismi döndürdüğü için, bu yüzden 'öğretmen' tablosunda bulunan tüm bu isimlerin bir kaydını alacağız.'

>> verilerden * SEÇİN.öğretmen NEREDE TeachName IN (veriden TeachName SEÇİN.öğrenci NEREDE TeachName '%i%' );

Örnek 03:

Aşağıdaki iki tabloyu göz önünde bulundurun, 'sipariş' ve 'sipariş1'.

>> verilerden * SEÇİN.sipariş;
>> verilerden * SEÇİN.sipariş1;

Alt sorguyu detaylandırmak için bu örnekte HERHANGİ BİR yan tümceyi deneyelim. Alt sorgu, 'Durum' sütununun 'Ödenmemiş' değerine sahip olduğu 'sipariş1' tablosundan 'kimliği' seçecektir.'id' 1'den fazla olabilir. Bu, tablo 'sipariş' sonuçlarını almak için ana sorguya 1'den fazla değer döndürüleceği anlamına gelir. Bu durumda, herhangi bir 'id' kullanılabilir. Bu sorgu için aşağıdaki çıktıyı aldık.

>> SEÇ Öğe, Satışlar, verilerden kimlik.sipariş NEREDE id= HERHANGİ BİR (veriden kimliği SEÇİN.order1 WHERE Durum= 'Ödenmemiş');

Örnek 04:

Herhangi bir sorgu uygulamadan önce 'order1' tablosunda aşağıdaki verilere sahip olduğunuzu varsayalım.

>> verilerden * SEÇİN.sipariş1;

'order1' tablosundan bazı kayıtları silmek için sorguyu bir sorgu içinde uygulayalım. İlk olarak, alt sorgu, Öğenin 'Kitap' olduğu 'sipariş' tablosundan 'Durum' değerini seçecektir.' Alt sorgu, değer olarak 'Ödendi' değerini döndürür. Şimdi ana sorgu, 'Durum' sütun değerinin 'Ücretli' olduğu 'order1' tablosundaki satırları siler.'

>> verilerden sil.order1 NERDE Durum= ( veriden Durumu SEÇ.sipariş NEREDE Öğe = 'Kitap' );

Kontrol ettikten sonra, sorgunun yürütülmesinden sonra 'order1' tablosunda aşağıdaki kayıtlar kaldı.

>> verilerden * SEÇİN.sipariş1;

Sonuç:

Yukarıdaki tüm örneklerde birçok alt sorguyla verimli bir şekilde çalıştınız. Umarız şimdi her şey net ve temizdir.

En İyi Oculus Uygulama Laboratuvarı Oyunları
Oculus başlık sahibiyseniz, yandan yükleme hakkında bilgi sahibi olmalısınız. Sideloading, kulaklığınıza mağaza dışı içerik yükleme işlemidir. SideQue...
Ubuntu'da Oynanacak En İyi 10 Oyun
Windows platformu, günümüzde doğal olarak Windows'u desteklemek için geliştirilen oyunların büyük bir yüzdesi nedeniyle oyun oynamak için hakim platfo...
Linux için En İyi 5 Arcade Oyunu
Günümüzde bilgisayarlar oyun oynamak için kullanılan ciddi makinelerdir. Yeni yüksek puanı alamazsan, ne demek istediğimi anlayacaksın. Bu yazıda, bug...