首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
9.1 基本查询语句
9.2 单表查询
9.2.1 查询所有字段
9.2.2 查询指定字段
9.2.3 查询指定数据
9.2.4 带关键字IN的查询
9.2.5 带关键字BETWEEN AND的范围查询
9.2.6 带LIKE的字符匹配查询
9.2.7 用IS NULL关键字查询空值
9.2.8 带AND的多条件查询
9.2.9 带OR的多条件查询
9.2.10 用DISTINCT关键字去除结果中的重复行
9.2.11 用ORDER BY关键字对查询结果进行排序
9.2.12 用GROUP BY关键字分组查询
9.2.13 用LIMIT限制查询结果的数量
9.3 聚合函数查询
9.3.1 COUNT()统计函数
9.3.2 SUM()求和函数
9.3.3 AVG()平均数函数
9.3.4 MAX()最大值函数
9.3.5 MIN()最小值函数
9.4 连接查询
9.4.1 内连接查询
9.4.2 外连接查询
9.4.3 复合条件连接查询
9.5 子查询
9.5.1 带IN关键字的子查询
9.5.2 带比较运算符的子查询
9.5.3 带EXISTS关键字的子查询
9.5.4 带ANY关键字的子查询
9.5.5 带ALL关键字的子查询
9.6 合并查询结果
9.7 定义表和字段的别名
9.7.1 为表取别名
9.7.2 为字段取别名
9.8 使用正则表达式查询
9.8.1 匹配指定字符中的任意一个
9.8.2 使用“*”和“ ”来匹配多个字符
9.8.3 匹配以指定的字符开头和结束的记录
10.1 MySQL函数
10.2 数学函数
10.2.1 ABS(x)绝对值函数
10.2.2 FLOOR(x)向下取整函数
10.2.3 RAND()随机数函数
10.2.4 PI()圆周率函数
10.2.5 TRUNCATE(x,y)截断函数
10.2.6 ROUND(x)近似值函数和ROUND(x,y)四舍五入函数
10.2.7 SQRT(x)平方函数
10.3 字符串函数
10.3.1 INSERT(s1,x,len,s2)替换函数
10.3.2 UPPER(s)函数和UCASE(s)字母大写函数
10.3.3 LEFT(s,n)取左函数
10.3.4 RTRIM(s)去空格函数
10.3.5 SUBSTRING(s,n,len)截取函数
10.3.6 REVERSE(s)反转函数
10.3.7 FIELD(s,s1,s2,…,sn)位置函数
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3个位置函数
10.4 日期和时间函数
10.4.1 CURDATE()和CURRENT_DATE()当前日期函数
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
10.4.3 NOW()当前日期和时间函数
10.4.4 DATEDIFF(d1,d2)间隔天数函数
10.4.5 ADDDATE(d,n)日期计算函数
10.4.6 ADDDATE(d,INTERVAL expr type)日期时间计算函数
10.4.7 SUBDATE(d,n)日期计算函数
10.5 条件判断函数
10.6 系统信息函数
10.6.1 获取MySQL版本号、连接数和数据库名的函数
10.6.2 获取用户名的函数
10.6.3 获取字符串的字符集和排序方式的函数
10.7.1 格式化函数FORMAT(x,n)
10.7.2 改变字符集的函数
10.7.3 改变字段数据类型的函数
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(三)
小册名称:MySQL从入门到精通(三)
### 9.2.6 带LIKE的字符匹配查询 在数据库操作中,经常需要根据数据的部分内容而非完整值进行搜索。MySQL提供了`LIKE`运算符来实现基于模式的字符串匹配查询,这种查询方式在数据检索中尤为重要,尤其是在处理用户输入、模糊搜索或数据清洗等场景时。本章节将深入探讨`LIKE`运算符的使用方法、通配符规则、性能考虑以及实际应用案例。 #### 9.2.6.1 LIKE运算符基础 `LIKE`运算符用于在`WHERE`子句中搜索列中的指定模式。基本语法如下: ```sql SELECT column_names FROM table_name WHERE column_name LIKE pattern; ``` 其中,`pattern`是要匹配的模式,可以包含文字字符和通配符。MySQL支持两种通配符: - `%`:表示任意数量的字符(包括零个字符)。 - `_`:表示任意单一字符。 #### 9.2.6.2 使用`%`通配符 `%`通配符是最常用的,它允许匹配任意长度的字符串,包括空字符串。例如,假设我们有一个名为`employees`的表,里面有一个`name`字段,要查找所有名字中包含"John"的记录,可以使用以下查询: ```sql SELECT * FROM employees WHERE name LIKE '%John%'; ``` 这个查询会返回所有`name`字段中包含"John"的记录,不论"John"前后是否有其他字符。 #### 9.2.6.3 使用`_`通配符 `_`通配符用于匹配单个字符。比如,要查找所有名字以"J"开头,后面紧跟任意单个字符,然后是"ohn"的记录,可以使用: ```sql SELECT * FROM employees WHERE name LIKE 'J_ohn'; ``` 这将匹配如"John"、"Johnn"(虽然实际中可能不存在这样的名字,但理论上会匹配)等。 #### 9.2.6.4 组合使用通配符 `%`和`_`可以组合使用来构建更复杂的搜索模式。例如,查找所有名字以"J"开头,后面至少有两个字符,然后是"n"结尾的记录: ```sql SELECT * FROM employees WHERE name LIKE 'J__n%'; ``` 这将匹配"John"、"Jimn"(如果存在的话)等,但不会匹配"Jon"或"Jim"。 #### 9.2.6.5 性能注意事项 虽然`LIKE`查询非常强大和灵活,但它们可能会对性能产生负面影响,尤其是在大型数据集上。这是因为`LIKE`查询,特别是使用`%`开头的模式时,通常会导致全表扫描,因为MySQL无法利用索引来加速查询。 - **避免前导`%`**:尽可能避免在模式的开始处使用`%`,因为这会使索引失效。如果查询模式固定于字符串的开始部分,则可以考虑将该部分作为查询条件,并结合其他条件来缩小搜索范围。 - **使用全文搜索**:对于大型文本字段的复杂搜索需求,考虑使用MySQL的全文搜索功能,它比`LIKE`在性能上更优。 - **索引优化**:对于经常需要基于特定模式搜索的列,考虑使用前缀索引或其他类型的索引策略来优化查询性能。 #### 9.2.6.6 实际应用案例 **案例一:用户搜索功能** 在开发Web应用时,实现一个用户友好的搜索功能常常需要用到`LIKE`查询。例如,用户输入一个关键词,系统需要返回所有包含该关键词的记录。这时,可以将用户输入作为模式的一部分,构建`LIKE`查询。 **案例二:数据清洗** 在数据清洗过程中,可能需要查找并处理特定格式的数据。比如,查找所有以特定前缀或后缀开头的电话号码、邮箱地址等,这时`LIKE`查询就显得尤为重要。 **案例三:日志分析** 在日志分析中,经常需要根据日志信息中的关键字来筛选日志条目。使用`LIKE`查询可以快速定位包含特定错误代码、用户行为或系统事件的日志记录,有助于问题的快速定位和解决。 #### 9.2.6.7 结论 `LIKE`运算符是MySQL中一个非常有用的功能,它允许我们基于模式匹配来检索数据,为数据库查询提供了极大的灵活性和便利性。然而,在使用时也需要注意其对性能的影响,特别是在处理大型数据集时。通过合理的索引策略、避免不必要的全表扫描以及考虑使用更高效的搜索方法(如全文搜索),可以最大限度地发挥`LIKE`查询的优势,同时保持应用的性能和响应速度。
上一篇:
9.2.5 带关键字BETWEEN AND的范围查询
下一篇:
9.2.7 用IS NULL关键字查询空值
该分类下的相关小册推荐:
MySQL从入门到精通(一)
SQL零基础到熟练应用(增删改查)
细说MySQL(零基础到高级应用)
MySQL从入门到精通(二)
MySQL8.0入门与实践
MySQL必会核心问题
MySQL从入门到精通(五)
MySQL从入门到精通(四)
MySQL 实战 45 讲