sql中除法_SQL复杂查询

复杂查询

视图

  • 视图存放sql查询语句,而非数据
  • 为什么使用
  • 提高效率
  • 数据会自动更新
  • 不用保存,可以节省存放数据设备的空间
  • 事项
  • 避免多重视图
  • 不能往视图里面插入数据,以免报错
create view summary(sex, person) as
select s_sex, count(*)
from student
group by s_sex;

eb0a62d92b1122f04c225167596f385d.png

子查询

  • 在一个select查询语句中嵌套了另一个select查询语句
  • 临时表
-- 查询每个课程里成绩最低的学号

select s_id, s_score from score
where s_score in
(
select min(s_score) from score
group by c_id
)

any all 子查询

-- 哪些学生的成绩比课程0002的全部课程里的任意一个高呢?

da6863bc297cb80fe55bec34db4c5667.png

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

84b4a5db669ed34a9e196620c65633e2.png
  • 偶尔使用:子查询
  • 频繁使用:私家车

注意事项: - 避免使用层层嵌套 - 书写规范,养成良好习惯

标量子查询

  • where子句中不能使用汇总函数
  • 返回单一的值(一行一列)

-- 查找成绩介于差生平均成绩和优等生平均成绩之间的学生有哪些

b77d13e724a86741f1b62f3486cc3037.png

任何使用单一值的地方,都可以使用标量子查询

b26373418f337a6bf7eed80957d6fc05.png

关联子查询

-- 查询每个课程中大于对应课程平均成绩的学生

select a.s_id, a.c_id, a.s_score from score as a
where s_score > (select avg(s_score) from score as b
                 where a.c_id=b.c_id
                 group by c_id);

用SQL解决业务问题

  • 翻译成大白话
  • 写出分析思路
  • 写出对应的SQL语句
  • 报错,排除法逐一排查

各种函数

  • round(123.234, 2)
  • abs(-100)
  • mod(5,2)
  • length('abcde')
  • lower('A')
  • upper('a')
  • concat('A', 'B')
  • replace('acb', 'b', 'd')
  • substring('abcde', 2, 3)
  • current_date
  • current_time
  • current_timestamp
  • year('2020-05-02')
  • month('2020-05-02')
  • day('2020-05-02')
  • dayname('2020-05-02 10:41:23')

回顾总结

7e3d02f6afb6f8ab043f50e06e887222.png

4f734b3c505a6b9b67201b75bd41ece8.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值