ホームページ  >  記事  >  php教程  >  Oracle データベースでよく使用される 99 のクエリ ステートメント

Oracle データベースでよく使用される 99 のクエリ ステートメント

高洛峰
高洛峰オリジナル
2017-01-06 13:21:251471ブラウズ

1. emp から * を選択します。

2. emp から従業員番号、名前、ジョブを選択します。

4. emp からジョブを選択します。 select unique job from emp;

6. select unique empno, job from emp;

説明: 従業員番号が繰り返されていないため、この時点ではすべての列が繰り返されていないことが証明されており、重複する列を削除することはできません。

7. クエリ 従業員の番号、名前、およびジョブを出力しますが、表示形式は次のとおりです: 番号を持つ従業員は: 7369、名前は: smith、ジョブは: clear

select '番号を持つ従業員は: ' || empno || '、名前は ' || ename || '、ジョブは emp;

8. ename、sal を選択します。 12 emp; からの収入

9. 1500 を超えるすべての従業員情報を検索します

select * from emp where sal > 1500; 毎月のボーナスを受け取ることができる従業員の情報をクエリします
select * from emp where comm is not null;

11. ボーナスのない従業員の情報をクエリします
select * from emp where comm is null;

12. 基本給が 1500 を超え、ボーナスを受け取ることができる従業員の情報をクエリします
select * from emp where sal > 1500 and comm is not null;

13. from sal > 1500 or comm is not null;

14. 基本給与をクエリします。 1500 を超えていない、またはボーナスを受け取れない人

select * from emp where not(sal > 1500 and comm is not null);

15. 基本給が 1500 を超え、3000 未満であるすべての従業員情報をクエリします

select * from emp where sal > 1500 and sal

16. 基本給が 1500 以上 3000 以下のすべての従業員情報をクエリします。 = 1500 and sal select * from emp where sal between 1500 and 3000;
17. クエリ 1981 年に雇用されたすべての従業員に関する情報を出力します (1981 年 1 月 1 日から 1981 年 12 月 31 日までに雇用された従業員)

select * from emp where recruitate between '1- January-81' と '31- December-81';

18. smith という名前の従業員情報のクエリを要求します

select * from emp where ename = 'SMITH';

19. 名前が 7369, 7499, 7521 の従業員の特定情報を照会するリクエスト

select * from emp where empno = 7369 or empno = 7499 or empno = 7521;
select * from emp where empno in(7369, 7499, 7521 );

20. 従業員が 7369、7499、7521 の従業員ではないかどうかを確認するリクエスト

select * from empno not in (7369, 7499, 7521); 従業員を照会するリクエスト。名前が smith、allen、king の情報
select * from emp where ename in ('SMITH', 'ALLEN', 'KING');

22. 従業員名の 2 文字目に「M」が含まれるすべての従業員情報をクエリします。 "
select * from emp where ename like '_M%';

​​

23. 従業員をクエリする 名前に文字 M が含まれる従業員に関する情報
select * from emp where ename like '%M%';

24. へのリクエスト1981 年に雇用された従業員の情報をクエリします

select * from emp where recruitate like '%81%';

25 給与に 5 が含まれる従業員の情報をクエリします

select * from emp where sal like '%5%';

26従業員番号が 7369 ではない従業員情報をクエリします

select * from emp where empno != 7369;
select * from emp where empno <>

select * frm emp order by sal;

select * from emp order by sal asc;

28. 給与順に並べ替えるリクエスト

select * from emp order by sal desc; をすべてクエリする必要があります。 20 部門の従業員情報。給与が等しい場合、情報は雇用日の早い順に並べ替えられます。
select * from emp where deptno = 20 order by sal desc, recruitate asc;

30. 小文字を大文字に変更
dual;

31. 大文字を変更 小文字に変更
select lower('HELLO WORLD') from Dual;

32. smith という名前の従業員情報をクエリするリクエスト

select * from emp where ename = upper('smith');

33. initcap () 関数を使用して、単語の最初の文字を大文字にします

select initcap ('hello world') from Dual;


34. 従業員テーブルの従業員名の最初の文字を大文字に変更します

