您现在的位置是:主页 > news > 深圳做手机网站设计/推广一个产品有哪些方式
深圳做手机网站设计/推广一个产品有哪些方式
admin2025/4/24 13:00:47【news】
简介深圳做手机网站设计,推广一个产品有哪些方式,淘宝客为什么做网站,网站建设vi设计大纲:一、视图二、子查询三、标量子查询四、关联子查询五、如何用 SQL 解决业务问题?六、各种函数一、视图1.什么是视图?从SQL的角度来看,视图和表是相同的,两者的区别在于表中存放的是实际数据,而视图中存放的是sql查…

大纲:
一、视图
二、子查询
三、标量子查询
四、关联子查询
五、如何用 SQL 解决业务问题?
六、各种函数
一、视图
1.什么是视图?
从SQL的角度来看,视图和表是相同的,两者的区别在于表中存放的是实际数据,而视图中存放的是sql查询语句(select语句)。
使用视图时,会运行视图里的sql查询语句创建出一张临时表。
2.如何创建视图?
create view 视图名称(<视图列名1>,<视图列名2>,...)
as
<select 查询语句>;
select语句需要书写在as关键字之后。select语句中列的排列顺序和视图中列的排列顺序相同。

举例:查询男生、女生人数
create view 按性别汇总(性别,人数)
as
select 性别,count(*)
from student
group by 性别;
select语句中“性别,count(*)”列的排列顺序和视图中“性别,人数”列的排列顺序相同。
运行→视图→右键→刷新→双击:

按性别汇总:

3.如何使用视图?
在from子句中使用视图名称代替表名称:
select 性别,人数
from 按性别汇总;

4.如何删除视图?
删除视图:

5.视图有什么用?
可以将频繁使用的select语句保存成视图,这样就不用每次都重新书写了。
6.使用视图需要注意什么?
(1)避免在视图的基础上再次创建视图,因为这样多重视图会降低sql的性能和效率;
(2)不能往视图里插入数据,不然会报错。
二、子查询
1.什么是子查询?
子查询,是在from子句中直接写定义视图的sql查询语句。
sql运行顺序:先运行子查询

下图红框部分为子查询:
select 性别,人数
from(select 性别,count(*) as 人数
from student
group by 性别)
as 按性别汇总;

2.如何使用子查询?
...in(子查询)
...any(子查询)
...all(子查询)
(1)...any(子查询)
...any(子查询)与some(子查询)相同
select 列名1
from 表名1
where 列名1>any(子查询);
练习:哪些学生的成绩比课程0002的全部成绩里的任意一个高呢?
①第1步:查找出课程0002的全部成绩
select 课程号,成绩
from score
where 课程号='0002'
②第2步:哪些学生的成绩比任意一个高?
select 学号,成绩
from score
where 成绩>any(子查询)
③最终sql
select 学号,成绩
from score
where 成绩>any(select 成绩
from score
where 课程号='0002')

(2)...all(子查询)
练习:哪些学生的成绩比课程0002的全部成绩里的都高呢?
select 学号,成绩
from score
where 成绩>all(select 成绩
from score
where 课程号='0002')

3.子查询有什么用?
偶尔使用的select语句→子查询
频繁使用的select语句→视图
4.注意事项
(1)两个数据比较,比如a>3*all(b)
因为all得到的不是一个数字,而是一个集合,得到的是n行数据。所以,不能写成a>3*all(b),只能写成a/3>all(b)。
(2)select ... from(子查询(子查询))
子查询的层数没有限制,可以无限嵌套下去。但是,随着子查询嵌套层数的增加,sql语句会变得越来越难读懂,性能也会越来越差。因此,尽量避免使用多层嵌套的子查询。
(3)select ... from ... 子查询 as 子查询名称
为子查询设定名称时需要使用as关键字,as关键字可以省略。但为了方便自己和别人看懂,尽量不要省略,为子查询设定恰当的名称。
5.sql运行顺序

三、标量子查询
1.什么是标量子查询?
标量子查询,是返回单一值的子查询。因此,标量子查询的返回值可以用在=或者<>这样需要单一值的比较运算符之中。where子句后不能使用聚合函数,但可以使用标量子查询。

练习:大于平均成绩学生的学号和成绩
(下图红框为标量子查询)
select 学号,成绩
from score
where 成绩>(select avg(成绩)
from score)

练习:差生(成绩<=60),优等生(成绩>=80),介于差生平均成绩和优等生平均成绩之间的成绩和学号
select 学号,成绩
from score
where 成绩 between (select avg(成绩)
from score
where 成绩<=60) and
(select avg(成绩)
from score
where 成绩>=80);

标量子查询的书写位置并不仅仅局限于where子句中,通常任何可以使用单一值的位置都可以使用。也就是说,能够使用常数或者列名的地方,无论是select子句、group by子句、having子句,还是order by子句,都可以使用。
练习:查询成绩表的学号,成绩和平均成绩
select 学号,成绩,(select avg(成绩)
from score) as 平均成绩
from score;

2.标量子查询有什么用?
(1)偶尔使用的select语句
→①单行/多行(子查询);
→②单一值(标量子查询)in,any,all,between
(2)频繁使用的select语句→视图
3.注意事项
标量子查询绝对不能返回多行结果。也就是说,如果子查询返回了多行结果,那么它就不再是标量子查询,而仅仅是一个普通的子查询了,因此不能被用在=或者<>等需要单一输入值的运算符当中,也不能用在select等子句当中。

四、关联子查询
1.什么是关联子查询?
关联子查询,在细分的组内进行比较时使用。

练习:查找出每个课程中大于对应课程平均成绩的学生
①第1步:查找出每门课程的平均成绩
select 课程号,avg(成绩)
from score
group by 课程号;

②第2步:关联子查询(下图红框为关联条件)
select 学号,课程号,成绩
from score as s1
where 成绩>(select avg(成绩)
from score as s2
where s1.课程号=s2.课程号
group by 课程号);

关联条件一定要写在子查询里面,上面的s2仅在子查询里有效,s2能看到外面的s1,而s1看不到子查询的s2。
练习:找出每个课程里成绩最低的学号
select 课程号,成绩
from score as s1
where 成绩=(select min(成绩)
from score as s2
where s1.课程号=s2.课程号);

2.关联子查询有什么用?
在每个组里进行比较时,需要使用关联子查询,关联子查询是在子查询里有一个关联条件。
(1)偶尔使用的select语句
→①单行/多行(子查询);
→②单一值(标量子查询)in,any,all,between
→③在每个组里比较(关联子查询)关联条件
(2)频繁使用的select语句→视图
五、各种函数

练习:查找1990年出生的学生名单

select 学号,姓名
from student
where year(出生日期)=1990;

六、练习题:SQLZOO

world:

详情看 :
结缔:刷完这些烧脑的SQL练习题,复杂查询才能熟能生巧zhuanlan.zhihu.com
七、总结
复杂查询:

sql运行顺序:

各种函数:
