Maison >php教程 >PHP开发 >Requête enfant d'apprentissage de base Oracle

Requête enfant d'apprentissage de base Oracle

高洛峰
高洛峰original
2017-01-06 10:37:121408parcourir

Tout d'abord, lorsque vous utilisez des sous-requêtes, veuillez noter que les sous-requêtes peuvent être imbriquées sur plusieurs niveaux et que les sous-requêtes doivent être placées entre parenthèses (). Jetons un coup d'œil à l'introduction détaillée ci-dessous.

Introduction de base

1, où : la sous-requête renverra généralement une seule ligne, une seule colonne, une seule ligne, plusieurs colonnes, plusieurs lignes et une seule colonne

2, ayant : la sous-requête renverra une seule ligne, une seule colonne, tandis que Indique que les fonctions statistiques doivent être utilisées

3, from : la sous-requête renvoie des données multi-lignes et multi-colonnes (structure de table) ; 🎜>4, select : renvoie une seule ligne et une seule colonne (généralement non utilisée) ;

Exemple de détails

où (filtrage des lignes de données) :

a : interroger l'employé informations inférieures au salaire moyen de l’entreprise.

La requête ci-dessus renvoie une seule ligne et une seule colonne qui peuvent être utilisées comme condition de filtre de la clause Where
select * from emp where sal<(select avg(sal) from emp);

b : interroger les informations du premier employé embauché par ; l'entreprise.

C : Rechercher des informations sur les employés qui ont le même travail que Scott et qui ont le même salaire.
select * from emp where hiredate= (select MIN(hiredate) from emp);

in : fait référence au même contenu renvoyé par la sous-requête.
select* from emp
 
where (job,sal) =( select job,sal
 
from emp
 
where ename =&#39;scott&#39;) and ename <>&#39;scott&#39;;

pas dans :
select * from emp where sal in (select sal from emp where job = &#39;manager&#39;);

Il ne peut pas y avoir de valeur nulle dans la sous-requête.
select* from emp where sal not in(select sal from emp where job=&#39;manager&#39;);

any :

est supérieur à la valeur maximale renvoyée par la sous-requête
select* from emp where sal = any(select sal from emp where job=&#39;manager&#39;);
 
select* from emp where sal > any(select sal from emp where job=&#39;manager&#39;);

est inférieur à la valeur maximale renvoyée par la sous-requête
select* from emp where sal < any(select sal from emp where job=&#39;manager&#39;);

all :

all : supérieur à la valeur maximale renvoyée par la sous-requête


Le la probabilité que la sous-requête soit très élevée ;


avoir :

Interroger le titre du poste, le nombre de postes et le salaire moyen supérieur au salaire moyen de l'entreprise.

select (généralement non utilisé) :
select job,count(empno),avg(sal) from emp group by job 
having avg(sal)>(select avg(sal) from emp);

Interrogez le numéro, le nom, le poste et le nom du service de chaque employé.

(1 n) requêtes ;
select e.empno,e.ename,e.job,
 
(select d.dname from dept d whered.deptno=e.deptno)from emp e;

à partir de (point clé) :

Requêtez le nom, l'emplacement et le nombre de personnes dans chaque département.

(Requête multi-tables)
select d.dname,d.loc,count(e.empno)
 
from emp e,dept d
 
where e.deptno(+)=d.deptno
 
group by d.dname,d.loc;

Les requêtes et sous-requêtes multi-tables peuvent obtenir des statistiques, alors quelle méthode est la meilleure ?
分步1: select d.deptno,d.dname,d.locfrom dept d;
 
 分步2:select deptno,count(empno)from emp group by deptno;
 
 
 
正确的查询:
 
select d.deptno,d.dname,d.loc,temp.count
from dept d,(select deptno,count(empno) count from emp
group by deptno) temp
where d.deptno=temp.deptno(+);

Réponse : Dans le travail réel, l'objectif principal de la sous-requête est de résoudre le problème de performances des requêtes multi-tables, elle est donc la plus utilisée en développement. Le rôle le plus important est de résoudre le problème du produit cartésien affectant les performances causé par les requêtes multi-tables.

Requête complexe = requête simple, requête limitée, requête multi-tables, requête statistique groupée, sous-requête ;

Résumé

Ce qui précède concerne la sous-requête Oracle, j'espère. Le contenu de cet article sera utile. Il sera utile à tout le monde d'apprendre ou d'utiliser Oracle. Si vous avez des questions, vous pouvez laisser un message pour communiquer.

Pour plus d'articles liés à l'apprentissage de base d'Oracle, veuillez faire attention au site Web PHP 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