Maison  >  Article  >  base de données  >  A quoi sert with comme dans Oracle

A quoi sert with comme dans Oracle

WBOY
WBOYoriginal
2022-02-28 10:57:2026924parcourir

Dans Oracle, l'instruction "with as" équivaut à créer une table temporaire et à placer les résultats intermédiaires dans une instruction dans l'espace table temporaire. Vous pouvez également utiliser cette instruction pour définir plusieurs tables temporaires. La syntaxe est "with temptablename". ([liste de champs]) comme (sélectionner ...)".

A quoi sert with comme dans Oracle

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.

Quelle est l'utilisation de with as dans Oracle ?

La clause with as dans la requête Oracle équivaut à créer une table temporaire et à placer des résultats intermédiaires dans une instruction dans l'espace table temporaire. Nommez la sous-requête dans la requête et placez-la au début de l'instruction SELECT. La syntaxe est la suivante :

with temptablename([字段列表]) as (select ...)
select ...

Vous pouvez également utiliser la clause with as pour définir plusieurs tables temporaires. Lors de la création de plusieurs tables temporaires, les tables temporaires suivantes peuvent accéder aux tables temporaires précédemment construites. La syntaxe est la suivante :

with
temptablename1([字段列表]) as (select ...),
temptablename2([字段列表]) as (select ...)
select ...

Description :

(1) La table temporaire créée à l'aide de la clause with as sera éliminée une fois la requête de récupération terminée.

(2) Lors de la création de plusieurs tables temporaires, ces dernières peuvent accéder aux tables temporaires qui ont été construites précédemment.

(3) Lorsqu'une requête comporte plusieurs sous-requêtes identiques, la clause with as est généralement utilisée, car les résultats de la sous-requête sont stockés dans la table temporaire de la mémoire et l'efficacité d'exécution est élevée.

Exemple d'utilisation

Requérez quels départements ont un salaire total supérieur au salaire moyen de tous les départements :

1 Sans as

Le code et les résultats de la requête sont les suivants :

SELECT deptno,total_sal
FROM (SELECT deptno,sum(sal) as total_sal
      FROM employee
      GROUP BY deptno) temp1
WHERE total_sal>(
      SELECT avg(total_sal)
      FROM (SELECT deptno,sum(sal) as total_sal
      FROM employee
      GROUP BY deptno)
10:46:44  10        );
    DEPTNO  TOTAL_SAL
---------- ----------
    20 5701632000
Elapsed: 00:00:02.33

Dans cet exemple, il apparaît. dans une requête Deux sous-requêtes identiques.

2. Utiliser with as

10:45:47 SQL> 
WITH tempA AS
     (SELECT deptno,sum(sal) as total_sal
      FROM employee
      GROUP BY deptno)
SELECT *
FROM tempA
WHERE total_sal>(
     SELECT AVG(total_sal)
     FROM tempA
10:46:02  10       );
    DEPTNO  TOTAL_SAL
---------- ----------
    20 5701632000
Elapsed: 00:00:01.42

La comparaison des deux requêtes montre que l'utilisation de la clause with as peut simplifier l'instruction de requête et améliorer la vitesse de la requête.

Tutoriel recommandé : "Tutoriel vidéo Oracle"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:A quoi sert if dans OracleArticle suivant:A quoi sert if dans Oracle