基本查询 - select
查询所有数据
select * from 表;查询指定列数据
select 表名.列1,表名.列2 from 表名;查询且不包含重复数据 – distinct(去掉重复列)
select distinct 列 from 表名;
//查询公司设置了哪些岗位
select distinct * from emp;
聚合函数
- 聚合函数配合分组
先分组,再统计,聚合函数前后要加列,必须对要加的列分组
//查询每个岗位上的员工人数
select job,count(*) from emp group by job;
//查询每个部分上的员工人数
select dept.dname,dept.demptno,count(*) from emp
inner join dept on emp.deptno = dept.no
group by dept.no,dept.dname
- case … end的用法
case
when 列 条件1 then 结果1
when 列 条件2 then 结果2
else 其他结果
end
列:
select case
when sal>=1 and sal<=2000 then '蓝领'
when sal>=2001 and sal<=4000 then '白领'
else '金领'
end as "级别"(注:as可以加上字符,空格,下划线)
from emp;
运算符
连接运算符 –||
select empno || ename as 编号姓名列 from emp;加法运算符 – +
select empno+deptno from emp;
伪列 (每张表都有伪列,系统生成的列)
rownum
返回查询结果集的序列,不是固定的值
< <= (注:用作查询语句后面作条件判断)rownum的特点
a. rownum先对结果集进行序列,如果加上order by 伪列则不会序列
b. rownum并不是和值固定对应的
select rownum,emp.* from emp where rownum=5
c. rowid(它的值和列是固定一一对应的地址)
- select rowid,emp.* from emp where empno = 7400;
- select rowid,emp.* from emp where rowid='AAAMGZAAE';
排序
- 语法
order by 列 asc(升序) / desc(降序)
- 单例排序
//查询员工信息,按部门编号降序排序
select * from emp order by deptno desc;
//查询员工信息,按薪水排序
select * from emp order by sal desc;
- 多列排序
//查询员工信息,按部门降序排序,且薪水高的排前面
select * from emp order by demptno,sal desc;