oracle常用的查询语句

查询时,select语句不区分大小写,但是查询的内容区分大小写。


set timing on;               //显示操作的时间

select count(*) from 表名;               //显示查的这张表有多少行

insert into 表名(字段名,字段名,....) select * from 表名;                    //自我复制记录,这样的话就可以疯狂复制了。

select distinct 字段名,字段名,....from 表名;        // 查询时,把重复的记录过滤掉

select sal*12 from emp;                       //查一年的工资

select sal*12 '年工资', ename from emp;               //给字段名起别名


如何查找1982.1.1后入职的员工?


如何显示工资在2000到3000之间的员工情况



如何使用 like 操作符:

%:表示任意0到多个字符   _:表示任意单个字符

?如何显示首字符为 S 的员工姓名和工资


如何显示第三个字符为 O 的所有员工姓名和工资



在where条件中使用 in

如何显示empno 为7844,345,234的雇员情况



使用 is null 的操作符

如何显示没有上级的雇员情况,也就是要查MGR为空的那个人。


不要这样写,统统不行:

select * from emp where mgr = null;

select * from emp where mgr = ' ';

使用逻辑操作符号

查询工资高于 500或是岗位为MANAGER的雇员,同时还要满足他们的姓名的首写字母为大写 J 



使用 order by 子句,order by 就是按照什么什么来排序,默认从低到高 。

如何按照工资从低到高的顺序显示雇员的信息

select * from emp order by sal; = select * from emp order sal asc;


如果想从高到低来排序,则这样写: select * from emp order by sal desc;

按照部门号升序而雇员的工资降序排列:

select * from emp order by deptno , sal desc;


使用列的别名来排序


别名需要用双引号来圈中。


在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据

数据分组:max , min , avg  , sum  , count ;

显示所有员工中最高工资和最低工资:

把最高工资的那个人,并把他的工资显示出来:


显示工资高于平均工资的员工信息,也就是要用到子查询咯:



group by 和 having 子句

group by 用于对查询的结果分组统计

having 子句用于限制分组显示结果

显示每个部门的平均工资和最高工资


显示每个部门的每种岗位的最高工资和平均工资


显示平均工资高于2000的部门号和它的平均工资:



对数组分组的总结:

1、分组函数只能出现在选择列表,having,order by中。

2、如果 在select语句中同时出现包含有 group by,having,order by ,那么他们的顺序是  group by,having,order by 。

3、在选择列中如果有列,表达式和分组函数 ,那么这些列和表达式必须有一个出现在group by 子句中,否则就会出错。

例如: select max(sal) , avg(sal) , deptno from emp group by deptno having avg(sal)<2000;这里deptno就一定要出现在 group by 中!


多表查询 
说明
多表查询是指基于两个和两个以上的表或是视图的查询。在实际应用中,查询单个表可能不能满足你的需求,(如显示sales部门位置和其员工的姓名),这种情况下需要使用到(dept表和emp表) 

问题:显示雇员名,雇员工资及所在部门的名字【笛卡尔集】? 
规定:多表查询的条件是至少不能少于表的个数-1 才能排除笛卡尔集 ,例如这里 下图的deptno 就是这两张表的一个条件。


显示各个员工的姓名,工资,及其工资的级别:


自连接

自连接指的是在同一张表的连接查询


什么是子查询?

子查询是指嵌套在其他sql语句中的select语句,也叫嵌套查询。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值