简单查询
2017-10-11 23:21
295 查看
/*
select 字段列表 from 表1,表2,……
[where 条件表达式]
[order by 字段1 desc/asc,字段2 desc/asc]
[group by 字段1, 字段2,……]
[having 表达式]
*/
--一、简单查询
--1、查询所有的行所有的列
select * from emp;
select * from dept;
--2、查询指定的列
select empno,ename from emp;
--3、查询中出现表达式
select empno,ename,(to_date('2013-03-18','yyyy-mm-dd')-hiredate)/365 from emp;
--4、给查询的字段或表达式起别名
select empno as 编号,ename as 姓名,(to_date('2013-03-18','yyyy-mm-dd')-hiredate)/365 as 工作年限
from emp;
select empno 编号,ename 姓名,(to_date('2013-03-18','yyyy-mm-dd')-hiredate)/365 工作年限
from emp;
--5、给表起别名
select e.empno,e.ename from emp e;
--6、查询指定的行——带条件的查询
--工资高于2000的员工信息
select * from emp
where sal>2000;
--显示是销售员工和管理者的工资情况
select ename,job,sal from emp
where job='SALESMAN' OR job ='MANAGER';
--7、模糊查询
/*
like
通配符:
%:任意个字符或汉字
_:一个字符或汉字的位置
*/
--查询姓名以'a'打头的员工信息
select * from emp
where ename like 'a%';
--查询姓名中第二个字母是M的员工信息
select * from emp
where ename like '_M%';
--查询以'a'/'A'打头的员工信息
select * from emp
where ename like 'a%' or ename like 'A%';
--8、使用between and 进行查询
select * from emp
where sal between 2000 and 3000;
select * from emp
where sal >=2000 and sal<= 3000;
--9、查找在*****里边的信息——in
--显示是销售员工和管理者的工资情况
select ename,job,sal from emp
where job='SALESMAN' OR job ='MANAGER';
--显示是销售员工和管理者的工资情况
select ename,job,sal from emp
where job in('SALESMAN' ,'MANAGER');
--显示不是销售员工和管理者的工资情况
select ename,job,sal from emp
where job not in('SALESMAN' ,'MANAGER');
--10、显示字段为空的信息
--显示没有奖金的员工信息
select * from emp
where comm is null;
--显示有奖金的员工信息
select * from emp
where comm is not null;
--11、排序
--DESC倒序从大到小;ASC正序从小到大(默认)
--按照工资降序显示,如果工资有相同,相同的内部按照姓名升序排列
select * from emp
order by sal desc,ename;
--12、聚合函数
/*
max() min() avg() sum() count()
聚合函数对于null值的处理
count(*):对表中行数进行计数,不管是否有NULL
count(字段名):对特定列有数据的行进行计数,忽略NULL值
AVG():求平均值,注意AVE()忽略NULL值,而不是将其作为“0”参与计算
MAX()、MIN():求最大、最小值,都忽略NULL
SUM():可以对单个列求和,也可以对多个列运算后求和,忽略NULL值,
且当对多个列运算求和时,如果运算的列中任意一列的值为NULL,则忽略这行的记录。*/
-- 例如: SUM(A+B+C),A、B、C 为三列,如果某行记录中A列值为NULL,则不统计这行。
select max(sal) as maxSal from emp;
select avg(sal) from emp;
select sum(sal) from emp;
select count(empno) from emp;
select count(*) from emp;
--从emp表中显示部门数
select count(distinct deptno) from emp;-----distinct:去掉重复的数据
--从emp表中显示部门编号
select distinct deptno from emp;
--显示前3行----分页
select empno,ename,rownum from emp
where rownum<4;
/*
13、分组:group by 字段1,字段2,……
1)需要分组
2)按照什么分组
3)分组后能够显示的字段 */
-- 显示每个部门的平均工资
select deptno,avg(sal) from emp
group by deptno;
-- 每个领导所管辖的人数
select mgr,count(empno) from emp
group by mgr;
--14、having子句
select deptno,avg(sal) avgSal from emp
group by deptno
having avg(sal)>2500;
select mgr,count(empno) from emp
group by mgr
having count(empno)>5;
--显示每个部门的工资超过1500的人数超过2人的
select deptno,count(empno) from emp
where sal>1500
group by deptno
having count(empno)>2;
/*
区分where 与having区别
1)where放在分组之前,是对原表的筛选,having放在分组之后,是对分组之后结果的筛选
2)二者可以同时存在 */
-- 显示每个部门所有工资>=1200,并且人数超过2人的部门
select deptno,count(empno) from emp
group by deptno
having count(empno)>2 and min(sal)>=1200;
select 字段列表 from 表1,表2,……
[where 条件表达式]
[order by 字段1 desc/asc,字段2 desc/asc]
[group by 字段1, 字段2,……]
[having 表达式]
*/
--一、简单查询
--1、查询所有的行所有的列
select * from emp;
select * from dept;
--2、查询指定的列
select empno,ename from emp;
--3、查询中出现表达式
select empno,ename,(to_date('2013-03-18','yyyy-mm-dd')-hiredate)/365 from emp;
--4、给查询的字段或表达式起别名
select empno as 编号,ename as 姓名,(to_date('2013-03-18','yyyy-mm-dd')-hiredate)/365 as 工作年限
from emp;
select empno 编号,ename 姓名,(to_date('2013-03-18','yyyy-mm-dd')-hiredate)/365 工作年限
from emp;
--5、给表起别名
select e.empno,e.ename from emp e;
--6、查询指定的行——带条件的查询
--工资高于2000的员工信息
select * from emp
where sal>2000;
--显示是销售员工和管理者的工资情况
select ename,job,sal from emp
where job='SALESMAN' OR job ='MANAGER';
--7、模糊查询
/*
like
通配符:
%:任意个字符或汉字
_:一个字符或汉字的位置
*/
--查询姓名以'a'打头的员工信息
select * from emp
where ename like 'a%';
--查询姓名中第二个字母是M的员工信息
select * from emp
where ename like '_M%';
--查询以'a'/'A'打头的员工信息
select * from emp
where ename like 'a%' or ename like 'A%';
--8、使用between and 进行查询
select * from emp
where sal between 2000 and 3000;
select * from emp
where sal >=2000 and sal<= 3000;
--9、查找在*****里边的信息——in
--显示是销售员工和管理者的工资情况
select ename,job,sal from emp
where job='SALESMAN' OR job ='MANAGER';
--显示是销售员工和管理者的工资情况
select ename,job,sal from emp
where job in('SALESMAN' ,'MANAGER');
--显示不是销售员工和管理者的工资情况
select ename,job,sal from emp
where job not in('SALESMAN' ,'MANAGER');
--10、显示字段为空的信息
--显示没有奖金的员工信息
select * from emp
where comm is null;
--显示有奖金的员工信息
select * from emp
where comm is not null;
--11、排序
--DESC倒序从大到小;ASC正序从小到大(默认)
--按照工资降序显示,如果工资有相同,相同的内部按照姓名升序排列
select * from emp
order by sal desc,ename;
--12、聚合函数
/*
max() min() avg() sum() count()
聚合函数对于null值的处理
count(*):对表中行数进行计数,不管是否有NULL
count(字段名):对特定列有数据的行进行计数,忽略NULL值
AVG():求平均值,注意AVE()忽略NULL值,而不是将其作为“0”参与计算
MAX()、MIN():求最大、最小值,都忽略NULL
SUM():可以对单个列求和,也可以对多个列运算后求和,忽略NULL值,
且当对多个列运算求和时,如果运算的列中任意一列的值为NULL,则忽略这行的记录。*/
-- 例如: SUM(A+B+C),A、B、C 为三列,如果某行记录中A列值为NULL,则不统计这行。
select max(sal) as maxSal from emp;
select avg(sal) from emp;
select sum(sal) from emp;
select count(empno) from emp;
select count(*) from emp;
--从emp表中显示部门数
select count(distinct deptno) from emp;-----distinct:去掉重复的数据
--从emp表中显示部门编号
select distinct deptno from emp;
--显示前3行----分页
select empno,ename,rownum from emp
where rownum<4;
/*
13、分组:group by 字段1,字段2,……
1)需要分组
2)按照什么分组
3)分组后能够显示的字段 */
-- 显示每个部门的平均工资
select deptno,avg(sal) from emp
group by deptno;
-- 每个领导所管辖的人数
select mgr,count(empno) from emp
group by mgr;
--14、having子句
select deptno,avg(sal) avgSal from emp
group by deptno
having avg(sal)>2500;
select mgr,count(empno) from emp
group by mgr
having count(empno)>5;
--显示每个部门的工资超过1500的人数超过2人的
select deptno,count(empno) from emp
where sal>1500
group by deptno
having count(empno)>2;
/*
区分where 与having区别
1)where放在分组之前,是对原表的筛选,having放在分组之后,是对分组之后结果的筛选
2)二者可以同时存在 */
-- 显示每个部门所有工资>=1200,并且人数超过2人的部门
select deptno,count(empno) from emp
group by deptno
having count(empno)>2 and min(sal)>=1200;
相关文章推荐
- 第五章.简单的数据查询.总结
- HDU-1166 敌兵布阵【简单线段树-单点更新+区间查询】
- HIbernate原生sql查询简单案例
- 怎样用asp.net实现简单的查询功能
- Oracel 简单查询2
- 每天一点数据库之-----Day 4 数据的简单查询
- 几个简单常用的oracle权限查询脚本
- jsp+servlet+tomcat简单的数据库查询项目
- 数据库-T-SQL 语句-简单查询
- 简单的MD5查询工具
- 简单子查询
- 简单类型的数据查询
- spring之jdbcTemplate单表查询简单封装
- Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
- Spring Data JPA 简单查询-接口方法
- 利用集合完成象数据库那样存储数据,并且可以简单查询,利用map存储学生信息
- 利用struts2,mybatis,spring,三大框架写的一个简单的查询程序
- 简单查询(章节摘要)
- sql语句实现简单查询以及索引查询
- 简单查询语句的调优