İlişkili alt sorgular nelerdir?

İlişkili bir alt sorgu, SQL'in sofistike bir kullanımıdır.

SQL

En modern ilişkisel veritabanları veri eklemek ve güncellemek, yapıları oluşturmak ve bilgi toplamak için SQL'i içermektedir. SQL, 1970'lerde geliştirilen veriler hakkındaki teorilere dayanır ve o zamandan beri sürekli olarak rafine edilir. SELECT, INSERT, CREATE ve DELETE dahil olmak üzere bir dizi durumdan oluşur, ardından sıralama ve grup gibi yönetilen verileri ve seçenekleri belirten birkaç madde gelir. Veritabanlarının yaygın kullanımı SQL'in esnekliğinden ve karmaşıklığından kaynaklanmaktadır; Kuruluşların karmaşık veri gruplarını çeşitli şekillerde analiz etmelerine olanak tanır.

Sorgular ve alt sorgular

Verileri almak için bir SQL komutu sorgu olarak adlandırılır. Genellikle, veri arama kurallarının çoğu INSERT, DELETE ve UPDATE için geçerli olsa da, programcılar SELECT ifadelerinin sorgularını kullanırlar. Basit bir SELECT sorgusu, aşağıdaki tablodaki gibi bir veri tablosunun içeriğini görüntüleyebilir:

SELECT * Envanterden;

Bu sorgu, "Envanter" adlı bir tablodaki tüm kayıtları gösterir. Bu "envanter" ifadesinde olduğu gibi, koşullu testler ekleyerek daha spesifik bir sorgudan sonuçlar alabilirsiniz:

SELECT * envanterden WHERE warehouse_code = 'chicago5';

Bu ifade, bir depozit kodunun envanter kayıtlarını gösterir, chicago5.

Bir alt sorgu, başka bir sorguda bir sorgudur. Aşağıdaki ifade, para yatırma işlemlerinin belirli bir bölgedeki envanter kayıtlarını listeler:

SELECT * envanterden WHERE warehouse_code IN (SELECT warehouse_code FROM depolarından WHERE bölge = 'orta batı');

Bu sorguda, envanter kayıtlarını gösteren bir başka iki SELECT ifadesi ve depozito kodlarıyla ana sorguyu oluşturan bir tane daha var.

İlişkili alt sorgu

İlişkili bir alt sorguda, ana ve bağımlı sorguları aynı tablodaki verileri ayıklar. Dahili sorgu, istatistik gibi bir toplama işlevi gerçekleştirir ve bu bilgiyi, bir karşılaştırmanın temeli olarak kullanan dış sorguya gönderir. Örneğin, bu ilişkilendirilmiş alt sorgu, bir para yatırma işleminin ortalamasının üzerindeki fiyatlara sahip öğeler için bir envanter kayıtları listesi oluşturur. Dış sorgu, depodaki bilgileri iç sorguya geçirir ve iç sorgu, ortalama fiyatı dış sorguya geri gönderir:

SELECT part_number, price, warehouse_code FROM envanterinden i1 WHERE price> (AVG (fiyat) envanter i2 WHERE warehouse_code.i1 = warehouse_code.i2);

İki sorgu, "I1" ve "I2" takma adlarını kullanır. Her ne kadar aynı tabloya başvursalar da, takma adın kullanımı, sorguların iki ayrı varlık olarak ele alınmasını sağlar.

Operasyonun dezavantajları

İlişkili alt sorgular için SQL, dış sorgudaki her kayıt için bir kez iç sorguyu değerlendirir. Tabloların boyutları büyüdükçe, süreç daha fazla zaman alır. İlişkilendirilmiş bir alt sorgunun tamamlanması için çok fazla zaman harcadığını fark ederseniz, ara sonuçları olan geçici bir tabloyu yüklemek gibi bir alternatif kullanmayı ve daha sonra geçici tabloyu basit bir alt sorgu ile doğrudan ana tabloya işleyerek düşünün. Daha az zarif olsa da, daha hızlı olabilir.