3.1 多表查询

1)基本语法

a)用WHERE消除笛卡尔积

多表连接笛卡尔积是无法消除的,我们只是通过WHERE进行笛卡尔积的显示消除,即只显示符合条件的内容

SELECT * FROM emp,dept

WHERE emp.deptno=dept.deptno;

b)自身关联

如查询每个雇员的姓名、工作、雇员的直接上级领导的姓名(上级领导也是在雇员表中,所以是自身关联)

SELECT e.ename,e.job,m.ename

FROM emp e,emp m

WHERE e.mgr=m.empno;

c)步步为营

如:查询每个雇员的姓名、工资、部门名称、工资在公司的等级、及其领导的姓名及工资所在公司的等级

SQL> SELECT * FROM salgrade;

GRADE      LOSAL      HISAL

---------- ---------- ----------

1        700       1200

2       1201       1400

3       1401       2000

4       2001       3000

5       3001       9999

分析:需要雇员表与部门表、工资登记表,雇员与部门用部门编号连接,雇员与工资等级是用sal在工资表的LOSAL和HISAL的范围来连接

第一步:首先查询每个雇员的姓名、工资、部门名称、工资在公司的等级

SELECT e.ename,e.sal,d.dname,s.grade

FROM emp e,dept d,salgrade s

WHERE e.deptno=d.deptno AND e.sal BETWEEN s.losal AND s.hisal;

第二步:其领导的姓名及工资所在公司的等级,所以加入蓝色部分

SELECT e.ename,e.sal,d.dname,s.grade,m.ename,m.sal,ms.grade

FROM emp e,dept d,salgrade s,emp m,salgrade ms

WHERE e.deptno=d.deptno AND e.sal BETWEEN s.losal AND s.hisal

AND e.mgr=m.empno

AND m.sal BETWEEN ms.losal AND ms.hisal;

第三步:要求按照以下的样式显示工资等级

1.第五等工资

2.第四等工资

3.第三等工资

4.第二等工资

5.第一等工资

此时肯定要使用DECODE()函数,将s.grade和ms.grade改为红色部分

SELECT e.ename,e.sal,d.dname,

DECODE(s.grade, 1,'第五等工资',2,'第四等工资',3,'第三等工资',4,'第二等工资',5,'第一等工资'),m.ename,m.sal,

DECODE(ms.grade, 1,'第五等工资',2,'第四等工资',3,'第三等工资',4,'第二等工资',5,'第一等工资')

FROM emp e,dept d,salgrade s,emp m,salgrade ms

WHERE e.deptno=d.deptno AND e.sal BETWEEN s.losal AND s.hisal

AND e.mgr=m.empno

AND m.sal BETWEEN ms.losal AND ms.hisal;

2)外连接

如dept表中有四个部门,emp表中雇员在其中3个部门中,查询雇员及所在部门的编号、名称与位置

发现没有编号为40的部门,因为雇员没有在这个部门的,所以没有显示,如果要想让它显示出来,就要用到右连接

SELECT e.empno,e.ename,d.deptno,d.dname,d.loc

FROM emp e,dept d

WHERE e.deptno=d.deptno;

(+)在=左边:表示右连接

(+)在=右边:表示左连接

SELECT e.empno,e.ename,d.deptno,d.dname,d.loc

FROM emp e,dept d

WHERE e.deptno(+)=d.deptno;

如:查找雇员的编号、姓名及其领导的编号、姓名

SELECT e.empno,e.ename,e.mgr,m.empno,m.ename

FROM emp e,emp m

WHERE e.mgr=m.empno(+);

3.2 分组统计查询

应用:例如,把男生分成一组,女生一组,然后求出每一组的平均身高、年龄,这就要用到分组函数

1)分组统计函数

常用的分组统计函数有:

COUNT():求出全部的记录数

MAX():求出一组中的最大值

MIN():求出一组中的最小值

AVG():求出平均值

SUM():求和

SELECT COUNT(empno) FROM emp;

SELECT MIN(sal) FROM emp;

SELECT MAX(sal) FROM emp;

求出20部门的总工资

SELECT SUM(sal) FROM emp WHERE deptno=20;

求出所有员工的平均工资

SELECT AVG(sal) FROM emp;

2)分组统计查询

a)GROUP BY

要想使用分组统计,则首先应该固定其语法,使用GROUP BY

SELECT [DISTINCT] *|列名 [别名]

FROM 表名

[WHERE 条件(s)]

[GROUP BY 分组条件]

[HAVING 条件(s)]

[ORDER BY 排序字段1[ASC|DESC],…]

如:求出每个部门的雇员数量,即按照部门编号分组

SELECT deptno,COUNT(empno) FROM emp GROUP BY deptno;

一般情况下,进行分组统计查询时,分组字段要出现在SELECT中,方便我们查看统计信息是哪个组的,COUNT()是统计数据量的,里面可以是*,但一般写实体表的主键,当然写其他列名称也可以

如:求出每个部门的平均工资

SELECT deptno,AVG(sal) FROM emp GROUP BY deptno;

以下代码运行会出错:

SELECT deptno,COUNT(empno) FROM emp;

原因如下:

1、如果程序中使用了分组统计函数,则有两种可以使用的情况:

程序中存在了GROUP BY并指定了分组条件,这样可以将分组条件一起查询出来;

如果不使用分组的话,则只能单独的使用分组统计函数

2、在使用分组统计函数的时候,不能出现分组统计函数和分组条件之外字段

SELECT deptno,empno,COUNT(empno)

FROMP emp

GROUP BY deptno;

此时,会提示empno不是GROUP BY表达式,所以无法使用

分组统计也支持多表查询

如:按部门分组,并显示部门名称以及员工数

SELECT d.dname,COUNT(e.empno)

FROM emp e,dept d

WHERE e.deptno=d.deptno

GROUP BY d.dname;

如:要求显示出平均工资大于2000的部门编号及平均工资

SELECT deptno,AVG(sal)

FROM emp

GROUP BY deptno

HAVING AVG(sal)>2000;

这里不能使用WHERE

SELECT deptno,AVG(sal)

FROM emp

WHERE AVG(sal)>2000

GROUP BY deptno;

因为分组统计函数只能在分组中使用,不允许在WHERE语句中出现,如果要对分组后的内容进行过滤,只能使用HAVING。

根本原因在于SQL语句的执行顺序:

FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY

WHERE先执行,GROUP BY后执行,执行分组才能使用分组统计函数,因此WHERE里不能使用分组统计函数,而HAVING在GROUP BY后执行,所以HAVING中可以使用分组统计函数

如:显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且要满足从事同一工作的雇员的月工资合计大于$5000,输出结果按月工资的总和降序排列

第一步:显示全部的非销售人员

SELECT *

FROM emp

WHERE job<> 'SALESMAN';

第二步:按工作分组,同时求出工资的总和

SELECT job,SUM(sal)

FROM emp

WHERE job<> 'SALESMAN'

GROUP BY job;

第三步:对分组的条件进行限制,工资总和大于5000

SELECT job,SUM(sal)

FROM emp

WHERE job<> 'SALESMAN'

GROUP BY job

HAVING SUM(sal)>5000;

第四步:使用排序,降序

SELECT job,SUM(sal)

FROM emp

WHERE job<> 'SALESMAN'

GROUP BY job HAVING SUM(sal)>5000

ORDER BY SUM(sal) DESC;

分组的简单原则:只有一列上存在重复的内容才有可能考虑到分组

注意:分组函数可以嵌套使用,但是在分组函数嵌套使用的时候不能在出现分组条件的查询语句

如:求出平均工资最高的部门工资

错误的代码:分组条件deptno不能出现在查询语句中

SELECT deptno,MAX(AVG(sal))

FROM emp

GROUP BY deptno;

正确的代码:

SELECT MAX(AVG(sal))

FROM emp

GROUP BY deptno;

如果分组字段要出现在SELECT语句中则只能通过子查询来完成

SELECT deptno,AVG(sal)

FROM emp

GROUP BY deptno

HAVING AVG(sal)=(

SELECT MAX(AVG(sal)) FROM emp GROUP BY deptno);

3.3 子查询

子查询定义:在一个查询的内部还包括另一个查询

子查询格式:在小括号中编写代码,()

子查询类别:

单列子查询:返回的结果是一列的一个内容,出现几率最高,单行单列

单行子查询:返回多个列,有可能是一个完整的记录,单行多列

多行子查询:返回多条记录,多行多列,就是一个表

范例:要求查询比7654工资要高的全部雇员的信息,要首先知道7654雇员的工资

SELECT sal

FROM emp

WHERE empno=7654;

之后要以以上的结果作为后续查询的依据。只要是其他的工资大于sal,就符合条件

SELECT *

FROM emp

WHERE sal>(

SELECT sal

FROM emp

WHERE empno=7654);

如:要求查询比7654工资要高,同时与7788从事相同工作的全部雇员的信息

SELECT *

FROM emp

WHERE sal>(

SELECT sal

FROM emp

WHERE empno=7654)

AND job=(

SELECT job

FROM emp

WHERE empno=7788);

如:要求查询出部门名称、部门员工数、部门的平均工资、部门的最低收入雇员的姓名

程序需要两张表关联:dept、emp

第一步:如果要想求出每个部门的员工数量及平均工资,则要按照deptno分组:

SELECT deptno,COUNT(empno),AVG(sal)

FROM emp

GROUP BY deptno;

第二步:但是如果要想查出部门的名称,则需要与dept表进行关联。红色部分是第一步的结果,以一个临时表的身份成为一个子查询

SELECT d.dname,temp.count,temp.avgsal

FROM dept d,(

SELECT deptno,COUNT(empno) count,AVG(sal) avgsal

FROM emp

GROUP BY deptno) temp

WHERE d.deptno=temp.deptno;

第三步:部门的最低收入雇员的姓名

SELECT d.dname,temp.count,temp.avgsal,e.ename

FROM dept d,emp e,(

SELECT deptno,COUNT(empno) count,AVG(sal) avgsal,MIN(sal) minsal

FROM emp

GROUP BY deptno) temp

WHERE d.deptno=temp.deptno AND e.sal=temp.minsal;

另外一种写法:

SELECT e.ename,temp.dname,temp.count,temp.avgsal

FROM emp e,(

SELECT d.dname dname,COUNT(e.empno) count,AVG(sal) avgsal,MIN(sal) minsal

FROM emp e,dept d

WHERE e.deptno=d.deptno

GROUP BY d.dname) temp

WHERE e.sal=temp.minsal;

如果此时在一个部门中同时存在两个最低工资的雇员,程序就会出错。

当返回的数据是多行1列时,需要使用范围标记,在WHERE子句中使用子查询

1)IN

指定查询的范围

如:求出每个部门最低工资的雇员信息。每个部门的最低工资,返回值肯定是多个,所以此时可以使用IN指定一个操作范围

SELECT *

FROM emp

WHERE sal IN (

SELECT MIN(sal)

FROM emp

GROUP BY deptno);

2)ANY

三种情况:

=ANY 与IN的操作符的功能完全一样

SELECT *

FROM emp

WHERE sal=ANY (

SELECT MIN(sal)

FROM emp

GROUP BY deptno);

>ANY 比里面最小的值要大

SELECT *

FROM emp

WHERE sal>ANY (

SELECT MIN(sal)

FROM emp

GROUP BY deptno);

<ANY 比里面最小的值要小

SELECT *

FROM emp

WHERE sal<ANY (

SELECT MIN(sal)

FROM emp

GROUP BY deptno);

3)ALL

>ALL 比最大的值要大

SELECT *

FROM emp

WHERE sal>ALL (

SELECT MIN(sal)

FROM emp

GROUP BY deptno);

<ALL 比最小的值要小

SELECT *

FROM emp

WHERE sal<ALL (

SELECT MIN(sal)

FROM emp

GROUP BY deptno);

对于子查询来讲,还可以进行多列子查询,一个子查询中同时返回多个查询的列,但在开发中不建议使用,这种情况可以拆成多个子查询

查询与SCOTT工资相同,工作也相同的雇员信息

SELECT *

FROM emp

WHERE (sal,job)=(

SELECT sal,job

FROM emp

WHERE ename='SCOTT')

AND ename<>'SCOTT';

可以拆成两个子查询

SELECT *

FROM emp

WHERE sal=(SELECT sal FROM emp WHERE ename='SCOTT') AND

job=(SELECT job FROM emp WHERE ename='SCOTT')

AND ename<>'SCOTT';

3.4 集合操作

在oracle中提供了三种类型的集合操作:并UNION,交INTERSECT,查MINUS

并UNION:将多个查询结果组合到一个查询结果之中,无重复内容

并UNION ALL:将多个查询结果组合到一个查询结果之中,有重复内容

交INTERSECT:返回多个查询结果中相同的部分

差MINUS:返回两个查询结果的差集

为了更好的观察以上的查询结果,下面复制emp表,将20部门的雇员信息取出来

CREATE TABLE emp20 AS SELECT * FROM emp WHERE deptno=20

1)UNION操作

SELECT * FROM emp

UNION

SELECT * FROM emp20;

2)UNION ALL操作

SELECT * FROM emp

UNION ALL

SELECT * FROM emp20;

3)INTERSECT操作

SELECT * FROM emp

INTERSECT

SELECT * FROM emp20;

4)MINUS操作

SELECT * FROM emp

MINUS

SELECT * FROM emp20;

3.5 查询综合练习

1)列出至少有一个员工的所有部门

第一步:求出所有部门的员工数量

SELECT deptno,COUNT(empno)

FROM emp

GROUP BY deptno;

第二步:求出员工数大于1的部门编号

SELECT deptno,COUNT(empno)

FROM emp

GROUP BY deptno

HAVING COUNT(empno)>1;

第三步:通过部门表查出部门信息

SELECT d.*,temp.count

FROM dept d,(

SELECT deptno,COUNT(empno) count

FROM emp

GROUP BY deptno

HAVING COUNT(empno)>1) temp

WHERE d.deptno=temp.deptno;

2)列出薪金比Smith高的所有员工

第一步:求出SMITH的工资

SELECT sal

FROM emp

WHERE ename= 'SMITH';

第二步:以上面的结果为条件,查询所有符合条件的结果

SELECT *

FROM emp

WHERE sal>(

SELECT sal

FROM emp

WHERE ename= 'SMITH');

3)列出所有员工姓名及其直接上级的姓名

SELECT e.ename,m.ename

FROM emp e,emp m

WHERE e.mgr=m.empno(+);

4)列出所有受雇佣日期早于其直接上级的雇员的姓名、领导姓名、部门名称

第一步:自身关联,查找mgr=empno的同时还要比较hiredate

SELECT e.ename,m.ename

FROM emp e,emp m

WHERE e.mgr=m.empno

AND e.hiredate<m.hiredate;

第二步:要加入部门信息,则肯定应该加入dept表

SELECT e.ename,m.ename,d.dname

FROM emp e,emp m,dept d

WHERE e.mgr=m.empno

AND e.hiredate<m.hiredate

AND e.deptno=d.deptno;

还可以使用子查询来做:

SELECT temp.ename,temp.mname,d.dname

FROM dept d,(

SELECT e.ename ename,m.ename mname,e.deptno deptno

FROM emp e,emp m

WHERE e.mgr=m.empno

AND e.hiredate<m.hiredate) temp

WHERE d.deptno=temp.deptno;

5)列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门

SELECT d.dname,e.*

FROM dept d,emp e

WHERE d.deptno=e.deptno(+);

使用左外连接,显示没有雇员的40部门

6)列出所有“CLERK(办事员)”的姓名及其部门名称、部门人数

第一步:找出所有办事员的姓名及部门编号

第二步:部门名称,需要部门表

SELECT e.ename,d.deptno

FROM emp e,dept d

WHERE job= 'CLERK' AND d.deptno=e.deptno(+);

第三步:分组求人数

SELECT e.ename,d.dname,temp.count

FROM emp e,dept d,(

SELECT deptno,COUNT(empno) count

FROM emp e

GROUP BY deptno) temp

WHERE e.job='CLERK'

AND e.deptno=d.deptno

AND d.deptno=temp.deptno;

7)列出最低薪金大于1500的各种工作以及从事此工作的全部雇员的人数

第一步:按工资分组,分组条件为最低工资大于1500

SELECT job,MIN(sal)

FROM emp

GROUP BY job

HAVING MIN(sal)>1500;

第二步:求出全部雇员人数

SELECT e.job,COUNT(e.empno)

FROM emp e

WHERE e.job IN (

SELECT job

FROM emp

GROUP BY job

HAVING MIN(sal)>1500)

GROUP BY e.job;

另外一种写法:

SELECT temp.job,temp.count

FROM (

SELECT job,MIN(sal),COUNT(empno) count

FROM emp

GROUP BY job

HAVING MIN(sal)>1500) temp;

8)列出在“SALES(销售部)”工作的员工姓名,假定不知道销售的部门号

第一步:通过dept表查询销售部的部门编号

SELECT deptno

FROM dept

WHERE dname= 'SALES';

第二步:将之前的作为子查询

SELECT ename

FROM emp

WHERE deptno=(

SELECT deptno

FROM dept

WHERE dname= 'SALES');

9)列出薪金高于公司平均薪金的所有员工、所在部门、上级领导,工资等级

第一步:求出工资平均薪金

SELECT AVG(sal)

FROM emp;

第二步:列出薪金高于平均工资的所有雇员信息

SELECT *

FROM emp

WHERE sal>(

SELECT AVG(sal)

FROM emp);

第三步:求出所在部门,要关联部门表

SELECT e.*,d.dname,d.loc

FROM emp e,dept d

WHERE sal>(

SELECT AVG(sal)

FROM emp)

AND e.deptno=d.deptno;

第四步:求出上级领导,要自身关联

SELECT e.empno,e.ename,d.dname,m.ename

FROM emp e,dept d,emp m

WHERE e.sal>(

SELECT AVG(sal)

FROM emp)

AND e.deptno=d.deptno

AND e.mgr=m.empno(+);

第五步:求出雇员的工资等级

SELECT e.empno,e.ename,d.dname,m.ename,s.grade

FROM emp e,dept d,emp m,salgrade s

WHERE e.sal>(

SELECT AVG(sal)

FROM emp)

AND e.deptno=d.deptno

AND e.mgr=m.empno

AND e.sal BETWEEN s.losal AND s.hisal;

10)列出与SCOTT从事相同工作的所有员工及部门名称

第一步:找到SCOTT的工作

SELECT job

FROM emp

WHERE ename= 'SCOTT';

第二步:找出与其从事相同工作的人

SELECT empno,ename,job,sal

FROM emp

WHERE job=(

SELECT job

FROM emp

WHERE ename= 'SCOTT')

AND ename<>'SCOTT';

第三步:与部门表关联,查询部门名称

SELECT e.empno,e.ename,e.job,e.sal,d.dname

FROM emp e,dept d

WHERE e.deptno=d.deptno

AND job=(

SELECT job

FROM emp

WHERE ename='SCOTT')

AND e.ename<>'SCOTT';

11)列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金

第一步:求出30部门的薪金

SELECT sal

FROM emp

WHERE deptno=30;

第二步:上一步作为子查询

SELECT ename,sal

FROM emp

WHERE sal IN (

SELECT sal

FROM emp

WHERE deptno=30);

部门编号不应该为30

SELECT ename,sal

FROM emp

WHERE sal IN (

SELECT sal

FROM emp

WHERE deptno=30)

AND deptno<>30;

12)列出薪金高于部门30中工作的所有员工的薪金的员工姓名和薪金、部门名称

第一步:在之前的程序上进行修改,使用>ALL,比最大的还要大

SELECT ename,sal

FROM emp

WHERE sal>ALL (

SELECT sal

FROM emp

WHERE deptno=30)

AND deptno<>30;

第二步:与dept关联,求出部门名称

SELECT e.ename,e.sal,d.dname

FROM emp e,dept d

WHERE sal>ALL (

SELECT sal

FROM emp

WHERE deptno=30)

AND d.deptno<>30

AND e.deptno=d.deptno;

13)列出在每个部门工作的员工数量、平均工资和平均服务年限

第一步:求出每个部门的员工数量,部门名称

SELECT d.dname,COUNT(e.empno)

FROM dept d,emp e

WHERE d.deptno=e.deptno

GROUP BY d.dname;

第二步:平均工资和服务年限

SELECT d.dname,COUNT(e.empno) count,AVG(sal) avgsal,

AVG(MONTHS_BETWEEN(SYSDATE,hiredate)/12) avgyear

FROM emp e,dept d

WHERE e.deptno=d.deptno

GROUP BY d.dname;

14)列出所有部门的详细信息和部门人数

第一步:列出所有部门的人数

SELECT deptno dno,COUNT(empno) count

FROM emp

GROUP BY deptno;

第二步:列出部门的详细信息

SELECT d.*,temp.count

FROM dept d,(

SELECT deptno dno,COUNT(empno) count

FROM emp

GROUP BY deptno) temp

WHERE d.deptno=temp.dno;

但是没有雇员的40部门也应该显示出来,人数应该是0

SELECT d.*,NVL(temp.count,0)

FROM dept d,(

SELECT deptno dno,COUNT(empno) count

FROM emp

GROUP BY deptno) temp

WHERE d.deptno=temp.dno(+);

15)列出各种工作的最低工资及从事此工作的雇员姓名

第一步:按工作分组,用MIN求出最低工资

SELECT job,MIN(sal)

FROM emp

GROUP BY job;

第二步:求出从事此工作的雇员姓名

SELECT *

FROM emp

WHERE sal IN (

SELECT MIN(sal)

FROM emp

GROUP BY job);

16)列出各个部门的MANAGER的最低薪金

SELECT deptno,MIN(sal)

FROM emp

WHERE job= 'MANAGER'

GROUP BY deptno;

17)列出所有员工的年薪,按照年薪从低到高排序

在处理年薪的时候要注意奖金,奖金要使用NVL函数

SELECT (sal+NVL(comm,0))*12 income

FROM emp

ORDER BY income DESC;

18)查询出每个员工的上级主管,并找出这些主管中的薪水超过3000的人

SELECT DISTINCT m.ename

FROM emp e,emp m

WHERE e.mgr=m.empno;

AND m.sal>3000;

19)求出部门名称中带“S”字符的部门的员工、工资总和、部门人数

第一步:查询部门表的部门名称,使用模糊查询,来确定部门的编号

SELECT deptno

FROM dept

WHERE dname LIKE '%S%';

第二步:上面作为子查询

SELECT deptno,SUM(sal),COUNT(empno)

FROM emp

WHERE deptno IN (

SELECT deptno

FROM dept

WHERE dname LIKE '%S%')

GROUP BY deptno;

20)给任职日期超过10年的人加薪10%

UPDATE emp SET sal=sal*1.1

WHERE (MONTHS_BETWEEN(SYSDATE,hiredate)/12)>10;

Oracle从零开始3——复杂查询相关推荐

  1. Oracle从零开始2——简单查询

    2.1 所需要的表 雇员表(EMP) No 字段 类型 描述 1 EMPNO NUMBER(4) 表示雇员编号,是唯一编号 2 ENAME VARCHAR2(10) 表示雇员姓名 3 JOB VARC ...

  2. oracle主从关系表查询,Oracle 主从表联合查询解决方法

    Oracle 主从表联合查询 表A id   type   name 1    E      AA 2    F 表B id   Aid    name 1    2      BB 2    2   ...

  3. [推荐推荐][提供下载]ORACLE SQL:经典查询练手系列文章收尾(目录篇)

    [推荐推荐][提供下载]ORACLE SQL: 经典查询练手系列文章收尾(目录篇) --通过知识共享树立个人品牌. 通过近一个月的努力,<经典查询练手系列>也快告一段落,但并不代表结束,以 ...

  4. Oracle数据库日期范围查询的两种实现方式

    Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设要查询2011-05-02到2011-05-30之间的数据,实现方式如下 ...

  5. oracle多表关联查询报表,oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: sql> create table student1 ( sid varchar(3), sname varchar(6), sage ...

  6. oracle按时间要求查询

    一  按时间查询 格式: 1,当时间条件字段为字符串类型的时候,通过以下方法查询数据: 1.1.SELECT * FROM 表名 t WHERE 条件1 AND to_date(t.表名,'yyyy/ ...

  7. Oracle数据库之子查询

    Oracle数据库总结: Oracle数据库之基本查询 Oracle数据库之过滤和排序 Oracle数据库之单行函数 Oracle数据库之多行函数 Oracle数据库之多表查询 SQL> 注意的 ...

  8. Oracle数据库之基本查询

    oracle安装参照: Oracle数据库之安装教程 Oracle数据库总结: Oracle数据库之基本查询 Oracle数据库之过滤和排序 Oracle数据库之单行函数 Oracle数据库之多行函数 ...

  9. oracle数据库分层,Oracle数据库的分层查询(一)

    我们知道关系数据库不是以分层形式存储数据的,那么我们又该如何以分层方法获取数据呢?本文将为你介绍由Oracle提供的分层查询特性,告诉你分层查询的概念,并迎合你的需要构建一个分层查询. 使用分层查询时 ...

最新文章

  1. mybatis完整增删改查入门实例
  2. React开发中使用fetch进行异步请求
  3. YbtOJ#853-平面标记【整体二分,凸壳】
  4. 浙江工业大学计算机应用基础,浙江工业大学期终考试命题稿-浙江大学人文学院.doc...
  5. LIST函数JAVA特点_Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)...
  6. Hibernate→ORM、简介、第一个Hibernate实现、核心XML配置、Hibernate执行流程、操作数据库对象session、事务、映射XML配置、单例CRUD、get与load
  7. 5198.丑数III
  8. 中航信Eterm协议解析,解包,封包源码
  9. 5G牌照发放了,但需要购买5G手机的用户应等明年再购买
  10. VMWare ESXi上传iso镜像文件
  11. PanDownload 复活了!60MB/s!附下载地址
  12. matlab模块封装端口位置,simulink模块端口位置
  13. simpledateformat怎么改变格式 SimpleDateFormat 的使用及其 注意事项
  14. MATLAB画图中图形对象、文字标注、希腊字母显示等
  15. DCDC电源SW波形负压以及轻载振荡问题
  16. 手把手教你R语言做k均值聚类分析
  17. INCONEL 617 耐腐蚀性能
  18. 普元 AppServer 7.0 执行startServer.cmd启动,命令行一直启动中,server.log报错:com.primeton.appserver.l7e.exception.Impr
  19. c#垂直投影法_c#求点到直线的投影点坐标
  20. 服务器怎么和网站接入,网站服务器的带宽怎么接入呢?

热门文章

  1. 装饰者模式-继承模式和接口模式
  2. docker--shell和Exec格式
  3. springboot整合activemq加入会签,自动重发机制,持久化
  4. Sticky vs fixed
  5. 小学四则运算结对项目报告(GUI)
  6. CentOS6.4x64_安装Qt5
  7. hdu 2072单词数
  8. VC++即时通讯+视频会议源码
  9. CVPR 2021 论文开放下载了!
  10. 3000类别,20万个标注,山师等推出大规模Logo检测数据集:LogoDet-3K