日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ORACLE SQL:经典查询练手第一篇

發(fā)布時間:2024/9/20 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE SQL:经典查询练手第一篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  本文使用的實例表結構與表的數(shù)據(jù)如下:
  scott.emp員工表結構如下:
  Name???? Type???????? Nullable Default Comments
  -------- ------------ -------- ------- --------
  EMPNO??? NUMBER(4)?????????????????????? 員工號
  ENAME??? VARCHAR2(10) Y????????????????? 員工姓名
  JOB????? VARCHAR2(9)? Y????????????????? 工作
  MGR????? NUMBER(4)??? Y????????????????? 上級編號
  HIREDATE DATE???????? Y????????????????? 雇傭日期
  SAL????? NUMBER(7,2)? Y????????????????? 薪金
  COMM???? NUMBER(7,2)? Y????????????????? 傭金
  DEPTNO?? NUMBER(2)??? Y????????????????? 部門編號
  scott.dept部門表
  Name?? Type???????? Nullable Default Comments
  ------ ------------ -------- ------- --------
  DEPTNO NUMBER(2)???????????????????????? 部門編號
  DNAME? VARCHAR2(14) Y??????????????????? 部門名稱
  LOC??? VARCHAR2(13) Y??????????????????? 地點
  提示:工資 = 薪金 + 傭金
  scott.emp表的現(xiàn)有數(shù)據(jù)如下:
  SQL> select * from emp;
  EMPNO ENAME????? JOB???????? MGR HIREDATE????????? SAL????? COMM DEPTNO
  ----- ---------- --------- ----- ----------- --------- --------- ------
  7369 SMITH????? CLERK????? 7902 1980-12-17???? 800.00?????????????? 20
  7499 ALLEN????? SALESMAN?? 7698 1981-2-20???? 1600.00??? 300.00???? 30
  7521 WARD?????? SALESMAN?? 7698 1981-2-22???? 1250.00??? 500.00???? 30
  7566 JONES????? MANAGER??? 7839 1981-4-2????? 2975.00?????????????? 20
  7654 MARTIN???? SALESMAN?? 7698 1981-9-28???? 1250.00?? 1400.00???? 30
  7698 BLAKE????? MANAGER??? 7839 1981-5-1????? 2850.00?????????????? 30
  7782 CLARK????? MANAGER??? 7839 1981-6-9????? 2450.00?????????????? 10
  7788 SCOTT????? ANALYST??? 7566 1987-4-19???? 4000.00?????????????? 20
  7839 KING?????? PRESIDENT?????? 1981-11-17??? 5000.00?????????????? 10
  7844 TURNER???? SALESMAN?? 7698 1981-9-8????? 1500.00????? 0.00???? 30
  7876 ADAMS????? CLERK????? 7788 1987-5-23???? 1100.00?????????????? 20
  7900 JAMES????? CLERK????? 7698 1981-12-3????? 950.00?????????????? 30
  7902 FORD?????? ANALYST??? 7566 1981-12-3???? 3000.00?????????????? 20
  7934 MILLER???? CLERK????? 7782 1982-1-23???? 1300.00?????????????? 10
  102 EricHu???? Developer? 1455 2011-5-26 1?? 5500.00???? 14.00???? 10
  104 huyong???? PM???????? 1455 2011-5-26 1?? 5500.00???? 14.00???? 10
  105 WANGJING?? Developer? 1455 2011-5-26 1?? 5500.00???? 14.00???? 10
  17 rows selected
  Scott.dept表的現(xiàn)有數(shù)據(jù)如下:
  SQL> select * from dept;
  DEPTNO DNAME????????? LOC
  ------ -------------- -------------
  10 ACCOUNTING???? NEW YORK
  20 RESEARCH?????? DALLAS
  30 SALES????????? CHICAGO
  40 OPERATIONS???? BOSTON
  50 50abc????????? 50def
  60 Developer????? HaiKou
  6 rows selected
  用SQL完成以下問題列表:
  1.列出至少有一個員工的所有部門。
  2.列出薪金比“SMITH”多的所有員工。
  3.列出所有員工的姓名及其直接上級的姓名。
  4.列出受雇日期早于其直接上級的所有員工。
  5.列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門
  6.列出所有“CLERK”(辦事員)的姓名及其部門名稱。
  7.列出最低薪金大于1500的各種工作。
  8.列出在部門“SALES”(銷售部)工作的員工的姓名,假定不知道銷售部的部門編號。
  9.列出薪金高于公司平均薪金的所有員工。
  10.列出與“SCOTT”從事相同工作的所有員工。
  11.列出薪金等于部門30中員工的薪金的所有員工的姓名和薪金。
  12.列出薪金高于在部門30工作的所有員工的薪金的員工姓名和薪金。
  13.列出在每個部門工作的員工數(shù)量、平均工資和平均服務期限。
  14.列出所有員工的姓名、部門名稱和工資。
  15.列出所有部門的詳細信息和部門人數(shù)。
  16.列出各種工作的最低工資。
  17.列出各個部門的MANAGER(經(jīng)理)的最低薪金。
  18.列出所有員工的年工資,按年薪從低到高排序。
  各答案如下,歡迎大家給出不出的解答方式。
  --------1.列出至少有一個員工的所有部門。---------
  SQL> select dname from dept where deptno in(select deptno from emp);
  DNAME
  --------------
  RESEARCH
  SALES
  ACCOUNTING
  --------或--------
  SQL> select dname from dept where deptno in(select deptno from emp group by deptno having count(deptno) >=1);
  DNAME
  --------------
  ACCOUNTING
  RESEARCH
  SALES
  --------2.列出薪金比“SMITH”多的所有員工。----------
  SQL> select * from emp where sal > (select sal from emp where ename = 'SMITH');
  EMPNO ENAME????? JOB???????? MGR HIREDATE????????? SAL????? COMM DEPTNO
  ----- ---------- --------- ----- ----------- --------- --------- ------
  7499 ALLEN????? SALESMAN?? 7698 1981-2-20???? 1600.00??? 300.00???? 30
  7521 WARD?????? SALESMAN?? 7698 1981-2-22???? 1250.00??? 500.00???? 30
  7566 JONES????? MANAGER??? 7839 1981-4-2????? 2975.00?????????????? 20
  7654 MARTIN???? SALESMAN?? 7698 1981-9-28???? 1250.00?? 1400.00???? 30
  7698 BLAKE????? MANAGER??? 7839 1981-5-1????? 2850.00?????????????? 30
  7782 CLARK????? MANAGER??? 7839 1981-6-9????? 2450.00?????????????? 10
  7788 SCOTT????? ANALYST??? 7566 1987-4-19???? 4000.00?????????????? 20
  7839 KING?????? PRESIDENT?????? 1981-11-17??? 5000.00?????????????? 10
  7844 TURNER???? SALESMAN?? 7698 1981-9-8????? 1500.00????? 0.00???? 30
  7876 ADAMS????? CLERK????? 7788 1987-5-23???? 1100.00?????????????? 20
  7900 JAMES????? CLERK????? 7698 1981-12-3????? 950.00?????????????? 30
  7902 FORD?????? ANALYST??? 7566 1981-12-3???? 3000.00?????????????? 20
  7934 MILLER???? CLERK????? 7782 1982-1-23???? 1300.00?????????????? 10
  102 EricHu???? Developer? 1455 2011-5-26 1?? 5500.00???? 14.00???? 10
  104 huyong???? PM???????? 1455 2011-5-26 1?? 5500.00???? 14.00???? 10
  105 WANGJING?? Developer? 1455 2011-5-26 1?? 5500.00???? 14.00???? 10
  16 rows selected
  --------3.列出所有員工的姓名及其直接上級的姓名。----------
  SQL> select a.ename,(select ename from emp b where b.empno=a.mgr) as boss_name from emp a;
  ENAME????? BOSS_NAME
  ---------- ----------
  SMITH????? FORD
  ALLEN????? BLAKE
  WARD?????? BLAKE
  JONES????? KING
  MARTIN???? BLAKE
  BLAKE????? KING
  CLARK????? KING
  SCOTT????? JONES
  KING
  TURNER???? BLAKE
  ADAMS????? SCOTT
  JAMES????? BLAKE
  FORD?????? JONES
  MILLER???? CLARK
  EricHu
  huyong
  WANGJING
  17 rows selected
  --------4.列出受雇日期早于其直接上級的所有員工。----------
  SQL> select a.ename from emp a where a.hiredate<(select hiredate from emp b where b.empno=a.mgr);
  ENAME
  ----------
  SMITH
  ALLEN
  WARD
  JONES
  BLAKE
  CLARK
  6 rows selected
  --------5.列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門----------
  SQL> select a.dname,b.empno,b.ename,b.job,b.mgr,b.hiredate,b.sal,b.deptno
  2? from dept a left join emp b on a.deptno=b.deptno;
  DNAME????????? EMPNO ENAME????? JOB???????? MGR HIREDATE????????? SAL DEPTNO
  -------------- ----- ---------- --------- ----- ----------- --------- ------
  RESEARCH??????? 7369 SMITH????? CLERK????? 7902 1980-12-17???? 800.00???? 20
  SALES?????????? 7499 ALLEN????? SALESMAN?? 7698 1981-2-20???? 1600.00???? 30
  SALES?????????? 7521 WARD?????? SALESMAN?? 7698 1981-2-22???? 1250.00???? 30
  RESEARCH??????? 7566 JONES????? MANAGER??? 7839 1981-4-2????? 2975.00???? 20
  SALES?????????? 7654 MARTIN???? SALESMAN?? 7698 1981-9-28???? 1250.00???? 30
  SALES?????????? 7698 BLAKE????? MANAGER??? 7839 1981-5-1????? 2850.00???? 30
  ACCOUNTING????? 7782 CLARK????? MANAGER??? 7839 1981-6-9????? 2450.00???? 10
  RESEARCH??????? 7788 SCOTT????? ANALYST??? 7566 1987-4-19???? 4000.00???? 20
  ACCOUNTING????? 7839 KING?????? PRESIDENT?????? 1981-11-17??? 5000.00???? 10
  SALES?????????? 7844 TURNER???? SALESMAN?? 7698 1981-9-8????? 1500.00???? 30
  RESEARCH??????? 7876 ADAMS????? CLERK????? 7788 1987-5-23???? 1100.00???? 20
  SALES?????????? 7900 JAMES????? CLERK????? 7698 1981-12-3????? 950.00???? 30
  RESEARCH??????? 7902 FORD?????? ANALYST??? 7566 1981-12-3???? 3000.00???? 20
  ACCOUNTING????? 7934 MILLER???? CLERK????? 7782 1982-1-23???? 1300.00???? 10
  ACCOUNTING?????? 102 EricHu???? Developer? 1455 2011-5-26 1?? 5500.00???? 10
  ACCOUNTING?????? 104 huyong???? PM???????? 1455 2011-5-26 1?? 5500.00???? 10
  ACCOUNTING?????? 105 WANGJING?? Developer? 1455 2011-5-26 1?? 5500.00???? 10
  50abc
  OPERATIONS
  Developer
  20 rows selected
  --------6.列出所有“CLERK”(辦事員)的姓名及其部門名稱。----------
  SQL> select a.ename,b.dname from emp a join dept b on a.deptno=b.deptno and a.job='CLERK';
  ENAME????? DNAME
  ---------- --------------
  SMITH????? RESEARCH
  ADAMS????? RESEARCH
  JAMES????? SALES
  MILLER???? ACCOUNTING
  --------7.列出最低薪金大于1500的各種工作。----------
  SQL> select distinct job as HighSalJob from emp group by job having min(sal)>1500;
  HIGHSALJOB
  ----------
  ANALYST
  Developer
  MANAGER
  PM
  PRESIDENT
  --------8.列出在部門“SALES”(銷售部)工作的員工的姓名,假定不知道銷售部的部門編號。----------
  SQL> select ename from emp where deptno=(select deptno from dept where dname='SALES');
  ENAME
  ----------
  ALLEN
  WARD
  MARTIN
  BLAKE
  TURNER
  JAMES
  6 rows selected
  --------9.列出薪金高于公司平均薪金的所有員工。----------
  SQL> select ename from emp where sal>(select avg(sal) from emp);
  ENAME
  ----------
  JONES
  BLAKE
  SCOTT
  KING
  FORD
  EricHu
  huyong
  WANGJING
  8 rows selected
  --------10.列出與“SCOTT”從事相同工作的所有員工。--------
  SQL> select ename from emp where job=(select job from emp where ename='SCOTT');
  ENAME
  ----------
  SCOTT
  FORD
  --------11.列出薪金等于部門30中員工的薪金的所有員工的姓名和薪金。---------
  SQL> select a.ename,a.sal from emp a where a.sal in (select b.sal
  2? from emp b where b.deptno=30) and a.deptno<>30;
  ENAME??????????? SAL
  ---------- ---------
  --------12.列出薪金高于在部門30工作的所有員工的薪金的員工姓名和薪金。---------
  SQL> select ename,sal from emp where sal>(select max(sal) from emp where deptno=30);
  ENAME??????????? SAL
  ---------- ---------
  JONES??????? 2975.00
  SCOTT??????? 4000.00
  KING???????? 5000.00
  FORD???????? 3000.00
  EricHu?????? 5500.00
  huyong?????? 5500.00
  WANGJING???? 5500.00
  7 rows selected
  --------13.列出在每個部門工作的員工數(shù)量、平均工資和平均服務期限。---------
  SQL> select (select b.dname from dept b where a.deptno=b.deptno) as deptname ,count(deptno) as deptcount,avg(sal) as deptavgsal
  2? from emp a group by deptno;
  DEPTNAME??????? DEPTCOUNT DEPTAVGSAL
  -------------- ---------- ----------
  ACCOUNTING????????????? 6 4208.33333
  RESEARCH??????????????? 5?????? 2375
  SALES?????????????????? 6 1566.66666
  --------14.列出所有員工的姓名、部門名稱和工資。---------
  SQL> select a.ename,(select b.dname from dept b where b.deptno=a.deptno) as deptname,sal from emp a;
  ENAME????? DEPTNAME???????????? SAL
  ---------- -------------- ---------
  SMITH????? RESEARCH????????? 800.00
  ALLEN????? SALES??????????? 1600.00
  WARD?????? SALES??????????? 1250.00
  JONES????? RESEARCH???????? 2975.00
  MARTIN???? SALES??????????? 1250.00
  BLAKE????? SALES??????????? 2850.00
  CLARK????? ACCOUNTING?????? 2450.00
  SCOTT????? RESEARCH???????? 4000.00
  KING?????? ACCOUNTING?????? 5000.00
  TURNER???? SALES??????????? 1500.00
  ADAMS????? RESEARCH???????? 1100.00
  JAMES????? SALES???????????? 950.00
  FORD?????? RESEARCH???????? 3000.00
  MILLER???? ACCOUNTING?????? 1300.00
  EricHu???? ACCOUNTING?????? 5500.00
  huyong???? ACCOUNTING?????? 5500.00
  WANGJING?? ACCOUNTING?????? 5500.00
  17 rows selected
  --------15.列出所有部門的詳細信息和部門人數(shù)。---------
  SQL> select a.deptno,a.dname,a.loc,(select count(deptno) from emp b where b.deptno=a.deptno group by b.deptno) as deptcount from dept a;
  DEPTNO DNAME????????? LOC??????????? DEPTCOUNT
  ------ -------------- ------------- ----------
  10 ACCOUNTING???? NEW YORK?????????????? 6
  20 RESEARCH?????? DALLAS???????????????? 5
  30 SALES????????? CHICAGO??????????????? 6
  40 OPERATIONS???? BOSTON
  50 50abc????????? 50def
  60 Developer????? HaiKou
  6 rows selected
  --------16.列出各種工作的最低工資。---------
  SQL> select job,avg(sal) from emp group by job;
  JOB???????? AVG(SAL)
  --------- ----------
  ANALYST???????? 3500
  CLERK???????? 1037.5
  Developer?????? 5500
  MANAGER?? 2758.33333
  PM????????????? 5500
  PRESIDENT?????? 5000
  SALESMAN??????? 1400
  7 rows selected
  --------17.列出各個部門的MANAGER(經(jīng)理)的最低薪金。--------
  SQL> select deptno,min(sal) from emp where job='MANAGER' group by deptno;
  DEPTNO?? MIN(SAL)
  ------ ----------
  10?????? 2450
  20?????? 2975
  30?????? 2850
  --------18.列出所有員工的年工資,按年薪從低到高排序。---------
  SQL> select ename,(sal+nvl(comm,0))*12 as salpersal from emp order by salpersal;
  ENAME?????? SALPERSAL
  ---------- ----------
  SMITH??????????? 9600
  JAMES?????????? 11400
  ADAMS?????????? 13200
  MILLER????????? 15600
  TURNER????????? 18000
  WARD??????????? 21000
  ALLEN?????????? 22800
  CLARK?????????? 29400
  MARTIN????????? 31800
  BLAKE?????????? 34200
  JONES?????????? 35700
  FORD??????????? 36000
  SCOTT?????????? 48000
  KING??????????? 60000
  EricHu????????? 66168
  huyong????????? 66168
  WANGJING??????? 66168
  17 rows selected

總結

以上是生活随笔為你收集整理的ORACLE SQL:经典查询练手第一篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。