随笔分类 - Oracle
摘要:1.例子:select name,salary from emp group by name,salary(正确) 使用group by时,group by后面必须包含select后面出现的所有字段名 否则会出错ORA-00979: 不是 GROUP BY 表达式;group by的使用不需要whe
阅读全文
摘要:rollup(),cube(),grouping sets() 上面这几个函数,是对group by分组功能做的功能扩展。 rollup(),cube(),grouping sets() 上面这几个函数,是对group by分组功能做的功能扩展。 a.rollup() 功能:在原结果基础上追加一行总
阅读全文
摘要:decode(字段或计算表达式, 条件值1,结果值1, 条件值2,结果值2[,默认值] ) if(字段或计算表达式 == 条件值1){ return 结果值1; }else if(字段或计算表达式 == 条件值2){ return 结果值2; }else{ return 默认值; } //将查询的s
阅读全文
摘要:sign函数介绍(补充) sign(n):判断n>0返回1;n=0返回0;n<0返回-1. select sign(10),sign(0),sign(-2) from dual; select ename,sign(sal-2000) from emp;
阅读全文
摘要:case函数 (适合区间,>,<判断) case when 判断表达式 then when 判断表达式 then ..... end select deptno,count(*) total, sum(case when sal>=2000 then 1 end) great, sum(case w
阅读全文
摘要:*3.分页查询 不同数据库分页查询方法不同,Oracle采用rownum列实现 分页查询;而MySQL采用的是limit实现。 1)rownum列 rownum列是Oracle自动添加的。默认是隐藏的, 一般被称为伪列。该列值记录的是记录的行编号。 在建表或执行一个select查询后,Oracle都
阅读全文
摘要:row_number(),rank(),dense_rank() 使用格式: row_number() over(partition by 字段1 order by 字段2) 作用:按将查询结果按字段1分组,然后按字段2排序, 再调用row_number(),rank(),dense_rank()编
阅读全文
摘要:4)自连接 关联双方的表是同一个表。 //查询员工编号,员工名,上级编号,上级名称 select e.empno,e.ename,e.mgr,e1.ename from EMP e left outer join EMP e1 on(e.mgr=e1.empno); //查询员工编号,员工名,所在部
阅读全文
摘要:3)外连接 等值连接,需要两个表的关联字段等值才将结果返回。 如果需要将某一个表记录全部返回,即使另一个表找不到 对等字段记录,此时可以使用外连接。 *a.左外连接 使用LEFT OUTER JOIN...ON...语法 select e.ename,e.sal,e.deptno,d.dname f
阅读全文
摘要:*2)等值连接 参与等值条件的两个字段值,相等时才作为结果返回。 select ja.id,ja.name,jb.name //3.提取显示的字段 from ja,jb //1.形成笛卡尔积结果 where ja.id=jb.id; //2.返回id相等的记录 使用[INNER] JOIN...ON
阅读全文
摘要:SELECT使用子查询 SELECT使用子查询,该子查询会执行多次, 次数是由记录数量决定。效率比较低,不推荐使用。 //查询部门编号,工资大于等于2000的人数, //工资小于2000的人数 select distinct deptno, (select count(*) from emp whe
阅读全文
摘要:HAVING使用子查询 //查询各部门平均工资,显示平均工资大于 //公司整体平均工资的记录 select deptno,avg(sal) from emp group by deptno having avg(sal)>(select avg(sal) from emp);
阅读全文
摘要:FROM使用子查询 子查询结果充当一个临时表。 //子查询形成的临时表字段为NO,NAME,SAL select no,name from( select empno no,ename name,sal from emp ); //子查询形成的临时表字段为DEPTNO,AVG select dept
阅读全文
摘要:b.多行子查询(适用于in,any,all条件) //查询与SCOTT和MARTIN在同一个部门的同事的编号和名称 select empno,ename from emp where deptno in ( select deptno from emp where ename in ('SCOTT'
阅读全文
摘要:a.单行子查询(适用于>,<,=,>=,<=等条件) //查询工资最高的员工编号和员工名 select empno,ename from emp where sal=(select max(sal) from emp); //查询最新入职的员工编号和员工名 select empno,ename fr
阅读全文
摘要:max():求最大值 min():求最小值 avg():求平均值 sum():求和 count():统计数量 //查询员工的最高工资 select max(sal) from emp; //查询员工的最低工资和平均工资 select min(sal),avg(sal) from emp; //查询所
阅读全文
摘要:10.ORDER BY排序子句 用于指定将查询结果排序的字段。 //查询emp表所有记录,结果按ename升序排列 select empno,ename from emp order by ename asc;//asc可以省略,默认为asc //查询emp表所有记录,结果按sal降序排列 sele
阅读全文
摘要:9.过滤查询结果的重复记录 //查询员工职位类型,过滤重复结果 select distinct job from emp; //查询员工名字和职位,如果名字+职位都相同才过滤 select distinct ename,job from emp; //查询10部门员工从事哪些类型的职位 select
阅读全文
摘要:8.在WHERE中使用ANY和ALL条件 字段 >ANY(值1,值2,值3...):字段值大于集合任何一个 值就算满足条件。 字段 >ALL(值1,值2,值3...):字段值大于集合中所有 值才算满足条件。 上述也可以用<ANY,>=ANY,<=ANY. <ALL,>=ALL,<=ALL //查询工
阅读全文