公众电影网站怎么做,建立网站可以赚钱吗,Wordpress对接阿里云OSS,wordpress主题虚拟资源交易平台ORACLE下查询操作
针对数据库操作最多的就是数据查询#xff0c;这里分享一个我常用的方法#xff0c;看到需求后#xff0c;先确定查询范围#xff0c;就是需要查询哪些表#xff1b;之后确定查询条件#xff1b;最后写出查询的字段。
ORACLE中之前说过有两个伪列ROWI…ORACLE下查询操作
针对数据库操作最多的就是数据查询这里分享一个我常用的方法看到需求后先确定查询范围就是需要查询哪些表之后确定查询条件最后写出查询的字段。
ORACLE中之前说过有两个伪列ROWID和ROWNUM用来标识唯一的一条记录。
1.基本查询
对数据查询最简单的也就是单表查询了查询使用的语法是 SELECT [COLS] FROM [TABLE] [WHERE][CONDITION]
平常查询时一定会有条件也就是使用到where关键字之后接条件这里的条件可以看之前的一篇文章【查询基础】。
这里针对单表查询介绍一下分页的逻辑oracle中没有mysql中的关键字limit所以oracle中数据分页查询需要借助ROWNUM具体如下 -- 通用的分页SQL SELECT * FROM (SELECT b.*,ROWNUM r FROM (SELECT * FROM emp) b WHERE ROWNUM (pageSize*pageIndex)) t WHERE t.r (pageSize*(pageIndex-1)) -- 具体分页SQL实例 SELECT * FROM (SELECT b.*,ROWNUM r FROM (SELECT * FROM emp) b WHERE ROWNUM 12) t WHERE t.r (8)
2.连接查询
以下均以两张表连接查询为例
2.1 内连接
查询两张表符合条件的记录的交集 select * from emp,dept where emp.deptnodept.deptno; select * from emp inner join dept on emp.deptnodept.deptno; select e.ename,d.dname from emp e INNER JOIN d USING(deptno);
2.2 左外连接
将符合条件的左表中的所有数据查询出来关联着右表中的数据有则关联显示数据无则显示null两种写法 select e.name,d.name from emp e left join dept d on条件 或者是 select e.ename,d.name from emp e,dept d where d.deptno e.deptno() order by d.dname;
不可以在使用外连接的情况下使用in关键字
2.3 右外连接
将符合条件的右表中的所有数据查询出来关联着左表中的数据有则关联显示数据无则显示null两种写法 select e.name,d.name from dept d right join emp e on条件 或者是 select e.ename,d.name from emp e,dept d where d.deptno() e.deptno order by d.dname;
2.4 自连接
就是给自己取个别名然后当作两个表连接自连接中可以使用外连接。
3.子查询
3.1 基础子查询
子查询可以简单的理解为一个查询的结果作为另一个查询的条件注意在子查询中不能使用order by关键字排序必须在父查询中进行。如果子查询返回的结果是多行而其父查询中使用的是比较运算符将会出现错误。当内部select语句给外部的select语句返回一行或多行在父查询中可以使用in,any,all等关键字。如下例子 select deptno,sal from emp where (deptno,sal) in (select deptno,min(sal) from emp group by deptno);
3.2 关联子查询
关联子查询指的是子查询引用与父查询相关的一列或多列子查询需借助父查询父查询也需借助子查询。此关联子查询可用exists关键字来实现如下例子 -- 直接写关联子查询 select empno,ename,sal,deptno from emp outers where sal (select avg(sal) from emp inners where inners.deptnoouters.deptno); -- 使用exists操作符实现子查询 select empno,ename,sal,deptno from emp outers where exists (select avg(sal) from emp inners where inners.deptnoouters.deptno);
3.3 子查询应用
一般子查询经常用在from关键字和where关键字之后如下两个例子 -- 在where之后用 select * from emp where sal(select avg(sal) from emp) -- 在from之后用 select ename,dname from (select * from emp e,dept d where e.deptnod.deptno)