Table des matières
id
Maison base de données Oracle Comment faire une requête récursive dans Oracle

Comment faire une requête récursive dans Oracle

Apr 18, 2023 am 09:07 AM

La requête récursive de la base de données Oracle est une technologie très utile. La requête récursive est souvent utilisée lors de l'interrogation de données complexes telles que la structure arborescente, la structure organisationnelle, la relation hiérarchique, etc. La requête récursive nous permet d'utiliser une seule instruction SQL pour compléter la requête de l'ensemble de la structure arborescente sans utiliser une logique de boucle complexe pour parcourir niveau par niveau.

Cet article expliquera comment effectuer des requêtes récursives dans Oracle et montrera un exemple pour illustrer comment interroger une simple relation de nœuds.

1. Le principe de la requête récursive

La requête récursive est implémentée sur la base du principe de joindre sa propre table. L'auto-adhésion fait référence au processus de connexion elle-même, et la requête récursive est réalisée par une correspondance cyclique de chaque enregistrement connecté à lui-même.

Dans Oracle, nous devons généralement utiliser une expression publique AVEC RECURSIVE ou CTE (Common Table Expression) pour implémenter des requêtes récursives. Grâce à CTE, nous pouvons créer un ensemble de tables virtuelles pouvant se référencer les unes les autres, simplifiant ainsi le processus de requêtes récursives.

2. Syntaxe de la requête récursive

La syntaxe de base de la requête récursive est la suivante :

AVEC( ) AS
(

UNION ALL

)

Parmi eux, l'expression publique récursive contient deux parties :

(1) Récursion Sélection initiale de l'expression commune : La sélection initiale est l'endroit où commence la requête récursive, renvoyant un ensemble d'enregistrements qui correspondent aux colonnes définies dans l'expression commune récursive.

(2) La partie récursive de l'expression publique récursive : La partie récursive est un processus de requête récursif, qui élargira progressivement la portée de la requête.

Le corps de la requête récursive est composé d'instructions de requête et est utilisé pour filtrer et afficher les résultats de la requête récursive.

3. Exemple de requête récursive

Ensuite, nous utiliserons un exemple simple pour montrer comment utiliser une requête récursive pour interroger les relations de nœuds.

Dans l'exemple suivant, nous supposons qu'il existe une table de relations entre nœuds avec la structure suivante :

CREATE TABLE node(
id INT PRIMARY KEY,
node_name VARCHAR2(50),
parent_id INT
);

where, id Indique l'identifiant unique du nœud, node_name indique le nom du nœud et parent_id indique l'ID du nœud parent du nœud actuel.

Maintenant, nous voulons interroger tous les nœuds enfants d'un certain nœud. Nous pouvons utiliser une requête récursive pour y parvenir.

Tout d’abord, nous devons trouver un choix initial, c’est là que nous commençons notre requête. Dans cet exemple, nous spécifions l'ID du nœud de requête comme 1 et l'instruction SQL est la suivante :

WITH node_cte(id, node_name, parent_id, level) AS
(

SELECT id, node_name, parent_id, 1 AS level
FROM node
WHERE id = 1
UNION ALL
SELECT n.id, n.node_name, n.parent_id, level + 1 
FROM node n, node_cte c
WHERE n.parent_id = c.id
Copier après la connexion

)
SELECT * FROM node_cte;

In Dans cet exemple, nous avons créé une expression publique appelée node_cte. Lors de la sélection initiale, nous avons sélectionné l'enregistrement de nœud avec l'ID de nœud 1 et défini son attribut de niveau sur 1.

Dans la partie récursive, nous interrogeons vers le bas étape par étape en connectant notre propre table et l'expression publique actuelle jusqu'à ce que nous trouvions tous les nœuds enfants. Dans la condition de jointure, nous utilisons c.id pour représenter l'ID de nœud du niveau précédent, obtenant ainsi l'effet d'une requête récursive.

finalement, nous utilisons l'instruction SELECT pour afficher les résultats de la requête et obtenir la sortie suivante:

id

2 Child1 1 1 2

3 petit-enfant1 2 3
4 petit-enfant2 2 3
5 Child2 1 2d6 petit-enfant3 5 3
7 petit-enfant4 5 3

Dans le résultat, nous pouvons voir qu'à partir des nœuds avec l'ID de nœud à 1, vérifiez tous les sous-nœuds, les niveaux augmentent étape par étape.

Résumé :

