数值 转 字符串 sql_SQL复杂查询练习

一、创建视图

  • 什么是视图:视图中存放的是SQL查询语句,使用视图时,会运行视图里的SQL查询语句创建一张临时表。SQL查询语句中列的顺序和视图中列的顺序是一一对应的。
  • 视图的作用:当有些SQL语句需要频繁使用时,就可以创建为视图,直接在from子句后面引用视图,不必每次都书写完整的SQL语句。可以简化我们的工作量。视图可以随原表数据更新而更新。
  • 使用注意事项:避免创建多重视图(即在视图的基础上再次创建),这样会降低SQL的性能;视图中不能插入数据。

练习:

创建视图‘按课程号汇总’:

create 

运行视图:

select 

二、子查询

  • 什么是子查询:在一个SQL语句中嵌套另一个SQL语句。可视为一个一次性的视图。
  • 子查询的作用:可以放到where子句里从而构造复杂的查询条件,例如in(子查询)、any(子查询)、all(子查询)等。
  • 使用注意事项:使用all得到的是数据集合,不能直接用于数据计算;尽量避免层层嵌套;尽量使用as为列设置别名。

练习:

找出成绩比课程0002的全部成绩里的任意一个高的学生:

select 

找出成绩比课程0002的全部成绩高的学生:

select 

三、标量子查询

  • 什么是标量子查询:将子查询的结果返回为单一值。
  • 标量子查询的作用:任何使用单一值的地方都可以运行标量子查询,和比较运算符一起进行数据运算。
  • 使用注意事项:不能返回多行查询记录。

练习:

查询大于平均成绩的学生学号和成绩:

select 

假设差生(成绩<=60),优等生(成绩>=80),查询成绩介于差生平均成绩和优等生平均成绩之间的学生:

select 

四、关联子查询

  • 什么是关联子查询:在子查询中使用关联条件。
  • 关联子查询的作用:将数据进行分组后,在每个组里进行比较时使用。
  • 使用注意事项:关联条件只能写在子查询里。

练习:

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

select 

查找每个课程里成绩最高的学生:

select 

五、常用的函数汇总

汇总函数

count(计数),sum(求和),avg(平均值),min(最小值),max(最大值)

算术函数

  • 四舍五入:round(数值,保留小数位数)
  • 绝对值:abs(数值)
  • 求余数:mod(被除数,除数)

日期函数

  • 当前日期:current_date
  • 当前时间:current_time
  • 当前日期和时间:current_timestamp
  • 获取日期的年月日:year(日期),month(日期),day(日期)
  • 日期对应星期几:dayname(日期)

字符串函数

  • 字符串长度:length(字符串)
  • 大小写转换:lower(),upper()
  • 字符串拼接:concat(字符串1,字符串2)
  • 字符串替换:replace(字符串,被替换字符串,用什么字符串替换)
  • 字符串截取:substring(字符串,截取起始位置,截取长度)

六、SQL ZOO练习

7e84ff8221652b9b5bf76187156f6812.png

1451a210ece44ede11cccb46555069cd.png

7f8fa7c49c02b694ccde0efd5bd98cc3.png

247d08ea30031b3f89889798ce985224.png

1a4eb8f0eda924379e1f38b479dc6dd5.png

80a495dbc3e4bebbf2f8e61ede3933ff.png

061d0c69b661af22cb45ffee0afc1c7b.png

b3c8d4670dba475231d6b8a3ede3667e.png

882777866d52054e37e6651f3892fec3.png

ac57e482d3bce5c7f8b348418bdcd8bc.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值