kanssa – Järjestää Monimutkaisia Kyselyitä

kanssa – Järjestää Monimutkaisia Kyselyitä

software engineering, se on yleinen käytäntö ryhmä ohjeet kuin pieni ja helposti ymmärrettäviä yksikköä—eli toimintoja tai menetelmiä. Tämä tekee koodista uudelleenkäytettävän ja parantaa luettavuutta.

vaikka SQL: llä on myös toimintoja ja menettelytapoja, ne eivät ole oikeita työkaluja helposti ymmärrettävien ja uudelleenkäytettävien yksiköiden rakentamiseen. SQL: ssä toiminnot ja menettelyt eivät ole ykkösluokan kansalaisia samalla tavalla kuin subqueries.0 rakennuspalikka SQL ovat queries1—ei ohjeita.,

jotta kyselyt olisivat uudelleenkäytettäviä, SQL-92 esitteli näkymiä. Kun näkymä on luotu, sillä on nimi tietokantataulukossa, jotta muut kyselyt voivat käyttää sitä kuin taulukkoa.

SQL:1999 lisätty with lauseke ”statement scoped views”: n määrittelemiseksi. Niitä ei tallenneta tietokantakaavioon, vaan ne ovat voimassa vain siinä kyselyssä, johon ne kuuluvat. Näin voidaan parantaa lausunnon rakennetta saastuttamatta maailmanlaajuista nimiavaruutta.,

Syntax

with lauseke on, yksinkertaisesti sanottuna, valinnainen etuliite select:2

WITH query_name (column_name1, ...) AS (SELECT ...) SELECT ...

syntax jälkeen avainsana with on sama kuin create view: se alkaa kyselyn nimi, ja optionally3 ja suluissa nimen sarakkeet se palaa. Hakusana as esittelee lopulta itse määritelmän—kyselyn) – jälleen sulkeissa.,

With ei ole itsenäinen komento, kuten create view on: se on seurattava select. Tämä kysely (ja alikyselyä se sisältää) voi viitata vain määritelty kyselyn nimi heidän from lauseke.

yhden with lauseke voi ottaa käyttöön useita kyselyn nimet erottamalla ne pilkulla (with avainsana ei toistu)., Jokainen näistä kyselyt voi viitata kyselyn nimet aiemmin määritelty saman with clause4 (usein laiminlyöty sääntö—katso Yhteensopivuus):

WITH query_name1 AS ( SELECT ... ) , query_name2 AS ( SELECT ... FROM query_name1 ... )SELECT ...

Kyselyn nimet, jotka on määritetty käyttäen with naamio nykyisiä taulukoita tai näkemyksiä, joilla on sama nimi.5

Suorituskyky Näkökohdat

Useimmat tietokannat prosessi with-kyselyt samalla tavalla, että ne käsittelevät näkemyksiä: ne korvata viittaus kyselyn mukaan sen määritelmä ja optimoida yleinen kysely.,

PostgreSQL-tietokanta oli eri vasta-versio 12: optimoitu kunkin with kyselyn ja tärkein lausunto toisistaan riippumattomia.

– Jos with kysely on tarkoitettu useita kertoja, joissakin tietokannoissa välimuisti (eli ”toteutunut”) sen seurauksena estämään teloitukset.

Lue tästä lisää ”with lauseke: Performance Impacts”.

omasta puolestani

ansaitsen elantoni koulutuksesta, muista SQL-palveluista ja kirjani myymisestä. Lue lisää https://winand.at/.,

Käytä Tapauksissa

  • Lukutaitoisia SQL

  • Yksikkö testit ohimenevä tiedot

  • Määritä nimet sarakkeita ilman tunnettua nimeä,

Yhteensopivuus

with lauseke otettiin käyttöön SQL:1999 joukko valinnaisia ominaisuuksia. Jättäen recursive variantti syrjään, ominaisuudet ovat T121 huipputason with lausekkeita ja T122 varten with lausekkeita alikyselyä.

with perustoiminnot ovat hyvin tuettuja., Yksi alue, jossa tuotteet käyttäytyvät eri tavalla on nimi resoluutio. Erityisen huomionarvoista on, että with kohdellaan usein kuin with recursive.6. lisää hienovarainen yhteensopivuusongelmia liittyvät pätevän taulukon nimet (schema.table voi viitata with kysely)7 ja näkemyksiä käytetään soveltamisalan with kyselyt (kyselyn näkymän sisällä ei ”näe” ulompi with lauseke).,8

Mukainen Vaihtoehtoja

Näkemyksiä voi kattaa joitakin käyttötapauksia. Tämä voi kuitenkin johtaa helposti kohtuuttomaan näkemysten määrään (”nimiavaruuden saastuminen”). Tällöin alakiintiöt ovat usein parempi vaihtoehto.

sovelluskohtaisia

yhtä DML-etuliite (PostgreSQL, SQL Server, SQLite)

Jotkut tietokannat hyväksyä with etuliitteenä DML-lausekkeita (docs: PostgreSQL, SQL Server, SQLite).,

SQL Server voi myös käyttää with kyselyn kohde DML-lausekkeita (periaatteessa rakennus on päivitettävissä view).

Toimintojen kanssa (Oracle)

Oracle-Tietokanta tukee toimintaa ja menettelyä ilmoitukset sisällä with lauseke koska versio 12cR1 (dokumentaatio).

DML kanssa (PostgreSQL)

Alkaen 9.1, PostgreSQL-tietokanta tukee DML-lausekkeita (insert, update, delete) kehossa with kyselyt (dokumentaatio)., Kun käytät (myös oma) returning lauseketta DML-lause, with kyselyn oikeastaan palauttaa tietoja (esim. rivit vain se on asetettu laitteeseen).

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *