mysqlnotlike当开发人员考虑搜索数据库中的记录时,他们通常会想到寻找匹配的值,无论是数值、计算值还是匹配的字符串。但是,MySQL编程语言也有一种方法可以找到不匹配特定值的记录。该特性本质上与查找匹配值列表相反,这意味着您可以获得两个记录集:具有匹配值的记录集和不具有值的记录集。优点是您可以在电子表格中找到需要编辑或报告的记录。要了解这种语言还能做什么,您可能需要一些MySQL初学者培训。

不喜欢语句的概述

"不像"这句话的实际效果和它听起来的一样。它搜索与not like子句中的值不匹配的记录。使用like语句的优点是可以使用通配符,这样就可以搜索匹配模式的一个或多个值的范围。not like语句与equals语句不同,因为equals语句要求您输入MySQL表字段中找到的精确值。

当您学习MySQL语言时,您需要知道的条款,并且“不喜欢”语句足够使用,在那里它应该是常见MySQL查询知识的一部分。不喜欢的语句不像其他语句一样使用,但它用于在从数据库表中检索它们后过滤掉记录。

创建简单的MySQL语句

创建MySQL不喜欢语句的第一步是首先确定要搜索的表。您只能搜索一个表,或者您可以使用MySQL JOIN语句来搜索每个表之间“连接”的多个记录。无论您想要搜索多少个表,不喜欢的语句都在搜索短语的where子句中,您可以在创建基本MySQL语句后设置。

弄清楚要搜索的表后,请设置基本的MySQL搜索查询。以下代码是一个简单的MySQL语句,可检索名为客户的MySQL表中的所有记录:

从客户中选择*

您还可以在表中指定特定的字段。例如,如果你只想查询customers表中的customers的姓和名,你可以使用下面的MySQL语法:

从客户中选择first_name, last_name

在编程世界中,通常不赞成使用星号返回所有行。当您执行一次性查询以快速查看记录时,通常可以避免这种情况,但大多数数据库管理员将要求您始终指定希望返回的字段。这包括如果您想从连接在MySQL语句中的不同表返回多个字段。

需要将MySQL集成到PHP应用程序中?这是一个很好的开始。

添加不喜欢子句到MySQL语句

在设置基本语句之后,可以添加where子句语句。where子句是过滤记录的地方。可以是多个where子句中的一个。您还可以混合和匹配逻辑条件,例如使用“or”或“and”关键字。如果你添加了几个逻辑条件,Where子句会变得非常复杂。您也可以使用括号来分组子句,以使它们更容易阅读。

下面的代码在MySQL主语句中添加了一个基本的not like where子句:

Select first_name, last_name from customers where first_name not like ' mike '

在上面的声明中,MySQL返回First_Name列不等于“Mike”的所有记录。注意不喜欢语句中没有通配符。在这种情况下,MySQL将返回First_Name不完全“Mike”的列。这意味着任何等于“Mikee”,“Mikke”或“Mike”的列也会返回。即使是该示例中的最后一个也将返回,因为所附空间添加到“Mike”字符串。

要解决此问题并删除与“mike”短语匹配的所有记录,添加通配符。通配符是符号(%)。您可以在字符串中的字符之间使用通配符,结束,甚至在字符串之间使用。例如,以下代码返回到附加到任何字符串末尾的“Mike”的所有记录:

Select first_name, last_name from customers where first_name not like ' %mike '

因为通配符在字符串的前面而不是后面,MySQL将只返回末尾有“mike”而没有附加其他字符的记录。您可以使用相反的方式,只返回在字符串前面有“mike”的记录。要执行此查询,请使用以下语法:

选择first_name,来自first_name不喜欢'mike%'的客户的last_name

与第一个示例一样,这条not like语句只返回first_name列的前四个字符中不包含" mike "的记录。

您还可以使用通配符查找字符串中不包含" mike "的所有记录。下面的MySQL语法查找字符串中包含“mike”的first_name列中的任何客户。因为您使用的是not like语句,所以它会从记录集中过滤这些记录。下面是执行MySQL逻辑语句的语法:

Select first_name, last_name from customers where first_name not like ' %mike% '

连接表

有时需要连接表来执行查询,甚至是不类似的查询。您可以使用join语句筛选记录和链接表。您可以连接一个或多个表,但如果连接太多而没有适当的表索引,可能会导致性能问题。数据库管理员通常会创建表的索引。应该在要用于连接的列上创建索引。例如,如果您想要将customers表连接到orders表,那么MySQL数据库管理员将在customer表中的customer id字段上有一个索引,在orders表中有一个外键customer id字段。连接列上的索引对于应用程序的性能是必不可少的。