initcap(ename) from emp;


35. 文字列「hello」と「world」を連結します

select concat('hello ', 'world') from Dual;


36. 文字列を操作する一般的な文字処理関数

select substr('hello' , 1, 3) は文字列をインターセプトし、length('hello') は長さ文字列の replace('hello', 'l', 'x') デュアルからの文字列置換;

select substr('hello', 0, 3) 文字列をインターセプトします。 length('hello') は文字列の長さです。 string, replace('hello', 'l', 'x') デュアルからの文字列置換;

37. 全従業員の名前と最後の 3 文字を表示します
select ename, substr(ename, length(ename) -2) from emp;
select ename, substr(ename, -3, 3) from emp;

38数値関数を使用して丸め演算を実行します
selectround(789.536)fromdual; 整数は 10 桁目に丸められます

selectround(789.536, -2)fromdual;


41. trunc() 関数を使用すると保持されません。小数点は丸め演算を実行しません

select trunc(789.536) from Dual;


42 trunc() を通じて保持される小数点の数を指定することもできます

select trunc(789.536, 2) from Dual;


43. 桁数を表すには負の数値を使用します

select trunc(789.536, -2) from Dual ;


44. mod() 関数を使用して剰余演算を実行します

select mod(10, 3) from Dual ;


45. 部門の従業員 10 名が入社した週数を表示します (現在の日付 - 入社日 = 日数 / 7 = 週番号)

select empno, ename,round((sysdate - recruitate) / 7) from emp where deptno = 10;


46. 日付関数

months_between(): 指定された日付範囲内の月数を検索します

add_months(): 指定された日付に指定された月数を加算して、次の日付を検索します
next_day (): 指定された日付の次の日付

last_day(): 指定された日付の月の最終日を検索します


47。
select empno, ename, months_between(sysdate, recruitate) from emp;
select empno, ename 、round(months_between(sysdate, recruitate)) from emp;

48. select sysdate, add_months(sysdate, 4) from Dual;


49. select next_day(sysdate, 'Monday') from Dual;

50. last_day(sysdate) from Dual;

51. 変換関数

to_char(): 文字列に変換

to_number(): 数値に変換

to_date(): 日付に変換

52.全従業員の
従業員名、
名前、
to_char(hiredate, 'yyyy') 年、

to_char(hiredate, 'mm') 月、

to_char(hiredate, 'dd') 日
from emp;

select empno , ename, to_char(hiredate, 'yyyy-mm-dd') from emp;

select empno, ename, to_char(hiredate, ' fmyyyy-mm-dd') from emp;

53 番号、名前、およびクエリを実行します。全従業員の給与

select empno, ename, sal from emp;

select empno, ename, to_char(sal, '99,999') from emp;

select empno, ename, to_char(sal, 'L99,999') from emp;

select empno, ename, to_char(sal, '$99,999') from emp;


54. select to_number('123') + to_number( '123') from Dual;

55. 文字列を日付型に変換します
select to_date('2009-01-01', 'yyyy-mm-dd') from Dual;

56. 各従業員の年収 (必須とボーナス) を検索します

empno、ename、sal、comm、(sal + comm) を選択します。 * 12 from emp;

select empno, ename, sal, comm, nvl(comm, 0), (sal + nvl (comm, 0)) * 12 income from emp;

57 関数は次のようになります。 if...elsif...else ステートメント

select decode(1, 1, '内容は 1', 2, '内容は 2', 3, '内容は 3') from Dual;

58従業員の番号、名前、雇用日、勤務先を照会し、従業員の職務を次の情報で置き換えるよう要求します:

select empno 従業員番号、

ename 従業員名、
hiredate 雇用日、

decode(job,

' CLERK', '営業マン',
'Salesman', '営業担当者',
'MANAGER', 'マネージャー',
'ANALYST', '分析メンバー',
'PRESIDENT', '社長'
) 役職
empから。

59. デカルト積 (クロス結合)
select * from emp, dept;
select * from emp クロス結合 dept;

60. 内部結合

select * from emp e, dept d where e.deptno = d.deptno ;
select * from emp e inner join dept d on e.deptno = d.deptno;
select * from emp e join dept d on e.deptno = d.deptno;


