2025年mysql窗口函数排序(mysql的排序语句)

mysql窗口函数排序(mysql的排序语句)文章目录 MySQL 高级 SQL 语句操作 一 按关键字排序 二 对结果进行分组 三 限制结果条目 四 设置别名 五 通配符 六 子查询 七 NULL 值 八 正则表达式 九 运算符 1 算术运算符 2 比较运算符 3 逻辑运算符 4 位运算符 5 运算符的优先级 十 表的连接方式 1 内连接 2 外连接 1 左连接 2 右连接 1 使用 ORDER BY 语句来实现排序 2

大家好,我是讯享网,很高兴认识大家。



文章目录

  • MySQL 高级 SQL 语句操作
  • 一:按关键字排序
  • 二:对结果进行分组
  • 三:限制结果条目
  • 四:设置别名
  • 五:通配符
  • 六:子查询
  • 七:NULL值
  • 八:正则表达式
  • 九:运算符
  • 1:算术运算符
  • 2:比较运算符
  • 3:逻辑运算符
  • 4:位运算符
  • 5:运算符的优先级
  • 十:表的连接方式
  • 1:内连接
  • 2:外连接
  • (1):左连接
  • (2):右连接

1. 使用ORDER BY语句来实现排序

2. 排序可针对一个或多个字段

3. ASC:升序默认排序方式

4. DESC:降序

5. ORDER BY的语法结构

6. 按单字段排序

7:按多字段排序

以此表为例,进行高级操作

(1)使用 ORDER BY 进行字段查询

  • 对 name 和 age 查询并对 age 降序查看
  • 对 name 和 age 查询并对 age 升序查看

(2)使用 ORDER BY 进行多字段查询

  • 对age,name,height 对字段降序查看
  • 对age,name,height 对字段升序查看

1:使用GROUP BY语句来实现分组

2:通常结合聚合函数一起使用

3:可以按一个或多个字段对结果进行分组

4:GROUP BY的语法结构

以此表为例进行高级操作

(1)GROUP BY分组示例

  • 对 weight 大于 140 的 name 和 age 进行分组

(2)GROUP BY结合ORDER BY

  • 对 weight 大于 120 的 name 和 age 进行分组,并对 name 分组进行降序排序

1:只返回SELECT查询结果的第一行或前几行

2:使用LIMIT语句限制条目

3:LIMIT语法结构

4:LIMIT限制结果条数

5:不从第一条开始取值

以此表进行限制条目操作

(1)限制结果的行数

  • 限制表的前 5 行

(2)不从第一条开始取值

  • 不从 1 开始,取值后面的 5 行

1:使用AS语句设置别名,关键字AS可省略

2:设置别名时,保证不能与库中其他表或字段名称冲突

3:别名的语法结构

4:AS的用法

5:AS作为连接语句

以此表为例进行 AS 操作

(1)AS 的第一种操作

  • 查询表的行数

(2)AS 的第二种操作

  • 设置别名,id 设为 aaa,height 设为 bbb,weight 设为 ccc ,表 a 设为 表 aa
  • 设置别名,id 设为 aaa,height 设为 bbb,weight 设为 ccc ,表 a 设为 表 aa,只显示 height
    大于等于 180 的

  • 设置别名,查询前3行

(3)AS作为连接语句

  • 复制表的结构以及数据

1:用于替换字符串中的部分字符

2:通常配合 LIKE 一起使用,并协同 WHERE 完成查询

3:常用通配符

  • %表示零个、一个或多个
  • _表示单个字符

4:通配符%的用法

5:通配符_的用法

以此表进行通配符操作

(1)使用 % 进行检索查询

  • 查询表里以 l 开头的 name
  • 查询表里以 n 结尾的 name

(2)通配符_的用法

  • 查询 name 里的单个字符

1:也称作内查询或者嵌套查询

2:先于主查询被执行,其结果将作为外层主查询的条件

3:在增删改查中都可以使用子查询

4:支持多层嵌套

5:IN语句是用来判断某个值是否在给定的结果集中

