公司工商查询/重庆百度快照优化排名

一、视图
1、什么是视图?
在数据库中有很多表,表中存放的是实际数据,而视图中存放的是sql查询语句。使用视图时,视图会先运行里面的查询语句,从表中查找数据保存到临时表里。当客户端与数据库断开连接时该表就会自动删除。
临时表=当客户端和数据库端断开连接的时候,他会被自动删除

create view 视图名称(<视图列名1>,<视图列名2>,......)
as
<select 查询语句>;创建视图后在每次使用时用视图名代替表名即可

2、视图怎么用?
- 查询语句需要频繁使用时可保存成视图,特别是进行汇总和复杂查询等查询非常庞大的情况下使用视图可以大大的提高工作效率;
- 视图中的数据可以根据原表自动更新,这是因为视图中存放的不是数据而是sql语句。
- 视图不需要保存数据,因此可以减少存放空间;
避免在视图的基础上在创建视图,多重视图会降低视图的性能和效率
不可以向视图中插入数据
(1)创建视图

(2)使用视图

二、子查询
1、子查询是什么?
子查询是一次性的视图,与视图不同,子查询在select子句执行结束后就会消失(是一个临时表),当sql语句中有子查询时总是先运行子查询,在运行外部查询。
select...
from...(子查询) as 子查询名称
不经常使用的查询语句可以使用子查询
子查询得到的是一个集合,因此在使用all、any进行比较时算数运算要放在比较符号的右边。例如:a>3*any(b)是错误的,应该写成a/3>any(b)
避免使用多层嵌套子查询,随着子查询层数的增多系统性能和效率就会变差,而且不易读懂
from子句中的子查询包含的 [as 子查询名称] 可以省略,但为了方便阅读尽量不要省略

2、子查询怎么用?in、any、all
子查询除了可以放在from 子句里,也可以放where子句里与运算符in、any(子查询)/some(子查询)、all(子查询)一起使用。
(1)in(子查询)
seect 列名1、列名2......
from 表名
where 列名1 in(子查询)

(2)any(子查询):需要配合运算符进行
seect 列名1、列名2......
from 表名
where 列名1> any(子查询)

(3)all(子查询):需要配合运算符进行
seect 列名1、列名2......
from 表名
where 列名1> all(子查询)

三、标量子查询
标量子查询就是只能返回单一值的子查询,可以出现在任何使用单一值的位置
标量子查询是子查询的一种,它返回且只能返回单一值,因此可以和比较用算符以及in、any、all、between等一起使用实现复杂的查询
标量子查询不能返回多行结果。

成绩介于差生平均成绩和优等生平均成绩的学生

四、关联子查询
关联子查询是通过关联条件将子查询和外部查询关联起来用于对组内进行比较的查询语句,在细分的组内进行比较时使用,需在子查询中写出关联条件。
需要在每个组里比较时使用
关联条件一定要写在子查询中,因为关联条件只在子查询语句中有效

五、如何用SQL解决业务问题
1、翻译成大白话
2、写出分析思路
3、写出对应SQL子句
(1)哪些学生的成绩比课程号002的全部成绩里任意一个高呢
step1.【翻译成大白话】
- 查找课程0002的全部成绩;
- 学生成绩和0002成绩进行比较,只要比任意一个高就满足条件
step2.【写出分析思路】
- select 找什么 [成绩]
- from 从哪找 [成绩表(score)]
- where 查找条件 [课程号为0002]
- group by 分组 [没有]
- having 分组条件 [没有]
- order by 对查询结果排序[没有]
- limit从查询结果中取出指定行[没有];
- 2.select 找什么[学号,成绩]
- from 从哪找 [成绩表(score)]
- where 查找条件 [成绩>any(子查询)]
step3.【写出SQL子句】
select 学号,成绩
from score
where 成绩 >any(select 成绩
from score
where 课程号='0002');


六、各种函数