select * from emp Natural join dept;
select * from emp e join dept d using(deptno);

62. 従業員番号、名前、部門番号、名前、住所のクエリを要求します

select e.empno、e.ename、d.deptno , d.dname, d.loc from emp e, dept d where e.deptno = d.deptno;

63. リクエストクエリ 従業員の名前、役職、従業員の直属の上司の名前
e.ename、e.job、m を選択します。 ename from emp e, emp m where e.mgr = m.empno;

64. 従業員の名前、役職、従業員の直属の上司の名前、および部門の名前を照会するリクエスト
e.ename、e を選択します。 job, m.ename, d.dname from emp e, emp m, dept d ここで、e.mgr = m.empno および e.deptno = d.deptno;

65. 社内の各従業員の名前、給与、部署名、給与水準(給与水準)、および社内のリーダーの名前と給与水準を照会する必要があります
e.ename、e.sal、dを選択します。 dname 、 s.grade、 m.ename、 m.sal、 ms.grade
from emp e、 dept d、 salgrade s、 emp m、 salgrade ms
ここで、 e.deptno = d.deptno
と s の間の e.sal。 losal と s. hisal
および e.mgr = m.empno
と ms.losal と ms. hisal の間の m.sal;

select e.ename、
e.sal、
d.dname、
decode(s.グレード 、1、「第 5 レベル」、2、「第 4 レベル」、3、「第 3 レベル」、4、「第 2 レベル」、5、「第 1 レベル」)、
m.ename、
sal、
decode。 (ms.grade, 1, '5 年生', 2, '4 年生', 3, '3 年生', 4, '2 年生', 5, '1 年生')
emp e、dept d、salgrade s より, emp m, salgrade ms
ここで、e.deptno = d.deptno および s.losal と s.hisal の間の e.sal、および ms.losal と ms. Hisal の間の e.mgr = m.empno
および m.sal;

66. select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno = d.deptno;
select empno, ename, d.deptno, dname , loc from emp e inner join dept d on e.deptno = d.deptno;

67. 左外部結合
select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno = d .deptno(+);
select empno 、ename、d.deptno、dname、loc from emp e left inner join dept d on e.deptno = d.deptno;
select empno、ename、d.deptno、dname、loc from emp e left inner join dept d on e。 deptno = d.deptno(+);

68. 右外部結合
select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno(+ ) = d.deptno;
select empno 、ename、d.deptno、dname、loc from emp e right inner join dept d on e.deptno = d.deptno;
select empno、ename、d.deptno、dname、loc from emp e right inner join dept d on e。 deptno = d.deptno;

69. emp e、emp m から e.empno、e.ename、m.empno、m.ename を選択します。ここで、e.mgr = m.empno; を選択します。 e.ename, m.empno, m.ename from emp e, emp m where e.mgr = m.empno(+);

71.

select * from emp e, dept d where e.deptno = d.deptnoそして d.deptno = 30;

select * from emp e inner join dept d on e.deptno = d.deptno where d.deptno = 30;
select * from emp e join dept d on e.deptno = d.deptno where d.deptno = 30;
select * from emp e Natural join dept d where deptno = 30;
select * from emp e join dept d using(deptno) where deptno = 30;

72.

select e.ename, d .deptno、d.dname、d.loc from emp e right external join dept d on e.deptno = d.deptno;

select e.ename、d.deptno、d.dname、d.loc from emp e right external join dept d on e.deptno = d.deptno;
select e.ename, d.deptno, d.dname, d.loc from emp e, dept d where e.deptno(+) = d.deptno;

73. count(ename) from emp;

74. select min(sal) from emp;

76. select sum(sal) from emp;

77. sal) from emp;

78. select sum(sal) from emp where deptno = 20;

79. select avg(sal) from emp where deptno = 20;

80. select deptno, count(deptno) from emp group by deptno;

select deptno, count(empno) from emp group by deptno;

81. 各部門の平均給与を求めます

select deptno, avg(sal) from emp group by deptno;

82. 部門ごとにグループ化し、部門名と各部門の従業員数を表示します

