首页 数据库 mysql教程 【MySQL数据库开发之四】MySQL 处理模式/常用查询/模式匹配等

【MySQL数据库开发之四】MySQL 处理模式/常用查询/模式匹配等

Jun 07, 2016 pm 05:40 PM
database mysql table 数据库

本站文章均为李华明Himi原创,转载务必在明显处注明:转载自【黑米GameDev街区】原文链接:http://www.himigame.com/mysql/781.html 点击订阅本博..

转载自【黑米GameDev街区】 原文链接: 

          ☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!

 

继续上一篇继续讲解MySQL的相关知识点;

     1. NULL 值操作:

NULL值可能令人感到奇怪直到你习惯它。概念上,NULL意味着“没有值”或“未知值”,且它被看作与众不同的值。为了测试NULL,你不能使用算术比较 操作符例如=、

 

很显然你不能通过这些比较得到有意义的结果。相反使用IS NULL和IS NOT NULL操作符:

 

注意:可以在定义为NOT NULL的列内插入0或空字符串,服务器空间,实际是NOT NULL。

  2.  模式匹配:

MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。 SQL模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符)。注意使用SQL模式时,不能使用=或!=;而应使用LIKE或NOT LIKE比较操作符;

找出所有以y开头的名字;        

 

找出所有以i结尾的名字; 

 

找出所有以包含h的名字;

 

要想找出正好包含3个字符的名字,使用3个“_”模式字符:

 

 

由MySQL提供的模式匹配的其它类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。

     3.  正则表达式的使用;

扩展正则表达式的一些字符是:

·         ‘.’匹配任何单个的字符。

·         字符类“[...]”   匹配在方括号内的任何字符。例如,“[abc]” 匹配 “a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。

·“ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。

  • 如果REGEXP模式与被测试值的任何地方匹配,香港虚拟主机,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。
  • 为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
  • 为了说明扩展正则表达式如何工作,下面使用REGEXP重写上面所示的LIKE查询:

    为了找出以“b”开头的名字,使用“^”匹配名字的开始:

    mysql> SELECT * FROM pet WHERE name REGEXP '^b'; +--------+--------+---------+------+------------+------------+ | name   | owner  | species | sex  | birth      | death      | +--------+--------+---------+------+------------+------------+ | Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       | | Bowser | Diane  | dog     | m    | 1989-08-31 | 1995-07-29 | +--------+--------+---------+------+------------+------------+

    如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’。

    mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';

    为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:

    mysql> SELECT * FROM pet WHERE name REGEXP 'fy$'; +--------+--------+---------+------+------------+-------+ | name   | owner  | species | sex  | birth      | death | +--------+--------+---------+------+------------+-------+ | Fluffy | Harold | cat     | f    | 1993-02-04 | NULL  | | Buffy  | Harold | dog     | f    | 1989-05-13 | NULL  | +--------+--------+---------+------+------------+-------+

    为了找出包含一个“w”的名字,使用以下查询:

    mysql> SELECT * FROM pet WHERE name REGEXP 'w'; +----------+-------+---------+------+------------+------------+ | name     | owner | species | sex  | birth      | death      | +----------+-------+---------+------+------------+------------+ | Claws    | Gwen  | cat     | m    | 1994-03-17 | NULL       | | Bowser   | Diane | dog     | m    | 1989-08-31 | 1995-07-29 | | Whistler | Gwen  | bird    | NULL | 1997-12-09 | NULL       | +----------+-------+---------+------+------------+------------+

    既然如果一个正则表达式出现在值的任何地方,其模式匹配了,就不必在先前的查询中在模式的两侧放置一个通配符以使得它匹配整个值,美国空间,就像你使用了一个SQL模式那样。

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热门文章

    R.E.P.O.能量晶体解释及其做什么(黄色晶体)
    2 周前 By 尊渡假赌尊渡假赌尊渡假赌
    仓库:如何复兴队友
    4 周前 By 尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island冒险:如何获得巨型种子
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    泄漏揭示了英特尔 Arrow Lake-U、-H、-HX 和 -S 的关键规格 泄漏揭示了英特尔 Arrow Lake-U、-H、-HX 和 -S 的关键规格 Jun 15, 2024 pm 09:49 PM

    英特尔ArrowLake预计将基于与LunarLake相同的处理器架构,这意味着英特尔全新的LionCove性能核心将与经济的Skymont效率核心相结合。而LunarLake仅作为ava推出

    如何优化 PHP 中的 MySQL 查询性能? 如何优化 PHP 中的 MySQL 查询性能? Jun 03, 2024 pm 08:11 PM

    可以通过以下方式优化MySQL查询性能:建立索引,将查找时间从线性复杂度降至对数复杂度。使用PreparedStatements,防止SQL注入并提高查询性能。限制查询结果,减少服务器处理的数据量。优化连接查询,包括使用适当的连接类型、创建索引和考虑使用子查询。分析查询,识别瓶颈;使用缓存,减少数据库负载;优化PHP代码,尽量减少开销。

    如何在 PHP 中使用 MySQL 备份和还原? 如何在 PHP 中使用 MySQL 备份和还原? Jun 03, 2024 pm 12:19 PM

    在PHP中备份和还原MySQL数据库可通过以下步骤实现:备份数据库:使用mysqldump命令转储数据库为SQL文件。还原数据库:使用mysql命令从SQL文件还原数据库。

    如何使用 PHP 插入数据到 MySQL 表中? 如何使用 PHP 插入数据到 MySQL 表中? Jun 02, 2024 pm 02:26 PM

    如何将数据插入MySQL表中?连接到数据库:使用mysqli建立与数据库的连接。准备SQL查询:编写一个INSERT语句以指定要插入的列和值。执行查询:使用query()方法执行插入查询,如果成功,将输出一条确认消息。

    如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 Dec 09, 2024 am 11:42 AM

    MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他应用程序

    如何在 PHP 中使用 MySQL 存储过程? 如何在 PHP 中使用 MySQL 存储过程? Jun 02, 2024 pm 02:13 PM

    要在PHP中使用MySQL存储过程:使用PDO或MySQLi扩展连接到MySQL数据库。准备调用存储过程的语句。执行存储过程。处理结果集(如果存储过程返回结果)。关闭数据库连接。

    如何使用 PHP 创建 MySQL 表? 如何使用 PHP 创建 MySQL 表? Jun 04, 2024 pm 01:57 PM

    使用PHP创建MySQL表需要以下步骤:连接到数据库。创建数据库(如果不存在)。选择数据库。创建表。执行查询。关闭连接。

    在PHP中使用MySQLi建立数据库连接的详尽教程 在PHP中使用MySQLi建立数据库连接的详尽教程 Jun 04, 2024 pm 01:42 PM

    如何在PHP中使用MySQLi建立数据库连接:包含MySQLi扩展(require_once)创建连接函数(functionconnect_to_db)调用连接函数($conn=connect_to_db())执行查询($result=$conn->query())关闭连接($conn->close())

    See all articles