复杂查询方法-视图、子查询、函数

视图

在一般的DBMS中定义视图时不能使用ORDER BY语句视图和表一样,数据行都是没有顺序的

ALTER VIEW <视图名> AS <SELECT语句>,修改视图结构的基本语法

包含以下结构的任意一种都是不可以被更新

聚合函数 SUM()、MIN()、MAX()、COUNT() 等。

DISTINCT 关键字。

GROUP BY 子句。

HAVING 子句。

UNION 或 UNION ALL 运算符。

FROM 子句中包含多个表。

子查询

子查询就是将用来定义视图的 SELECT 语句直接用于 FROM 子句当中

标量子查询:要求我们执行的SQL语句只能返回一个值,也就是要返回表中具体的某一行的某一列

关联子查询通过一些标志将内外两层的查询连接起来起到过滤数据的目的首先执行不带WHERE的主查询

根据主查询讯结果匹配product_type,获取子查询结果

将子查询结果再与主查询结合执行完整的SQL语句

函数

ABS 函数用于计算一个数字的绝对值,表示一个数到原点的距离

MOD 是计算除法余数(求余)的函数,是 modulo 的缩写。小数没有余数的概念,只能对整数列求余数

ROUND 函数用来进行四舍五入操作:当参数 保留小数的位数 为变量时,可能会遇到错误

CONCAT 函数进行拼接

LOWER 函数只能针对英文字母使用,它会将参数中的字符串全都转换为小写, UPPER 函数用于大写转换

REPLACE – 字符串的替换

SUBSTRING – 字符串的截取

SUBSTRING_INDEX – 字符串按索引截取:用来获取原始字符串按照分隔符分割后,第 n 个分隔符之前(或之后)的子字符串,支持正向和反向索引,索引起始值分别为 1 和 -1(SUBSTRING_INDEX (原始字符串, 分隔符,n)

CURRENT_DATE – 获取当前日期

CURRENT_TIME – 当前时间

CURRENT_TIMESTAMP – 当前日期和时间

EXTRACT – 截取日期元素

CAST – 类型转换:CAST(转换前的值 AS 想要转换的数据类型)

COALESCE – 将NULL转换为其他值:COALESCE(数据1,数据2,数据3……)

谓词就是返回值为真值的函数。包括TRUE / FALSE / UNKNOWN(LIKE,BETWEEN,IS NULL、IS NOT NULL,IN,EXISTS)

LIKE谓词 – 用于字符串的部分一致查询

BETWEEN谓词 – 用于范围查询:BETWEEN 的特点就是结果中会包含 100 和 1000 这两个临界值,也就是闭区间。如果不想让结果中包含临界值,那就必须使用 < 和 >

 IS NULL、 IS NOT NULL – 用于判断是否为NULL

IN谓词 – OR的简便用法;使用子查询作为IN谓词的参数

EXIST 谓词:判断是否存在满足某种条件的记录,如果存在这样的记录就返回真(TRUE),如果不存在就返回假(FALSE)。

EXIST(存在)谓词的主语是“记录”。

CASE 表达式是在区分情况时使用的,这种情况的区分在编程中通常称为(条件)分支:当待转换列为数字时,可以使用SUM AVG MAX MIN等聚合函数;当待转换列为文本时,可以使用MAX MIN等聚合函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值