02-中级SQL语法

直接,代表笛卡尔积

聚合函数将一袋元组作为输入,然后产生一个标量值作为输出。聚合函数(几乎)只能在 SELECT 输出列表中使用。

SELECT中非聚合函数值如果要和聚合函数一起出现,需要用GROUP BY

对每组聚合函数结果再加条件筛选,需要用having

%匹配一串字符,_匹配一个字符

SUBSTR(' ',起点(下标1开始),长度)

UPPER->大写字母

CONCAT连接

输出重定向:

可以告诉数据库管理系统将查询结果存储到另一个表中,而不是将查询结果返回给客户端(如终端)。然后,您可以在后续查询中访问这些数据。

新建一个表

已经存在表

输出控制:

由于结果 SQL 是无序的,我们必须使用 ORDER BY 子句对元组进行排序

加DESC降序排序

grade降序,sid升序

使用limit限制输出个数:

加上offset输出从第几行开始的limit个

LIMIT 2表示返回 2 行,而 OFFSET 1 表示从结果集的第 2 行开始。这样,你可以获取从第 2 行到第 3 行的数据。

嵌套查询:

在其他查询内部调用查询,在单个查询中执行更复杂的逻辑。嵌套查询通常很难优化。

外部查询的范围包含在内部查询中(即内部查询可以访问外部查询的属性),但不能反过来。

比如下面,外部查询有course,内部查询就可以使用course.id:

IN() 先看()内,生成了一个表1,包含所有cid=15-445的学生的sid,再从外面判断,student表的每行的sid是否在表1内,在表1内就输出name

先内后外

JOIN和,区别,join和on连用

EXIST 先搜索外面,遍历每一个course中的记录,去和enrolled中的每一个记录比较,如果不满足course.cid = enrolled.cid就返回false,false发给NOT EXIST,就会输出查询

窗口函数:

窗口函数对一组相关的元组进行 "滑动 "计算。与聚合函数类似,但元组不会被组合成一个单一的输出数据元组。

两个特殊的窗口函数:

ROW NUMBER->当前行号,无重复1,2,3...

OVER (PARTION BY xxx) 分组排行号

OVER(ORDER BY xxx)按序排行号

RANK()->排名,相同的级别可以有相同的排名

Common Table Expressions(CTEs)

在编写更复杂的查询时,通用表表达式(CTEs)可替代窗口或嵌套查询。它们提供了一种在大型

查询中为用户编写辅助语句的方法,CTEs被认为是一个临时表,只适用于一次查询。

WITH 子句将内部查询的输出绑定到名称为该名称的临时结果上。

如下:先创建一个临时表ctesource,存maxid,再在这个临时表和student连接后的表中select

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值