6:子查询的用法

  • 查询条件
  • 插入数值
  • 创建别名查询
  • 删除符合条件后查询
  • EXIST 关键字子查询
    EXIST这个关键字在子查询时,主要用于判断子查询的结果集是否为空。如果不为空,则返回 TRUE;反之,则返回 FALSE。例如,先通过子查询判断返回是否为 TRUE,如果用户shirley存在,则计算整个tmp表的总记录数量

以此表进行子查询

(1)查询列表信息

  • 查询 name 和 height 两列并列出 height 大于 180 的
  • 查询 name 和 height 两列并列,后面不添加条件

(2)插入数值

1.重新复制表 a 的表结构,为表 aa

2.符合条件的数值从表 a 中 复制给 表 aa

  • 将表 a 中的 weight 大于等于 140 的插入给表 aa

3.验证效果

(3)定义别名根据条件查询

  • 定义别名为 b ,查询 height 大于等于 170 的以 name 和 height 列表显示
  • 使用 update 对 a1 表里符合条件的 height 的数值加 10 (条件为 height 值大于等于180)

(4)删除符合条件后删除

以 a1 这张表为例删除示例

  • 删除 height 值大于等于 180 小于等于 200 的值将被删除
  • 查询结果

1:表示缺失的值

2:与数字0或者空白(spaces)是不同的

3:使用IS NULL或IS NOT NULL进行判断

4:NULL值和空值的区别

  • 空值长度为0,不占空间;NULL值的长度为NULL,占用空间
  • IS NULL无法判断空值
  • 空值使用“=”或者“<>”来处理
  • COUNT()计算时,NULL会忽略,空值会加入计算

以这张表为例进行 NULL 值示例

(1)测试 NULL 值为空

  • 添加 NULL
  • 查询添加效果
  • 验证:添加后一共有 6 行,查询 weight 行时为5,是因为 NULL 不计数

(2)测试 0 占位

  • 添加带 0 数据
  • 查询添加效果
  • 验证:height 值有 0 时,也占用空间

(3)查询表中带有是 NULL 值的数据

(4)查询表中带有不是 NULL 值的数据

1:根据指定的匹配模式匹配记录中符合要求的特殊字符

2:使用REGEXP关键字指定匹配模式

3:常用匹配模式

  • ^匹配开始字符
  • p1|p2匹配p1或p2
  • $匹配结束字符
  • […]匹配字符集中的任意一个字符
  • .匹配任意单个字符
  • [^…]匹配不在中括号内的任何字符
  • *匹配任意个前面的字符
  • {n}匹配前面的字符串n次
  • +匹配前面字符至少1次
  • {n,m} 匹配前面的字符串至少n次,至多m次

以此表为例进行正则表达式操作

(1)查询 name 段以 w 开头的数据

(2)查询 name 段以 n 结尾的数据

(3)查询 name 段的任意字符


讯享网

(4)查询不在括号内的任何字符

(5)查询 name 段中至少有一个 i 的数据

查询 name 段中至少有两个 i 的数据

(6)查询 name 段某个范围的数据

(7)查询 name 段中至少有一个 m 的

1:用于对记录中的字段值进行运算

2:运算符分类

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符

1:算术运算符

MySQL支持的算术运算符

  • +加法
  • -减法
  • *乘法
  • /除法
  • %取余数

示例

(1)加法

(2)多个算数在一起

(3)查看算数表结构

  • 创建表
  • 查看表

2:比较运算符

1:字符串的比较默认不区分大小写,可使用binary来区分

2:常用比较运算符

  • = 等于
  • < 小于、>大于
  • <= 小于等于、>=大于等于
  • !=或 <> 不等于
  • IN 在集合中
  • LlKE 通配符匹配
  • IS NULL 判断一个值是否为NULL
  • IS NOT NULL判断一个值是否不为NULL
  • BETWEEN AND 两者之间
  • GREATEST两个或多个参数时返回最大值
  • LEAST 两个或多个参数时返回最小值

注释