select d.dname, count(e.empno) from emp e, dept d

where e.deptno = d.deptno
group by d.dname;

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

83. 平均給与が 2000 を超える部門番号と平均給与を表示するリクエスト

select deptno, avg(sal) by deptno getting avg( sal) > ; 2000;

84. 非販売スタッフの役職と、同じ職務に従事する従業員の月給の合計が 5000 を超えることを満足する必要があります。 , 出力結果は合計月給の昇順です。

select job, sum(sal) su from emp where job <> sum(sal) > 5000 order by su;


select temp.job, sum(temp.sal) s

from (select job, sal from emp e where job <> 'Salesman') temp

group by temp.job
having sum(temp.sal) > ; 5000

order by s;


85. 平均給与が最も高い部門の給与を検索します
deptno によって emp グループから max(avg(sal)) を選択します。

86。給与は従業員番号 7654 より高いです

select * from emp where sal >(select sal from emp where empno = 7654);

87. 給与が 7654 より高く、7788 と同じ仕事に従事しているすべての従業員の情報を照会するリクエスト
select * from emp
where sal >(select sal from emp where empno = 7654)
and job = (select job from emp where empno = 7788);

88. 給与が最も低い従業員の名前、職種、給与をクエリするリクエスト
select ename, job, sal from emp where sal = (select min(sal) from emp);

89. クエリのリクエスト 出力: 部門名、部門の従業員数、部門の平均給与、部門内で最も給与の低い従業員の名前
select d.dname、temp.c、temp. a, e.ename
from dept d,
(select deptno, count (empno) c, avg(sal) a, min(sal) m from emp group by deptno) temp,
emp e
where d.deptno = temp .deptno および e.sal = temp.m;

select d. deptno、temp.dname、temp.c、temp.a、e.ename、e.sal
from
(select d.dname , count(e. empno) c, avg(e.sal) a, min(e. sal) m
from emp e, dept d
where e.deptno = d.deptno
group by d.dname) temp,
emp e,
dept d
where temp.m = e.sal
and temp.dname = d.dname;

90. 各部門の最低賃金従業員の情報を検索します
select * from emp where sal in(select min(sal) from emp グループ by deptno);
select * from emp where sal =any (select min(sal) from emp group by deptno);
select * from
(select min(sal) m from emp group by deptno) temp,
emp e
where e.sal = temp.m;

91. 例 90 では、サブクエリ条件の最低 (少額) 給与より大きい従業員情報
select * from emp where sal >any(select min(sal) ) from emp group by deptno);
select * from emp where sal > (select min(min(sal)) from emp group by deptno);

92 例 90 では、従業員情報が最大 (サブクエリ条件の給与
select * from emp where sal select * from emp where sal < (select max(min(sal)) from emp group by deptno);

93. 例 90 では、Biz クエリ条件で給与が最も高い従業員情報をクエリします
select * from emp where sal >all(select min(sal) from emp group by deptno );
select * from emp where sal > (select max( min(sal)) from emp group by deptno);

94 例 90 では、従業員情報がサブクエリの最低 (少額) 給与よりも小さいです。条件
select * from emp where sal select * from emp where sal

95. 20 部門のボーナスなしの従業員に関する情報を検索します
select * from emp where (sal, nvl(comm, -1)) in (select sal, nvl(comm, -1) from emp where deptno = 20);
select * from emp where deptno = 20 and comm is null;

96。union 演算子は、2 つのクエリによって選択されたすべての一意の行を返します。
select deptno from dept; 2 つのクエリによって選択されたすべての行 (重複を含む)

select deptno from emp Union all select deptno from dept;


98。 intersect 演算子は、両方のクエリに存在する行のみを返します。

select deptno from emp intersect select deptno from dept;


99. マイナス演算子は、最初のクエリで選択されたが 2 番目のクエリでは選択されなかった行、つまり 2 番目のクエリ結果に表示される行は最初のクエリ結果から除外されます

select で表される行のみを返します。 dept の deptno から emp;

の deptno を選択してください
Oracle データベースでよく使用される 99 個のクエリ ステートメントに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

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