ホームページ  >  記事  >  php教程  >  Oracle の基本的な学習の子クエリ

Oracle の基本的な学習の子クエリ

高洛峰
高洛峰オリジナル
2017-01-06 10:37:121378ブラウズ

まず、サブクエリを使用するときは、サブクエリは複数のレベルにネストできることと、サブクエリを括弧 () で囲む必要があることに注意してください。以下で詳しく説明します。

基本的な概要

1、ただし: サブクエリは通常、単一の行、単一の列、単一の行、複数の列、複数の行、および単一の列を返します。

2 の内容: サブクエリは単一の行を返します。 、単一の列であり、統計関数が使用されることも示します。

3、from: サブクエリは複数行および複数列のデータ (テーブル構造) を返します。

4、select: 単一の行と単一列 (通常は使用されません);

例の詳細な説明

where (フィルター データ行操作):

a: 給与が会社の平均給与を下回る従業員に関する情報をクエリします。

select * from emp where sal<(select avg(sal) from emp);

上記のクエリは 1 つの行と 1 つの列を返します。これは where 句のフィルター条件として使用できます。

b: 会社に最初に雇用された従業員の情報をクエリします。

select * from emp where hiredate= (select MIN(hiredate) from emp);

C: scott と同じ仕事に就き、同じ給料をもらっている従業員に関する情報をクエリします。

select* from emp
 
where (job,sal) =( select job,sal
 
from emp
 
where ename =&#39;scott&#39;) and ename <>&#39;scott&#39;;

in: サブクエリによって返された同じコンテンツを参照します。

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

が入っていません:

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

はサブクエリ内で空にすることはできません。

any:

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;);

はサブクエリによって返される最大値より大きい

select* from emp where sal < any(select sal from emp where job=&#39;manager&#39;);

はサブクエリによって返される最大値より小さい

all:


select job,count(empno),avg(sal) from emp group by job 
having avg(sal)>(select avg(sal) from emp);

select (通常は使用されません):


各従業員の番号、名前、役職、部門名をクエリします。

select e.empno,e.ename,e.job,
 
(select d.dname from dept d whered.deptno=e.deptno)from emp e;

(1+n) クエリ;

from(キーポイント):

各部門の名前、場所、人数をクエリします。

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

(複数テーブルクエリ)

分步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(+);

複数テーブルクエリとサブクエリは両方とも統計を取得できますが、どちらの方法が優れていますか?

回答: 実際の作業では、サブクエリの主な目的は複数テーブルクエリのパフォーマンス問題を解決することであるため、開発ではサブクエリが最もよく使用されます。最大の役割は、複数テーブルのクエリによって発生するデカルト積がパフォーマンスに影響を与える問題を解決することです。

複雑なクエリ = 単純なクエリ + 限定されたクエリ + 複数テーブルのクエリ + グループ統計クエリ + サブクエリ;

概要

以上は Oracle のサブクエリに関するものであり、学習している人や使用している人にとって役立つことを願っています。 Oracle ヘルプ、ご質問がある場合は、メッセージを残して連絡してください。

Oracle の基礎学習に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。