sql concat函数_SQL 的复杂查询

1.视图

定义:视图是存放SQL语句的临时表,无需保存数据,节省空间;可随原表数据变化而自动更新。

形式:Creat view 视图名称(<视图列名1>,<视图列名2>)

as <select 查询语句>;

视图列名称和查询列顺序是一一对应的。

注意事项:1)不要在视图基础上再次创建视图 2)不在视图里面插入数据

2.子查询

1)书写格式:select 学号,成绩

from score

where 成绩 in (select min(成绩) from score group by 课程号);

2)用in ; any ;some 套用子查询

select 学号,成绩

from course

where 成绩>any

(select 成绩 from course where 课程号='0002');

①查找0002的全部成绩 ②比任意一个高,使用ANY

注意事项:①a>3*all(b) 是错误的,因为数据是集合形式;a/3>all(b) 是正确的

②避免子查询层层嵌套

③select ..from .. 子查询 可以省略

3.标量子查询

1)标量子查询只返回单一值,不能使用多行数据;可以用在比较运算符中

理解标量子查询

0157510af91e2a92099ef1b1f1e6c724.png

标量1 查询结果为60,是单一的数值;标量2 查询结果是84.14 ,也是单一值,语句含义就是在成绩course表中,查询结果是成绩在60-84.14中的值。

2)

458cac050606ea7743da5f87c32c6113.png

在select 查询中也可以写入标量子查询,其中平均成绩值只有1个值即84.14,满足标量子查询的定义。

4.关联子查询

是在每个组内比较各自的条件,关联条件:where 语句 as 列名

c182891146ce9514b3c75a9a667c343b.png

思路:1)从课程表中计算平均成绩,并按照课程号进行分组排列,定义该分组名称为S2

2)从课程表中选取学号,课程号及成绩3列数值,定义系列名称为S1

3)将S1中的成绩以课程号为标准与S2中的平均成绩相比较,选取满足where 成绩>平均成绩的数值

5. Sql解决业务问题

先翻译,再理思路,最后写sql

6. 函数的应用

fda97a24e6a5adefb3d063132384f2f1.png

几种常见函数的使用方法

SQLZOO 练习

d2a234fae473fb7489e7ebbe8a75d3c1.png

3e5403150698990cf535c3b88947b80a.png
两个限制条件并列用 &#39;and&#39;

12632f107e302e088e90dc9fc4991e6a.png

87b8552cfc9a3ee8622862d6454ce620.png

8af78cf255b9ea9e9a88274f5646712a.png
concat 函数使用:concat(&#39;a&#39;,&#39;b&#39;)=concat(&#39;a.b&#39;) round 函数使用:round(a,2) 将a的值保留两位小数

38b3139daa3279287a9088ef4a41094b.png

23cdd15c77ec93a437dc2786587827ac.png
all 函数的使用

c8bff27229e9183c5787b7977b2111d8.png
limit 函数的使用

b65426ce33ebd1455f0819ecc683a8d2.png

4156ede9f44db8bd22157111e6b5ebe3.png
需要同组对比时,将同洲不同国家的人口值进行比较,需要限定同洲不同国家间的比较
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值