Utasítás segédlekérdezés - SQL programozás

A segédlekérdezés (segédlekérdezés) - ez egy beágyazott lekérdezés. Subqueries előfordulhatnak különböző részein SQL.

Az SQL támogatja a következő típusú subqueries.

Al-lekérdezések, hogy letölteni egyetlen érték. Ez a legszélesebb körben támogatott többplatformos típusú al-lekérdezések.

Al-lekérdezések, hogy egyszerre több értéket. Ez a fajta segédlekérdezés beolvasott több oszlopot.

Beágyazott táblázat subqueries

Subqueries abstractors több oszlopot és több sor.

Skalár és vektor subqueries egyes platformokon része lehet a kifejezés a listát a kiválasztott elemeket a SELECT, benne a WHERE és a HAVING. Beágyazott táblázat subqueries általában megtalálható a FROM utasítás SELECT.

Korrelált segédlekérdezés - segédlekérdezésként értékétől függően a külső lekérdezés. Következésképpen a belső kérés lépéseket minden egyes bejegyzés, a lekért külső kérésre. Ha több szinten egymásba ágyazott subqueries korrelált segédlekérdezés utalhat bármilyen szinten a fő kérés, ami magasabb, mint a saját szintjén.

A működése a segédlekérdezés szakterületen eltérő szabályok attól függően, hogy, milyen mondat belép. A támogatást kapott subqueries különböző platformok és más. Néhány rendszer támogatja subqueries valamennyi korábban említett javaslatok (SELECT, FROM, hol és Ving), és más platformokon - csak egy vagy két ilyen javaslatokat.

Segédlekérdezés SELECT általában társított utasítást. Mivel az al-lekérdezések lehet a WHERE lehet használni bármilyen SQL, amely támogatja a WHERE záradékot, ideértve a SELECT, INSERT SELECT, DELETE frissítem.

Skalár és asztali subqueries és subqueries beágyazott táblázat a következő általános szintaxist.

Korrelált subqueries bonyolultabb, mert az itt megadott értékek subqueries értékek függvényében letölteni a fő lekérdezés. Például:

Megjegyezzük, hogy az IN záradék csak példaként szolgál. Használhatja bármilyen összehasonlító operátor.

Kulcsszavak

Skalár al-lekérdezés adunk a lista elemeinek a SELECT vagy WHERE záradék vagy korábban kérelmet.

beágyazott táblázat segédlekérdezés

Beágyazott táblázat segédlekérdezés adni csak ajánlatot, ugyanakkor a AS záradékot.

Táblázatos segédlekérdezés adni csak a WHERE mondat segítségével a szereplők, mint IN, ANY, NÉHÁNY, létezik-e vagy ALL, ami működik a több értéket. Táblázatos subqueries vissza egy vagy több sorban, amely egy értéket.

Általános szabályok

Subqueries teszik lehetővé olyan egy vagy több érték, és helyezzük őket egy SELECT, INSERT, UPDATE, vagy DELETE utasítás, vagy egy másik allekérdezés. Subqueries bárhol használható, ahol ez megengedett a kifejezések használata. Továbbá, al-lekérdezések gyakran helyettesíti utasításokat csatlakozni. Teljesítménye subqueries alacsonyabb lehet, mint a teljesítmény JOIN utasítás (platformtól függően).

Subqueries mindig zárójelbe téve.

Subqueries lehet használni a SELECT záradék az elemek egy listáját, amely legalább az egyik eleme a FROM záradék referencia egy vagy több tábla vagy nézet, illetve a javaslatok és ahol miután.

Skalár subqueries csak egy értéket ad vissza. Egyes szolgáltatók WHERE záradék csak akkor fogadja el egy értéket (például =.> == = AVG (SELECTcolumn 1. salesTable ...). Ez a korlátozás lehet, ha fut a készüléket segédlekérdezésként, nem a külső lekérdezés.

Tippek és trükkök

Platform legtöbb gyártó nem engedélyezi támaszkodni nagy adattípusok (pl CLOB és BLOB az Oracle és a kép vagy szöveg SQL Server), valamint a fajta tömbök (pl TABLE vagy a kurzor az SQL Server).

Minden platform támogatja al-lekérdezések, de nem minden szolgáltató támogatja minden típusú al-lekérdezések. A 3.6 ábra a típusú lekérdezések által támogatott különböző gyártók.

Subqueries nem korlátozódnak SELECT nyilatkozatokat. Azt is fel lehet használni egy INSERT, UPDATE, és DELETE, amelyek javaslatot WHERE. Subqueries gyakran használják a következő célokra.

  • Ahhoz, hogy adja meg a sorok helyezünk a céltáblát a INSERT ... SELECT, CREATE TABLE ... SELECT vagy SELECT ... INTO.
  • Annak jelzésére, vagy jelentésük húrok egy materializált nézet CREATE VIEW nyilatkozatot.
  • Az értékek meghatározásához kapcsolódó meglévő sorok használatával UPDATE utasítás.
  • Hogy adja meg értékeket a feltételeket a WHERE és nyilatkozatait SELECT, UPDATE, és DELETE.
  • Prezentáció létrehozásához táblázat (ok) „on the fly” (azaz beágyazott táblázat subqueries).

Ez a rész példákat, amelyek egyaránt alkalmasak a DB2, MySQL, Oracle, PostgreSQL és az SQL Server.

Az alábbiakban egy egyszerű skalár al-lekérdezést a SELECT, a tételek listáját.

Beágyazott táblázat subqueries funkcionálisan ekvivalens lekérdezni a nézetet. A következő példában, azt fogja kérni a beágyazott táblázat allekérdezés szintű oktatás (edlevel) és a munkabér (illetmény), majd hajtsa végre a összesítése származó értékek táblázat a külső lekérdezés.

Tartsuk szem előtt, hogy egyes platformokon, ez a kérés nem teljesíthető nélkül az ajánlatot a AS, amelyben a származtatott tábla van rendelve egy név.

A következő példa azt mutatja, egy standard táblázat allekérdezés részeként a WHERE. Ebben az esetben van szükség, mind az alkalmazottak számát a minisztérium A00 projekteket.

A fenti allekérdezés a külső lekérdezés végrehajtása csak egyszer.

A következő példában azt akarjuk, hogy a nevét, a munkavállalók és magas szintjén. Az eredmény készlet használatával nyerhető a korrelált segédlekérdezés.

Ellentétben az előző, ez segédlekérdezés végre egyszer minden sorban kivont külső kérésre. az ilyen lekérdezések feldolgozási idő is elég nagy, mivel a belső kérelmet lehet végezni több alkalommal generál egy eredményt készlet.

Korrelált subqueries függ kapott értékeket külső igény is kapott, mielőtt a kérést fogja kezelni a belső. Az ilyen kérelmeket nehéz elsajátítani, de adnak egy egyedülálló szoftver jellemzői. A következő példában, kapunk információt megrendelések (megrendelések), ahol az értékesített mennyiség (db) kisebb, mint az átlag (átlag) számos egyéb eladott áruk, az azonos nevű (title).

Ugyanazt a célt el tudjuk érni a reflexív kapcsolat (self-join). Vannak azonban olyan helyzetek, amikor a korrelációs allekérdezés az egyetlen módja annak, hogy a kívánt eredmény eléréséhez.

A következő példa bemutatja, hogyan kell használni a korrelált allekérdezés frissítse az értékeket a táblázatban.

Hasonlóképpen, akkor subqueries meghatározni a sorok kell hagyni. A következő példa korrelált allekérdezés törölni táblázat sorai alapján járó pas vonalak egy másik asztalhoz.

DB2 platform támogatja az ANSI szabvány típusú subqueries. Megadjuk az engedélyt használni skalár subqueries a SELECT, a tételek listáját, beágyazott táblázat subqueries - a FROM záradék, valamint skalár és vektor subqueries a WHERE, és miután a javaslat részét. DB2 platform lehetővé teszi a használatát korrelált subqueries a SELECT utasítást, és az elemek listáját a WHERE és ON Ving.

MySQL alkalmazás platform támogatja a beágyazott segédlekérdezés táblázat felsorolja az elemeket a mondatban.

A platform támogatja az ANSI szabvány subqueries használ, de más nevekkel. Az Oracle beágyazott táblázat subqueries, hogy használják a FROM záradék, az úgynevezett beágyazott megtekintés (inline nézet). És ez igaz is, amint a beágyazott táblázat subqueries -. Ez lényegében előadás generált „on the fly" Az Oracle subqueries, amelyeket a WHERE és a HAVING, az úgynevezett beágyazott subqueries (beágyazott segédlekérdezés). Oracle lehetővé teszi a használatát korrelált subqueries a SELECT utasítást, és az elemek listáját a WHERE és iszik.

PostgreSQL

PostgreSQL platform támogatja az ANSI szabvány subqueries a FROM záradék, hol és iszik. Azonban subqueries a HAVING nem tartalmazza azokat a javaslatokat Rendezés, FOR UPDATE és LIMIT. Jelenleg PostgreSQL nem támogatja al-lekérdezések egy SELECT cikkek listáját.

SQL Server

Platform SQL Server támogatja az ANSI szabvány subqueries. Skalár subqueries lehet használni szinte mindenütt, ahol a reguláris kifejezések is használhatók. Subqueries SQL Server nem tartalmazhat javaslatokat, és számítani a Tallózás gombra. Használhatja az ajánlatot ORDER BY, ha a javaslatot is használják fel.

További információ

Egyes szabályok és eljárások a SET utasítást adatbázisokban a különböző platformokon

A szabályok és eljárások az INSERT utasítás adatbázisokban a különböző platformokon

A szabályok és eljárások a MERGE utasítás adatbázisokban a különböző platformokon

Egyes szabályok és eljárások az utasításokat szereptípusa adatbázisokban a különböző platformokon

Kapcsolódó cikkek