您现在的位置是:主页 > news > 深圳做手机网站设计/推广一个产品有哪些方式

深圳做手机网站设计/推广一个产品有哪些方式

admin2025/4/24 13:00:47news

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

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

fcfda37a763262bbcaa8f4a04d7f4189.png

大纲:

一、视图

二、子查询

三、标量子查询

四、关联子查询

五、如何用 SQL 解决业务问题?

六、各种函数

一、视图

1.什么是视图?

从SQL的角度来看,视图和表是相同的,两者的区别在于表中存放的是实际数据,而视图中存放的是sql查询语句(select语句)

使用视图时,会运行视图里的sql查询语句创建出一张临时表

2.如何创建视图?

create view 视图名称(<视图列名1>,<视图列名2>,...)
as 
<select 查询语句>;

select语句需要书写在as关键字之后。select语句中列的排列顺序和视图中列的排列顺序相同。

93c4a6a048af03b310f3f12f4834673c.png

举例:查询男生、女生人数

create view 按性别汇总(性别,人数)
as
select 性别,count(*)
from student
group by 性别;

select语句中“性别,count(*)”列的排列顺序和视图中“性别,人数”列的排列顺序相同。

运行→视图→右键→刷新→双击:

c913151cf4d493706f73fb49ca8fcfe9.png

按性别汇总:

70bae2a5124ebec1e3710f40ad117135.png

3.如何使用视图?

在from子句中使用视图名称代替表名称:

select 性别,人数
from 按性别汇总;

ee5f9b188e0a1ffb0b8c32ee3f91b457.png

4.如何删除视图?

删除视图:

c97e028074296f8d1ef021f8f8c1b75b.png

5.视图有什么用?

可以将频繁使用的select语句保存成视图,这样就不用每次都重新书写了。

6.使用视图需要注意什么?

(1)避免在视图的基础上再次创建视图,因为这样多重视图会降低sql的性能和效率;

(2)不能往视图里插入数据,不然会报错。

二、子查询

1.什么是子查询?

子查询,是在from子句中直接写定义视图的sql查询语句。

sql运行顺序:先运行子查询

93c4a6a048af03b310f3f12f4834673c.png

下图红框部分为子查询:

select 性别,人数
from(select 性别,count(*) as 人数
from student
group by 性别)
as 按性别汇总;

c9eb0d51ee4dd81513beae6c6a896e97.png

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')

cfc8c3639732210bff4b8b49d1ae4409.png

(2)...all(子查询)

练习:哪些学生的成绩比课程0002的全部成绩里的都高呢?

select 学号,成绩
from score
where 成绩>all(select 成绩
from score
where 课程号='0002')

a5f968516c58cec479fb2e417ff8dbf2.png

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运行顺序

646ac90879bfc7d77a805095cc0ad354.png

三、标量子查询

1.什么是标量子查询?

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

93c4a6a048af03b310f3f12f4834673c.png

练习:大于平均成绩学生的学号和成绩

(下图红框为标量子查询)

select 学号,成绩
from score
where 成绩>(select avg(成绩)
from score)

226caa58cb8cec48e65fe9e0a8472d8b.png

练习:差生(成绩<=60),优等生(成绩>=80),介于差生平均成绩和优等生平均成绩之间的成绩和学号

select 学号,成绩
from score
where 成绩 between (select avg(成绩)
from score
where 成绩<=60) and
(select avg(成绩)
from score
where 成绩>=80);

6479e282b43f61fcf43a140e3444a031.png

标量子查询的书写位置并不仅仅局限于where子句中,通常任何可以使用单一值的位置都可以使用。也就是说,能够使用常数或者列名的地方,无论是select子句、group by子句、having子句,还是order by子句,都可以使用。

练习:查询成绩表的学号,成绩和平均成绩

select 学号,成绩,(select avg(成绩)
from score) as 平均成绩
from score;

a4f0b84350518415134059522abc6a4e.png

2.标量子查询有什么用?

(1)偶尔使用的select语句

→①单行/多行(子查询);

→②单一值(标量子查询)in,any,all,between

(2)频繁使用的select语句→视图

3.注意事项

标量子查询绝对不能返回多行结果。也就是说,如果子查询返回了多行结果,那么它就不再是标量子查询,而仅仅是一个普通的子查询了,因此不能被用在=或者<>等需要单一输入值的运算符当中,也不能用在select等子句当中。

f62ecc63593c841d88db677630d514f0.png

四、关联子查询

1.什么是关联子查询?

关联子查询,在细分的组内进行比较时使用。

93c4a6a048af03b310f3f12f4834673c.png

练习:查找出每个课程中大于对应课程平均成绩的学生

①第1步:查找出每门课程的平均成绩

select 课程号,avg(成绩)
from score
group by 课程号;

2b8e7bdb3ae308d72d3da117090c4803.png

②第2步:关联子查询(下图红框为关联条件)

select 学号,课程号,成绩
from score as s1
where 成绩>(select avg(成绩)
from score as s2
where s1.课程号=s2.课程号
group by 课程号);

04a6069ab0803f6778ed4b26d50203f9.png

关联条件一定要写在子查询里面,上面的s2仅在子查询里有效,s2能看到外面的s1,而s1看不到子查询的s2。

练习:找出每个课程里成绩最低的学号

select 课程号,成绩
from score as s1
where 成绩=(select min(成绩)
from score as s2
where s1.课程号=s2.课程号);

37e8958ccd40a1b2156ea76444e21049.png

2.关联子查询有什么用?

在每个组里进行比较时,需要使用关联子查询,关联子查询是在子查询里有一个关联条件。

(1)偶尔使用的select语句

→①单行/多行(子查询);

→②单一值(标量子查询)in,any,all,between

→③在每个组里比较(关联子查询)关联条件

(2)频繁使用的select语句→视图

五、各种函数

fd1cceb61fc91bdc7d6f7eee981927e5.png

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

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

5fc00f187fa4d75032ae09f6018fd89e.png

六、练习题:SQLZOO

346306934f08657df8cb161b25dc256c.png

world:

bcb71e8394d4b5b5ff7cf5f9ca901098.png

详情看 :

结缔:刷完这些烧脑的SQL练习题,复杂查询才能熟能生巧​zhuanlan.zhihu.com
950fb100daf677474e293484e27ba755.png

七、总结

复杂查询:

e0f0639e95d800ea5dee51af42619e6e.png

sql运行顺序:

646ac90879bfc7d77a805095cc0ad354.png

各种函数:

fd1cceb61fc91bdc7d6f7eee981927e5.png