SQL WITH klauzulu Oracle ieviesa Oracle 9i 2. laidiena datubāzē. SQL WITH klauzula ļauj piešķirt apakšvaicājuma blokam nosaukumu (process, ko sauc arī par apakšvaicājuma pārveidošanu), uz kuru var atsaukties vairākās galvenajā SQL vaicājumā.
- Klauzula tiek izmantota, lai definētu pagaidu relāciju tā, lai šīs pagaidu attiecības izvade būtu pieejama un to izmantotu vaicājums, kas saistīts ar klauzulu WITH.
- Vaicājumus, kuriem ir saistīta klauzula WITH, var arī rakstīt, izmantojot ligzdotos apakšvaicājumus, taču tas padara SQL vaicājuma lasīšanu/atkļūdošanu sarežģītāku.
- WITH klauzulu neatbalsta visas datu bāzes sistēmas.
- Apakšvaicājumam piešķirtais nosaukums tiek apstrādāts tā, it kā tas būtu iekļauts skats vai tabula
- SQL WITH klauzulu Oracle ieviesa Oracle 9i 2. laidiena datubāzē.
Sintakse:
WITH temporaryTable (averageValue) as (SELECT avg(Attr1) FROM Table) SELECT Attr1 FROM Table, temporaryTable WHERE Table.Attr1>pagaiduTable.averageValue;>>
Šajā vaicājumā klauzula WITH tiek izmantota, lai definētu pagaidu relāciju pagaidu tabulu, kurai ir tikai 1 atribūts mediumValue. mediumValue satur kolonnas Attr1 vidējo vērtību, kas aprakstīta saistībā ar Tabulu. SELECT priekšraksts, kas seko klauzulai WITH, radīs tikai tos korteņus, kuros Attr1 vērtība attiecībā uz Tabulu ir lielāka par vidējo vērtību, kas iegūta no WITH klauzulas priekšraksta.
Piezīme: Kad tiek izpildīts vaicājums ar klauzulu WITH, vispirms tiek novērtēts klauzulā minētais vaicājums un šī novērtējuma izvade tiek saglabāta pagaidu relācijā. Pēc tam beidzot tiek izpildīts galvenais vaicājums, kas saistīts ar klauzulu WITH, kas izmantotu izveidoto pagaidu relāciju.
Vaicājumi
pievienojot virkni java1. piemērs: Atrodiet visu darbinieku, kura alga ir lielāka par visu darbinieku vidējo algu.
Sakarības nosaukums: Darbinieks
| Darbinieka ID | Vārds | Alga |
|---|---|---|
| 100011 | Smits | 50 000 |
| 100022 | Bils | 94 000 |
| 100027 | Viņš pats | 70550 |
| 100845 | Valdens | 80 000 |
| 115585 | Ēriks | 60 000 |
| 1100070 | Keita | 69 000 |
SQL vaicājums:
Izvade:
| Aviokompānija |
|---|
| Airbus 380 |
Paskaidrojums: Visu Airbus 380 pilotu kopējā alga = 298 830 un Boeing = 45000. Visu pilotu vidējā alga tabulā Pilots = 57305. Tā kā tikai visu Airbus 380 pilotu kopējā alga ir lielāka par vidējo iegūto algu, tāpēc Airbus 380 ir izejas attiecība.
Svarīgi punkti:
java metiena izņēmums
- SQL WITH klauzula ir piemērota, ja to lieto kopā ar sarežģītiem SQL priekšrakstiem, nevis vienkāršiem
- Tas arī ļauj sadalīt sarežģītos SQL vaicājumus mazākos, kas atvieglo sarežģīto vaicājumu atkļūdošanu un apstrādi.
- SQL WITH klauzula būtībā ir parastā apakšvaicājuma nomaiņa.
