Oracle esitteli SQL WITH -lauseen Oracle 9i versio 2 -tietokannassa. SQL WITH -lause antaa sinun antaa alikyselylohkolle nimen (prosessi, jota kutsutaan myös alikyselyn uudelleenmuodostamiseksi), johon voidaan viitata useissa paikoissa SQL-pääkyselyssä.
- Lausea käytetään väliaikaisen suhteen määrittämiseen siten, että tämän väliaikaisen suhteen tulos on käytettävissä ja sitä käyttää WITH-lauseeseen liittyvä kysely.
- Kyselyt, joihin liittyy WITH-lause, voidaan kirjoittaa myös sisäkkäisillä alikyselyillä, mutta tämä lisää SQL-kyselyn lukemisen/virheenkorjauksen monimutkaisuutta.
- Kaikki tietokantajärjestelmät eivät tue WITH-lausetta.
- Alakyselylle määritettyä nimeä käsitellään ikään kuin se olisi upotettu näkymä tai taulukko
- Oracle esitteli SQL WITH -lauseen Oracle 9i versio 2 -tietokannassa.
Syntaksi:
WITH temporaryTable (averageValue) as (SELECT avg(Attr1) FROM Table) SELECT Attr1 FROM Table, temporaryTable WHERE Table.Attr1>väliaikaistaulukko.averageValue;>>
muuntaa char merkkijonoksi javaTässä kyselyssä WITH-lausetta käytetään määrittämään tilapäinen relaatio väliaikaistaulukko, jolla on vain 1 attribuutti keskiarvo. mediumValue sisältää sarakkeen Attr1 keskiarvon, joka on kuvattu suhteessa Taulukkoon. WITH-lausetta seuraava SELECT-käsky tuottaa vain ne monikot, joissa Attr1:n arvo suhteessa Taulukkoon on suurempi kuin WITH-lauseesta saatu keskiarvo.
Huomautus: Kun WITH-lauseella varustettu kysely suoritetaan, ensin lauseessa mainittu kysely arvioidaan ja tämän arvioinnin tulos tallennetaan väliaikaiseen suhteeseen. Tämän jälkeen suoritetaan lopulta WITH-lauseeseen liittyvä pääkysely, joka käyttäisi tuotettua väliaikaista suhdetta.
Kyselyt
Esimerkki 1: Etsi kaikki työntekijät, joiden palkka on suurempi kuin kaikkien työntekijöiden keskipalkka.
Suhteen nimi: Työntekijä
| Henkilöstökortti | Nimi | Palkka |
|---|---|---|
| 100011 | Smith | 50 000 |
| 100022 | Laskuttaa | 94 000 |
| 100027 | Hän itse | 70550 |
| 100845 | Walden | 80 000 |
| 115585 | Erik | 60 000 |
| 1100070 | Kate | 69 000 |
SQL-kysely:
Lähtö:
| Lentoyhtiö |
|---|
| Airbus 380 |
Selitys: Airbus 380:n kaikkien lentäjien kokonaispalkka = 298 830 ja Boeingin = 45 000. Kaikkien lentäjien keskipalkka taulukossa Pilotti = 57305. Koska vain Airbus 380:n kaikkien lentäjien kokonaispalkka on suurempi kuin saatu keskipalkka, joten Airbus 380 on lähtösuhteessa.
vertailla javassa
Tärkeitä kohtia:
- SQL WITH -lause on hyvä, kun sitä käytetään monimutkaisten SQL-lauseiden kanssa yksinkertaisten käskyjen sijaan
- Sen avulla voit myös pilkkoa monimutkaiset SQL-kyselyt pienemmiksi, mikä helpottaa monimutkaisten kyselyiden virheenkorjausta ja käsittelyä.
- SQL WITH -lause on periaatteessa normaalin alikyselyn pudotuskorvaus.