(1)等号 =

  • 是用来判断数字、字符串和表达式是否相等的,如果相等则返回1,如果不相等则返回0
  • 如果比较的两者有一个值是NULL,则比较的结果就是NULL
  • 其中字符的比较是根据ASCII码来判断的,如果 ASCII码相等,则表示两个字符相同;如果ASCII码不相等,则表示两个字符不相同

示例

结论

  • 如果两者都是整数,则按照整数值进行比较
  • 如果一个整数一个字符串,则会自动将字符串转换为数字,再进行比较
  • 如果两者都是字符串,则按照字符串进行比较
  • 如果两者中至少有一个值是 NULL,则比较的结果是 NULL

(2)不等于运算符

  • 不等于号有两种写法,分别是<>或者=,用于针对数字、字符串和表达式不相等的比较
  • 如果不相等则返回1,如果相等则返回0,这点正好跟等于的返回值相反
  • 需要注意的是不等于运算符不能用于判断 NULL

示例

(3) 大于、大于等于、小于、小于等于运算符

  • 大于(>)运算符用来判断左侧的操作数是否大于右侧的操作数,若大于返回1,否则返回0,同样不能用于判断NULL
  • 小于(<) 运算符用来判断左侧的操作数是否小于右侧的操作数,若小于返回1,否则返回0,同样不能用于判断NULL
  • 大于等于(>=)判断左侧的操作数是否大于等于右侧的操作数,若大于等于返回1,否则返回0,不能用于判断NULL
  • 小于等于(<=) 判断左侧的操作数是否小于等于右侧的操作数,若小于等于返回1,否则返回0,不能用于判断NULL

(4) IS NULL、IS NOT NULL

  • IS NULL判断一个值是否为 NULL,如果为 NULL返回1,否则返回0
  • IS NOT NULL判断一个值是否不为NULL,如果不为 NULL返回1,否则返回0

示例

结论

  • IS NULL和IS NOT NULL 一个判断为空,另一个判断不为空,只是有无 NOT 这个关键字的区别,同时返回值不同。

(5) BETWEEN AND

  • BETWEEN AND比较运算通常用于判断一个值是否落在某两个值之间
  • 例如,判断某数字是否在另外两个数字之间,也可以判断某英文字母是否在另外两个字母之间

示例

  • 5 在3 与 8 之间
  • 9 不在 3 与 8 之间
  • e 在 a 与 f 之间
  • o 不在 a 与 f 之间

(6) LEAST、GREATEST

  • LEAST:当有两个或者多个参数时,返回其中的最小值。如果其中一个值为NULL,则返回结果就为NULL
  • GREATEST:当有两个或者多个参数时,返回其中的最大值。如果其中一个值为NULL,则返回结果就为NULL

示例

1:比较最小值

2:比较最大值

结论

  • LEAST 比较的参数为数字时,返回的是其中最小的值;当比较的参数为字符串时,返回字母表中顺序最靠前的字符
  • GREATEST比较的参数为数字时,返回的是其中最大的值;当比较的参数为字符串时,返回字母表中顺序最靠后的字符

(7)IN、NOT IN

  • IN判断一个值是否在对应的列表中,如果是返回1,否则返回0
  • NOTIN判断一个值是否不在对应的列表中,如果不是返回1,否则返回0

示例

  • 判断 3 是否在数值里面,为真则返回 1
  • 判断 7 是否在数值里面,为假则返回 0
  • 判断 3 不在数值里面,为假则返回 0
  • 判断 7 不在数值里面,为真则返回 1

(8) LIKE、NOT LIKE

  • LIKE 用来匹配字符串,如果匹配成功则返回1,反之返回O
  • LIKE 支持两种通配符:‘%’ 用于匹配任意数目的字符;而 ‘_’ 只能匹配一个字符
  • NOT LIKE正好跟LlKE 相反,如果没有匹配成功则返回1,反之返回0

示例

  • ‘%’ 用于匹配任意数目的字符
  • ‘_’ 用于只能匹配一个字符

3:逻辑运算符

  • 逻辑运算符又被称为布尔运算符,通常用来判断表达式的真假
  • 如果为真返回1,否则返回0,真和假也可以用 TRUE 和 FALSE 表示
  • MySQL 中支持使用的逻辑运算符有四种

    1:逻辑非




  • 逻辑运算符中最简单的运算符就是逻辑非,逻辑非使用NOT或!表示
  • 逻辑非将跟在它后面的逻辑测试取反,把真变为假,把假变为真
  • 如果 NOT后面的操作数为0时,所得值为1;如果操作数为非0时,所得值为0;如果操作数为NULL时,所得值为NULL

示例

(1)not 或 !

  • 9 为真非 0 值;为 1,1 取反就是 0
  • 相反为真

(2)AND 或 &&

  • 5 为非 0 值,统一为真,真的话就是 1
  • 5 和 3 都为非 0 值,两个真值相与便为真

(3)OR 或 ||

  • 两个数值类型都为非 0 值,为真
  • 有一个数值类型为真便为真

(4)XOR

  • 两个数值类型不一样,为异或,为真
  • 两个数值类型都为真,为假
  • 两个非 0 值也为假

结论

  • 异或:同为真或同为假都为假,一个真一个假时才为真。

(2)逻辑或

  • 逻辑或表示包含的操作数,任意一个为非零值并且不是NULL值时,返回1,否则返回0
  • 逻辑或通常使用 OR 或者 || 来表示

(3)逻辑异或

  • 两个非 NULL值的操作数,如果两者都是О或者都是非0,则返回0
  • 如果一个为0,另一个为非0,则返回结果为1
  • 当任意一个值为NULL 时,返回值为 NULL

4:位运算符

  • 位运算符实际上是对二进制数进行计算的运算符
  • MySQL 内位运算会先将操作数变成二进制格式,然后进行位运算,最后在将计算结果从二进制变回到十进制格式,方便用户查看
  • MySQL支持6种位运算符

(1)按位与

  • 5 的二进制为 101;3 的二进制位 011,相乘得出 1

(2)按位或

(3)按位取反

(4)按位异或

  • 5 为101,3 为 011,1 与 0 异或为 1;0 与 1 异或为 1;1 与 1 异或为 0,结果为 110,换算成 6

(5)按位左移

  • 5 为 101,左移两位为 10100,换算成 20
  • 3 为 011,左移两位为 01100,换算成 12

(6)按位右移

  • 10 为 1010,右移两位为 10,换算成 2

5:运算符的优先级

  • 决定了不同的运算诱在计算过程中的先后顺序
  • 优先级高的先进算。同级的按从左到右进行计算
  • 可以使用()小括号来改变计算优先级

mysql 不声明排序时 输出的顺序_mysql

1:内连接

1:两张或多张表中同时符合某种条件的数据记录组合

2:FROM子句中使用INNER JOIN关键字连接多张表,并使用ON设置连接条件

3:是系统默认的表连接方式,可以省略INNER关键字

4:多表支持连续使用 INNER JOUN,建议不超过三个表

5:语法结构

实现原理

mysql 不声明排序时 输出的顺序_mysql 不声明排序时 输出的顺序_02

示例

  • 1:新建两张表
  • 2:往两张表里添加数据

3:将两张表内连接

2:外连接

(1):左连接

1:也被称为左外连接

2:在FROM子句中使用LEFT JOIN关键字来表示

3:匹配左表中所有行及右表中符合条件的行

4:实现原理

mysql 不声明排序时 输出的顺序_ci_03

示例

  • 将内连接创建的两张表左连接
(2):右连接

1:也被称为右外连接

2:在FROM子句中使用RIGHT JOIN关键字来表示

3:匹配右表中所有行及左表中符合条件的行

4:实现原理

mysql 不声明排序时 输出的顺序_ci_04

示例

  • 将内连接创建的两张表右连接

小讯
上一篇 2025-05-12 19:14
下一篇 2025-04-20 17:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/166340.html