Oracle表的查询命令_sql

文章目录

前言


本文总结了Oracle表的常用查询命令,大家多点赞关注!


1、 简单查询命令

 --清屏
SQL> clear
--查询表结构
SQL> desc dba_users
--打开显示操作的时间
SQL> set timing on
--统计行数
SQL> select count(*)from student;
--取别名及使用算数表达式
SQL> select sal*12 "总工资" from imp;
--空值处理用nvl函数
SQL> select sal*12+nvl(comm,0)*12 "平均工资" from imp;
--取消重复行
SQL> select distinct deptno,job from imp;
--使用列的别名
SQL> select ename "姓名", sal*12 as sum from imp;
--如何连接字符串(||)
SQL> select ename ||'is a'||job from imp;

2、 where子句

2.1、如何查找1982.1.1日后入职的员工
SQL> select * from imp where hiredate>'1-1月-1982';
2.2、如何显示工资在2000到2500的员工的情况
SQL> select * from imp where sal>=2000 and sal<=2500;
2.3、如何显示empno为7369,7499,7876的员工的情况(IN的使用).
SQL>select * from imp where empno in(7369,7499,7876);

3、 like操作符

3.1、如何显示首字符为S的员工姓名和工资
SQL>select * from imp where ename like'S%';
3.2、 如何显示第三个字符为大写O的员工姓名和工资
SQL>select * from imp where ename like'__O%';

4、逻辑操作符号

查询工资高于500或者是岗位为MANAGER的雇员,
同时还要满足他们的姓名首字母为大写的J?
SQL> select * from imp where (sal >500 or job = 'manager') and ename like 'J%';

5、order by字句

5.1、如何按照工资的从低到高的顺序显示雇员的信息?
SQL> select * from imp order by sal;
5.2、按照部门号升序而雇员的工资降序排列
SQL> select * from imp order by deptno, sal desc;

6、表的复杂查询

6.1、数据分组
显示所有员工中最高工资和最低工资?.
SQL> select max(sal),min(sal) from imp;
最高工资那个人是谁?
SQL> select ename from imp where sal=(select max(sal) from imp);
显示工资高于平均工资的员工信息
SQL> select * from imp where sal > (select avg(sal) from imp);
显示每个部门的平均工资和最高工资?
SQL> select avg(sal), max(sal), deptno from imp group by deptno;
(分组查询的话,分组的字段一定要出现在查询的列表里面,否则会报错)
显示平均工资低于2000的部门号和它的平均工资?
SQL> select avg(sal), deptno from imp group by deptno having avg(sal) < 2000;
6.2、多表查询
显示雇员名,雇员工资及所在部门的名字
SQL> select e.ename, e.sal, d.dname from imp e, dept d where e.deptno = d.deptno;
显示各个员工的姓名,工资及工资的级别?
SQL> select e.ename, e.sal, s.grade from imp e, salgrade s where e.sal between s.losal and s.hisal;
显示雇员名,雇员工资及所在部门的名字,并按部门排序?
SQL> select e.ename, e.sal, d.dname from imp e, dept d where e.deptno = d.deptno order by e.deptno;
6.3、合并查询
1)union该操作符用于取得两个结果集的并集。当使用该操作符时,
会自动去掉结果集中重复行。
SQL> select ename, sal, job from imp where sal >2500
union
select ename, sal, job from imp where job = 'MANAGER';
2)union all该操作符与union相似,但是它不会取消重复行,而且不会排序。
SQL> select ename, sal, job from imp where sal >2500
UNION ALL
select ename, sal, job from imp where job = 'MANAGER';
3)intersect使用该操作符用于取得两个结果集的交集。
SQL> select ename, sal, job from imp where sal >2500
Intersect
select ename, sal, job from imp where job = 'MANAGER';
4)minus使用改操作符用于取得两个结果集的差集,
他只会显示存在第一个集合中,而不存在第二个集合中的数据。
SQL> select ename, sal, job from imp where sal >2500
Minus
select ename, sal, job from imp where job = 'MANAGER';