Cet article présente brièvement le principe, la syntaxe et un exemple de requête récursive dans une base de données Oracle. La requête récursive est une méthode de requête efficace et pratique, très utile lorsqu'il s'agit de données hiérarchiques et de structure organisationnelle. La maîtrise de la technologie de requêtes récursives peut nous aider à traiter et à analyser les données plus rapidement et à améliorer l'efficacité des requêtes de données.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer des utilisateurs et des rôles dans Oracle? Comment créer des utilisateurs et des rôles dans Oracle? Mar 17, 2025 pm 06:41 PM

L'article explique comment créer des utilisateurs et des rôles dans Oracle à l'aide de commandes SQL, et discute des meilleures pratiques pour gérer les autorisations des utilisateurs, y compris l'utilisation des rôles, en suivant le principe des moindres privilèges et des audits réguliers.

Comment effectuer des sauvegardes en ligne dans Oracle avec un minimum de temps d'arrêt? Comment effectuer des sauvegardes en ligne dans Oracle avec un minimum de temps d'arrêt? Mar 17, 2025 pm 06:39 PM

L'article traite des méthodes pour effectuer des sauvegardes en ligne dans Oracle avec un minimum de temps d'arrêt en utilisant RMAN, les meilleures pratiques pour réduire les temps d'arrêt, assurer la cohérence des données et surveiller les progrès de la sauvegarde.

Comment configurer le chiffrement dans Oracle à l'aide du chiffrement transparent des données (TDE)? Comment configurer le chiffrement dans Oracle à l'aide du chiffrement transparent des données (TDE)? Mar 17, 2025 pm 06:43 PM

L'article décrit les étapes pour configurer le chiffrement transparent des données (TDE) dans Oracle, détaillant la création du portefeuille, permettant le TDE et le chiffrement des données à différents niveaux. Il discute également des avantages de TDE comme la protection et la conformité des données, et comment Veri

Comment utiliser le référentiel de charge de travail automatique (AWR) et le moniteur de diagnostic de base de données automatique (ADDM) dans Oracle? Comment utiliser le référentiel de charge de travail automatique (AWR) et le moniteur de diagnostic de base de données automatique (ADDM) dans Oracle? Mar 17, 2025 pm 06:44 PM

L'article explique comment utiliser AWR et ADDM d'Oracle pour l'optimisation des performances de la base de données. Il détaille la génération et l'analyse des rapports AWR, et l'utilisation d'ADDM pour identifier et résoudre les goulots d'étranglement des performances.

Comment utiliser la technologie Flashback pour se remettre de la corruption logique des données? Comment utiliser la technologie Flashback pour se remettre de la corruption logique des données? Mar 14, 2025 pm 05:43 PM

L'article discute de l'utilisation de la technologie Flashback d'Oracle pour se remettre de la corruption logique des données, des étapes de détail de la mise en œuvre et de la garantie de l'intégrité des données après la récupération.

Oracle PL / SQL Deep Dive: Mastering Procédures, fonctions et packages Oracle PL / SQL Deep Dive: Mastering Procédures, fonctions et packages Apr 03, 2025 am 12:03 AM

Les procédures, fonctions et packages dans OraclePL / SQL sont utilisés pour effectuer des opérations, renvoyer des valeurs et organiser le code, respectivement. 1. Le processus est utilisé pour effectuer des opérations telles que la sortie des salutations. 2. La fonction est utilisée pour calculer et renvoyer une valeur, comme le calcul de la somme de deux nombres. 3. Les packages sont utilisés pour organiser des éléments pertinents et améliorer la modularité et la maintenabilité du code, telles que les packages qui gèrent l'inventaire.

Comment créer et gérer des tables, des vues, des index et d'autres objets de base de données dans Oracle? Comment créer et gérer des tables, des vues, des index et d'autres objets de base de données dans Oracle? Mar 14, 2025 pm 05:52 PM

L'article discute de la création et de la gestion d'objets de base de données Oracle comme des tables, des vues et des index à l'aide de commandes SQL. Il couvre les meilleures pratiques d'optimisation des performances, d'assurer l'intégrité et la sécurité des données et l'utilisation d'outils pour l'automatisation.

Comment effectuer des opérations de basculement et de basculement dans Oracle Data Guard? Comment effectuer des opérations de basculement et de basculement dans Oracle Data Guard? Mar 17, 2025 pm 06:37 PM

L'article détaille les procédures de basculement et de basculement dans Oracle Data Guard, soulignant leurs différences, leur planification et leurs tests pour minimiser la perte de données et assurer des opérations en douceur.

See all articles