九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
oracle學習筆記之表的查詢

表的基本查詢

1、         查看表結構

Desc dept;

2、         查看所有列

Select * from dept;

3、         查看指定列

Select ename,sal,job,deptno from emp;

4、         如何取消重復

Select distinct deptno,job from emp;

5、         set timing on;顯示查詢時間

6、         使用算數(shù)表達式

?顯示每個雇員的年工資

Select (sal+nvl(comm,0))*12 as 年工資,ename as 姓名 from emp;

使用列的別名

Select eanme “姓名”,sal*12 as “年收入” from emp;

?如何使用null

使用nvl函數(shù)來處理

      如何連接字符串(||

Select ename || ‘is a ’ || job from emp;

7、         使用where子句

?如何顯示工資高于3000的員工

select * from emp where sal>3000;

?如何查找1982.1.1后入職的員工

select * from emp where hiredate>'1-1-1982';

?如何顯示工資在20002500的員工情況

select * from emp where sal>2000 and sal<2500;

8、         如何使用like操作符

%:表示任意0到多個字符

_:表示任意單個字符

如何顯示首字符為S的員工姓名和工資

Select ename,sal from emp where ename like ‘S%’

?如何顯示第三個字符為大寫O的所有員工的姓名和工資

Select ename,sal from emp where ename like ‘__o%’;

9、         where條件中使用in

如何顯示empno123,345,80…的雇員情況

Select * from emp where empno in (123,345,);

10、    使用in null 的操作符

?如何顯示沒有上級的雇員的情況

      Select * from emp where mgr is null;

11、    使用邏輯操作符號

查詢工資高于500或是崗位為MANAGER的員工,同時還要滿足他們的姓名首寫字母為大寫的J?

select * from emp where (sal>500 or job='MANAGER') and ename like 'J%';

12、    使用order by 子句

如何按照工資的從低到高的順序顯示雇員的信息?

select * from emp order by sal;

按照部門號升序而雇員的工資降序排列?

select * from emp order by deptno asc,sal desc;

13、    使用列的別名排序

Select ename, sal*12 “年薪” from emp order by “年薪” asc;

表復雜查詢

14、    數(shù)據(jù)分組-max,min avg,sum,count

如何顯示所有員工中最高工資和最低工資?

Select max(sal),min(sal) from emp;

顯示所有員工的平均工資和工資總和?

select avg(sal+nvl(comm,0)),sum(sal+nvl(comm,0)) from emp;

計算共有多少員工?

Select count(*) from emp;

擴展要求:

請顯示工資最高的員工的名字,工作崗位?

select ename,job from emp where sal=(select max(sal+nvl(comm,0)) from emp);

請顯示工資高于平均工資的員工信息?

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

15、    group by having子句

group by 用于對查詢的結果分組統(tǒng)計,

having 子句用于限制分組顯示結果。

如何顯示每個部門的平均工資和最高工資?

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

顯示每個部門的每種崗位的平均工資和最低工資?

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

顯示平均工資低于2000的部門號和它的平均工資

select avg(sal),max(sal),deptno from emp group by deptno having avg(sal)<2000;

l     對數(shù)據(jù)分組的總結

1、         分組函數(shù)只能出現(xiàn)在選擇列表、havingorder by子句中

2、         如果在select語句中同時包含group by ,having,order by那么他們的順序是group byhaving, order by

3、         在選擇列中如果有列、表達式、和分組函數(shù),那么這些列和表達式必須有一個出現(xiàn)在group by 子句中,否則就會出錯

select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)>2000;

這里deptno就一定要出現(xiàn)在group by    

16、    多表查詢

a)      顯示雇員名,雇員工資及所在部門的名稱【笛卡爾集】?

select emp.ename,emp.sal,dept.dname from emp,dept where emp.deptno=dept.deptno;

b)      如何顯示部門號為10的部門名、員工名、和工資?

select dept.dname,emp.ename,emp.sal from emp,dept where emp.deptno=dept.deptno and emp.deptno=10;

c)      顯示各個員工的姓名,工資,及其工資的級別?

select a1.ename,a1.sal,a2.grade from emp a1,salgrade a2 where a1.sal between a2.losal and a2.hisal;

d)      顯示雇員名,雇員工資及所在部門的名字,并按部門排序?

select emp.ename,emp.sal,dept.dname from emp,dept where emp.deptno=dept.deptno order by dept.dname;

17、    自連接

自連接是指在同一張彪的鏈接查詢。

顯示某個員工的上級領導的姓名?

select worker.ename "員工",boss.ename "上級" from emp worker,emp boss where worker.mgr=boss.empno;
現(xiàn)實雇員FOFD的上級領導的名字:
select worker.ename "員工",boss.ename "上級" from emp worker,emp boss where worker.mgr=boss.empno and worker.ename='FOFD';
 

子查詢

1、         什么是子查詢

子查詢是指嵌入在其它sql語句中的select語句,也叫嵌套查詢

2、         單行子查詢

單行子查詢是指只返回一行數(shù)據(jù)的子查詢語句。

如何顯示與SMITH同一部門的所有員工?

select * from emp where deptno=(select deptno from emp where ename='SMITH');

3、         多行子查詢

多行子查詢是指返回多行數(shù)據(jù)的子查詢

如何查詢和部門10 工作相同的雇員的名字、崗位、工資、部門號?

select * from emp where job in (select distinct job from emp where deptno=10;

4、         在多行子查詢中使用all操作符

如何顯示工資比部門30的所有員工的工資高的員工的姓名、工資和部門號

Select ename,sal,deptno from emp where sal>all(select sal from emp where deptno=30);
Select ename,sal,deptno from emp where sal>(select max(sal) from emp where deptno=30);

5、         在多行子查詢中使用any操作符

如何顯示工資比部門30的任意一個員工的工資高的員工的姓名、工資和部門號

Select ename,sal, deptno from emp where sal>any(select sal from emp where deptno=30);
Select ename,sal,deptno from emp where sal>(select min(sal) from emp where deptno=30);

6、         多列子查詢

單行子查詢是指子查詢只返回單列、單行數(shù)據(jù),多行子查詢是指返回單列多行數(shù)據(jù),都是針對單列而言的,而多列子查詢則是指查詢返回多個列數(shù)據(jù)的子查詢語句。

如何查詢與smith的部門和崗位完全相同的所有雇員?

select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');

7、         from子句中使用子查詢

如何顯示高于自己部門平均工資的員工信息?

select * from emp a1,(select deptno,avg(sal) mysal from emp group by deptno) a2 where a1.deptno=a2.deptno and a1.sal>a2.mysal;

select * from emp a1 where sal>(select avg(sal) from emp a2 where a1.deptno=a2.deptno);

*from子句中使用子查詢

       這里需要說明的當在from子句中使用子查詢時,該子查詢會被作為一個視圖對待,因此頁叫做內(nèi)嵌視圖,當在from子句中使用子查詢時,必須給子查詢指定別名。

8、         分頁查詢

按雇員的id號升序取出

Oracle分頁一共分3中方式

a)    rownum分頁

select a1.*,rownum rn from (select * from emp) a1;

b)    顯示rownum[oracle分配]

select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum<=10) where rn>=6;

1、         根據(jù)rowid來分

Select * from t_m where rowed in(select rid from (slect rownum rn,rid from (select rowed rid,cid from t_m order by cid cesc) where rownum<10000) where rn>9980) order by cid

2、         按分析函數(shù)來分

Select * from (select t.*,row_number() over(order by cid desc) rk from t_m t) where rk<10000 and rk>9980;

3、         rownum來分

Select * from (select t.*,rownum rn from (select * from t_m order by cid desc) t where rownum<10000) where rn>9980;

其中t_xiaoxi 為表名稱,cid為表的關鍵字段,取按cid降序排序后第9981-9999條記錄,t_m 表中20000條記錄

1、         效率最好3、次之2、最差

9、         用查詢結果創(chuàng)建新表

這個命令是一種快捷的建表方法。

Create table mytable (id,name,sal,job,deptno) as select empno,ename,sal,job,deptno from emp;

10、    合并查詢

有時在實際應用中,為了合并多個select語句的結果,可以使用集合操作符號 union, union all,intersect,minus.

1)         union

該操作符用于取得兩個結果集的并集,當使用該操作符時,會自動去掉結果集中重復行。

Select ename,sal,job from emp where sal>2500 union

Select ename,sal ,job from emp where sal=’manager’;

                 2)union all

該操作賦予union相似,但是它不會取消重復行,而且不會排序。

Select ename,sal,job from emp where sal>2500 union all select ename,sal,job from emp where job=’MANAGER’;

3)     intersect

使用該操作符用于取得兩個結果集的交集。

Select ename,sal,job from where sal>2500 intersect

Select ename,sal,job from emp where job=’MANAGER’;

4)    minus

使用該操作符用于取得兩個結果集的差集,它只會顯示存在第一個集合中,而不存在第二個集合中的數(shù)據(jù)。

Select ename,sal,job from emp where sal>2500 minus

Select ename,sal,job from emp where job=’MANAGER’;

     
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
mysql練習(含答案)
SQL Server筆試題 解答
數(shù)據(jù)庫的設計與表的管理 oracle筆記
Oracle多表連接與子查詢
oracle常用sql查詢語句部分集合(圖文)
oracle的子查詢
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服