Heim > php教程 > PHP开发 > Untergeordnete Abfrage für Oracle Basic Learning

Untergeordnete Abfrage für Oracle Basic Learning

高洛峰
Freigeben: 2017-01-06 10:37:12
Original
1415 Leute haben es durchsucht

Bitte beachten Sie bei der Verwendung von Unterabfragen zunächst, dass Unterabfragen auf mehreren Ebenen verschachtelt sein können und in Klammern () eingeschlossen werden müssen.

Grundlegende Einführung

1, wobei: Unterabfrage im Allgemeinen eine einzelne Zeile, eine einzelne Spalte, eine einzelne Zeile, mehrere Spalten, mehrere Zeilen und eine einzelne Spalte zurückgibt

2, mit : Unterabfrage gibt eine einzelne Zeile und einzelne Spalte zurück, während Gibt an, dass statistische Funktionen verwendet werden sollen

3, von: Unterabfrage gibt mehrzeilige und mehrspaltige Daten zurück (Tabellenstruktur); 🎜>4, wählen Sie: Gibt eine einzelne Zeile und eine einzelne Spalte zurück (im Allgemeinen nicht verwendet);

Beispieldetails

wobei (Datenzeilen filtern):

a: Mitarbeiter abfragen Informationen, die unter dem Durchschnittsgehalt des Unternehmens liegen.

Die obige Abfrage gibt eine einzelne Zeile und eine einzelne Spalte zurück, die als Filterbedingung der where-Klausel verwendet werden können
select * from emp where sal<(select avg(sal) from emp);
Nach dem Login kopieren

b: Fragen Sie die Informationen des ersten Mitarbeiters ab, der von eingestellt wurde das Unternehmen.

C: Informationen zu Mitarbeitern abfragen, die den gleichen Job wie Scott haben und das gleiche Gehalt haben.
select * from emp where hiredate= (select MIN(hiredate) from emp);
Nach dem Login kopieren

in: bezieht sich auf denselben Inhalt, der von der Unterabfrage zurückgegeben wird.
select* from emp
 
where (job,sal) =( select job,sal
 
from emp
 
where ename =&#39;scott&#39;) and ename <>&#39;scott&#39;;
Nach dem Login kopieren

nicht in:
select * from emp where sal in (select sal from emp where job = &#39;manager&#39;);
Nach dem Login kopieren

Die Unterabfrage darf nicht null sein.
select* from emp where sal not in(select sal from emp where job=&#39;manager&#39;);
Nach dem Login kopieren

beliebig:

ist größer als der von der Unterabfrage zurückgegebene Maximalwert
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;);
Nach dem Login kopieren

ist kleiner als der von der Unterabfrage zurückgegebene Maximalwert
select* from emp where sal < any(select sal from emp where job=&#39;manager&#39;);
Nach dem Login kopieren

alle:

alle: größer als der von der Unterabfrage zurückgegebene Maximalwert


Die Wahrscheinlichkeit, dass die Unterabfrage sehr hoch ist;


mit:

Fragen Sie die Berufsbezeichnung, die Anzahl der Positionen und das Durchschnittsgehalt ab, das über dem Durchschnittsgehalt des Unternehmens liegt.

Auswählen (im Allgemeinen nicht verwendet):
select job,count(empno),avg(sal) from emp group by job 
having avg(sal)>(select avg(sal) from emp);
Nach dem Login kopieren

Fragen Sie die Nummer, den Namen, die Position und den Abteilungsnamen jedes Mitarbeiters ab.

(1+n) Abfragen;
select e.empno,e.ename,e.job,
 
(select d.dname from dept d whered.deptno=e.deptno)from emp e;
Nach dem Login kopieren

von (wichtiger Punkt):

Fragen Sie den Namen, den Standort und die Anzahl der Personen in jeder Abteilung ab.

(Mehrtabellenabfrage)
select d.dname,d.loc,count(e.empno)
 
from emp e,dept d
 
where e.deptno(+)=d.deptno
 
group by d.dname,d.loc;
Nach dem Login kopieren

Mehrtabellenabfragen und Unterabfragen können Statistiken erzielen. Welche Methode ist also besser?
分步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(+);
Nach dem Login kopieren

Antwort: In der tatsächlichen Arbeit besteht der Hauptzweck von Unterabfragen darin, das Leistungsproblem von Abfragen mit mehreren Tabellen zu lösen, weshalb sie in der Entwicklung am häufigsten verwendet wird. Die größte Aufgabe besteht darin, das Problem zu lösen, dass kartesische Produkte die Leistung beeinträchtigen, die durch Abfragen mit mehreren Tabellen verursacht werden.

Komplexe Abfrage = einfache Abfrage + begrenzte Abfrage + Abfrage mit mehreren Tabellen + statistische Gruppenabfrage + Unterabfrage;

Zusammenfassung

Das Obige dreht sich hoffentlich um die Oracle-Unterabfrage Der Inhalt dieses Artikels kann für alle beim Erlernen oder Verwenden von Oracle hilfreich sein. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen.

Weitere Artikel zum Oracle-Grundlernen finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage