数据库查询

1查询的方式:

1.1嵌套查询——多表-纵(语句效果)纵(结果存放效果)

1.1.1:分类

1.1.1.1:逻辑分类

1.1.1.1.1:相关子查询:外部查询返回一行,子查询执行一次(子查询字段来自外部的返回列)

1.1.1.1.2:非相关子查询:子查询一次性执行完后,返回给外部查询

1.1.1.2:语句位置分类

1.1.1.2.1:嵌套查询——查询出的结果为下一查询语句的表

1.1.1.2.2:条件查询——where、having

select *
from emp a
where sal = (select max(sal) from emp b where b.deptno=a.deptno);

 

1.1.1.2.3:计算列查询——子查询为某列

--查询各部门的人数及最高工资
select deptno,dname,
       (select count(*) from emp where emp.deptno=dept.deptno ) 人数,
       (select max(sal) from emp where emp.deptno=dept.deptno ) 最高工资
from dept 

 

1.1.1.2.

1.2:笛卡尔乘积=>连接——多表-横横

1.2.1:交叉联接=笛卡尔乘积

1.2.2:内联接——关系运算符来匹配表

1.2.2.1:相等联接+不相等联接

1.2.2.2:自联接

1.2.3:外联接——显示部分无法匹配的表

1.2.3.1左外联接+右外联接+全外联接

1.3:投影

1.4:选择

1.5:同表(列数一样、对应列数据类型相似)操作——多表-横纵

1.5.1:并 union

1.5.2:交

1.5.3:差

 2.1查询筛选关键字

2.1.1

in——返回多个结果select Name from Course where CourseID in(select CourseID from exam where SustainedOn+'2003-03-10');

2.1.2:exists——子查询是否有返回记录。

select * from dept
where not exists(
  select * from emp where emp.deptno=dept.deptno
)
·子查询用的是=,所以能够用到索引(前提是emp.deptno上有索引)。
·如果有多行数据返回,exists只会查找其中任意一条,而不会遍历。

 

2.1.3:any——子查询返回的所有记录至少有一条满足。数值型=Max

2.1.4 :all——子查询返回的所有记录是否满足。数值型=min

2.1.5:as——

2.1.6:计算列——数据不存在数据库中,从数据库中构造、计算而得。

             ——在select语句选择返回列的地方,插入非数据库字段时其文字作为新增字段的值

2.1.7:distinct

2.1.8:null——遇见null,就跟null混。

           *nvl(TRUE,FALSE);

3查询语句执行顺序

3.1

from

——>where——在统计前过滤不满足条件的记录

——>group by——对过滤所得结果集,分组统计
——>having——对统计结果过滤
——>order by对最总结果排序

3.2

3.3

3.4

3.5

3.6

你可能感兴趣的:(数据库)