要使用连接表和not like语句设置查询,首先需要以与没有连接表时设置查询相同的方式创建基本查询。下面的MySQL语句使用客户id主键和外键将客户和订单表连接在一起:

选择First_name,来自客户的Last_name左连接订单(customer_id = customer_id)

在这个语句中,请注意“左连接”语法。这意味着获取语句左侧的所有客户,并与orders表联接。因为您指定从客户表返回所有记录,所以即使没有订单的客户也会返回,但那些订单的数据被设置为空。如果您只想返回有订单的客户,那么您可以将“左连接”替换为“内连接”。使用内连接,没有订单匹配的客户将被过滤掉。

在使用连接的表创建主语句之后,添加not like子句。对于连接表,可以使用not like子句中的任何表中的列。以下代码使用订单表过滤出产品列中不包含字符串“red”的任何记录:

Select first_name, last_name from customers left join orders on (customer_id = customer_id) where product not like ' %red% '

学习一些更高级的MySQL主题,如连接表,以获得更好的数据库编程技能

结合多个不像条文

您还可以使用MySQL和和或语句组合多个not like子句。您可以在一个语句中使用这两个逻辑操作符。例如,如果您想要排除所有包含“red”字符串的产品和任何包含“mike”字符串的客户名称的记录,您可以使用以下查询:

选择first_name,来自客户的last_name lever and on(customer_id = customer_id),其中产品不喜欢'%红色%'和first_name不喜欢'%mike%'

上面的MySQL语句将语句和and语句结合起来,过滤掉所有用户名为“mike”并购买了带有“red”短语的产品的记录。

您还可以使用“或”语句。对于某些开发人员来说,或陈述是棘手的,因为它将返回符合Where子句中的任何语句的所有记录。例如,使用以下或子句拍摄以下MySQL语句:

选择first_name,来自客户的last_name lever and(customer_id = customer_id),其中产品不喜欢'%红色%'或first_name不喜欢'%mike%'

在上面的语句中,MySQL将返回任何不包含“red”或“mike”的记录,这基本上是所有的记录。首先,MySQL查看第一个语句并返回其中没有“红色”的记录。然后,它获取没有“mike”的记录。因为包含红色的记录不包含mike,所以实际上返回所有的记录。

您还可以将多个语句组合在同一MySQL查询中。然后,您可以使用括号来控制逻辑读取的方式。例如,以下代码组合了两个或语句和一个和一个语句:

选择first_name,来自客户的last_name左连接订单(customer_id = customer_id)其中(产品不喜欢'%红色%'或first_name不喜欢'%mike%')和产品不喜欢'%blue%'

在上面的语句中,对第一组或语句进行求值。在本例中,返回所有记录。在or语句求值后,和语句将被执行。and语句与or语句结合,过滤掉所有在产品名中包含字符串“blue”的记录。

注意括号。括号控制执行的查询流。如果删除圆括号,顺序将与MySQL查询中设置语句的顺序相同。

not like MySQL语句是一种有用的方法,可以过滤掉您不希望在记录集中出现的记录。您还可以将not like语句与其他where子句匹配,如equals、like、where、in和not in语句。

将此语句与表中的任何连接语句组合时,您可以进一步添加或删除记录,具体取决于您需要从查询返回的逻辑类型和记录集的类型。对于新开发人员,您可能需要在返回右记录集之前调整和测试查询字符串。当您需要将多个逻辑运算符组合在一个MySQL查询中时,尤其如此。

如果你想理解MySQL, not like子句是你理解MySQL语言的必要部分。它的使用不像其他子句语句那样频繁,但是当您需要返回一个大型集合,然后过滤掉已知值时,它可以是一种过滤掉记录集的强大方法。

如果您正在享受更多关于MySQL的学习,可能是时候尝试了数据库设计简介。

MySQL顶级课程

终极MySQL训练营:从SQL初学者到专家
Colt Steele,Ian Schoonover
4.6 (54115)
畅销书
SQL - 用于数据分析和商业智能的MySQL
365职业
4.6 (27663)
畅销书
MySQL数据库管理:初级SQL数据库设计
Maven Analytics, John Pauler
4.6 (1000)
畅销书
SQL用于数据分析:初学者MySQL商业智能
Maven Analytics, John Pauler
4.7 (3751)
畅销书
MySQL初学者
Vasandkumar Kunasekaran
4.6 (1,522)
高级SQL: MySQL数据分析和商业智能
Maven Analytics, John Pauler
4.7 (1,820)
评价最高
MySQL,SQL和初学者的存储过程到高级
John Purcell.
4.4 (2608)
畅销书

更多MySQL课程

MySQL的学生也会学到

让你的团队。领导行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求一个演示