• 【MySQL】必知必会知识点


    LIMIT含义

    SELECT category FROM "books" LIMIT 4 ;
    
    • 1

    上面代码意为:返回不多于4行

    SELECT category FROM "books" LIMIT 4 , 3;
    
    • 1

    或者

    SELECT category FROM "books" LIMIT 4 OFFSET 3;
    
    • 1

    意为从行3开始取4行(数值都是从0开始)

    排序数据

    按多个列排序

    SELECT prod_id, prod_price,prod_name
    FROM products
    ORDER BY prod_price, prod_name;
    
    • 1
    • 2
    • 3

    首先按价格排序,然后按名字排序,仅在价格相同的情况下,才再按名字排序,如果价格中的值都是唯一的,则不会按名字排序。

    降序

    SELECT prod_id,prod_price, prod_name
    FROM products
    ORDER BY prod_price DESC, prod_name ;
    
    • 1
    • 2
    • 3

    DESC关键字只应用到直接位于其前面的列名。
    上面代码只对 prod_price 降序排列,prod_name仍按升序排列。

    通配符

    百分号 % 通配符

    1. % 可在搜索模式中任意位置使用,可以使用多个通配符
    2. 可以放在开头、结尾、开头和结尾、中间。
    3. % 代表搜索模式中给定位置的0个、 1个或多个字符
    4. 不能匹配用值NULL作为产品名的行

    下划线 _ 通配符

    1. 只匹配单个字符而不是多个字符
    2. 总是匹配一个字符,不能多也不能少

    正则表达式

    OR匹配

    | 功能上相当于 OR
    查询字段 prod_name 的值中包含 1000或2000:

    SELECT * FROM `products` WHERE prod_name REGEXP '1000|2000';
    
    • 1

    查询几个字符之一

    SELECT
    	* 
    FROM
    	`products` 
    WHERE
    	prod_name REGEXP '[124]000';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里使用了 [124]000 相当于上面的 1000|2000|4000

    匹配范围查询

    SELECT
    	* 
    FROM
    	`products` 
    WHERE
    	prod_name REGEXP '[1-4]000';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    [1-4]000 意为 1000|2000|3000|4000
    注意:此外,范围不一定只是数值的, 也可以[a-z]匹配任意字母字符

    匹配特殊字符

    特殊字符比如:. [] | 和 - 等。
    查询的时候需要加上转义 \ 作为前导

    SELECT
    	* 
    FROM
    	`products` 
    WHERE
    	prod_name REGEXP '\\.';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    匹配字符类

    查询数字、所有字母字符或所有数字字母字符等的匹配,如下表:

    说 明
    [:alnum:]任意字母和数字(同[a-zA-Z0-9])
    [:alpha:]任意字符(同[a-zA-Z])
    [:blank:]空格和制表(同[\t])
    [:cntrl:]ASCII控制字符( ASCII 0到31和127)
    [:digit:]任意数字(同[0-9])
    [:graph:]与[:print:]相同,但不包括空格
    [:lower:]任意小写字母(同[a-z])
    [:print:]任意可打印字符
    [:punct:]既不在[:alnum:]又不在[:cntrl:]中的任意字符
    [:space:]包括空格在内的任意空白字符(同[\f\n\r\t\v])
    [:upper:]任意大写字母(同[A-Z])
    [:xdigit:]任意十六进制数字(同[a-fA-F0-9])

    匹配多个实例

    重复元字符
    元 字 符 说 明
    * 0个或多个匹配
    + 1个或多个匹配(等于{1,})
    ? 0个或1个匹配(等于{0,1})
    {n} 指定数目的匹配
    {n,} 不少于指定数目的匹配
    {n,m} 匹配数目的范围( m不超过255)

    举例:查找一个单词并且还能够适应一个尾随的s(如果存在),

    SELECT
    	* 
    FROM
    	`products` 
    WHERE
    	prod_name REGEXP '\\([0-9] toms?\\)';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    结果:

    语句中的 [0-9] 表示范围有数字0-9的,后面的toms?表示匹配和它前面的字符次数为0或1(即s可选可不选)

    定位符

    定位元字符
    元 字 符 说 明
    ^ 文本的开始
    $ 文本的结尾
    [[:<:]] 词的开始
    [[:>:]] 词的结尾

    上面查询的是一个字符串中的任意位置,如果想定位到某个位置,就需要定位符:

    SELECT
    	* 
    FROM
    	`products` 
    WHERE
    	prod_name REGEXP '^\\([0-9] toms?\\)';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    Springboot3整合使用aj-captcha行为验证码解决方案
    使用python进行数据合并
    JS对闭包的理解
    Python攻防-AndroidMainfest数据自动化解析
    Flink部署模式
    WebSocketSession 发布订阅模式的学习
    OJ练习第177题——打家劫舍 IV(二分查找)
    【算法练习Day24】递增子序列&&全排列&&全排列 II
    3D Gaussian Splatting文件的压缩【3D高斯泼溅】
    React-1 基础知识
  • 原文地址:https://blog.csdn.net/TheChany/article/details/126667171