带 LIKE 的通配符(%,_)匹配查询,查询空值与去除重复结果,带 AND 与 OR 的多条件查询(MySQL)

一、带 LIKE 的通配符(%,_)匹配查询

1,使用通配符%模糊匹配数据内容

百分号通配符%可以匹配任意长度的字符,甚至包括零字符。

语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 LIKE '字符%'; 

其中%的位置可以根据需要在字符间变化 

举个例子

假设我们现在有一张表Mall_products,内容如下:

我们将使用LIKE关键字和通配符%检索出所有商品名称带ir的商品信息。

查询代码如下:

SELECT *
FROM Mall_products
WHERE prod_name LIKE '%ir%';

结果为: 

分析:

该语句查询的结果返回所有商品的名字中间带ir字符的所有信息。通配符%告诉MySQL,返回字符串中间带ir字符的记录,不管ir前面和后面分别有多少字符。

2,使用通配符_模糊匹配数据内容

下划线通配符_与百分号通配符%类似,也用于模糊匹配。但是区别在于下划线通配符_只能模糊匹配1个字符。如果你执意想用下划线通配符_匹配多个字符,那只能多用几个_咯!

语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 LIKE '字符_'; 。 其中`_`的位置可以根据需要在字符间变化。

举个例子

假设我们现在有一张表Mall_products,内容如下:

我们将使用LIKE关键字和通配符_检索出所有商品名称以r结尾,且前边有9个字母的商品信息。

查询代码如下:

SELECT *
FROM Mall_products
WHERE prod_name LIKE '_________r';

 结果为:

看到查询结果中prod_name对应的Teddy bear,大家可能注意到了,我们把空格也当成了一个字符来计算。 

 


二、查询空值与去除重复结果

1,查询空值

在数据表创建之初,创建者可以指定某个字段是否为空值NULL。注意了,这个NULL既不代表0,也不代表空字符,而是代表一种未知的状态,比如不适用或者放着等将来有合适数据了再添加进去。

语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 IS NULL; 

举个例子

假设我们现在有一张表Mall_products,内容如下:

我们将使用IS NULL关键字检索出所有prod_country字段为NULL的商品信息。

查询代码如下:

SELECT *
FROM Mall_products
WHERE prod_country IS NULL;

结果为:

可以看到,结果成功显示了prod_country字段为NULL的商品信息。与关键字IS NULL查询结果相反的是关键字IS NOT NULL,我们来看看实际操作的效果。查询代码如下:

SELECT *
FROM Mall_products
WHERE prod_country IS NOT NULL;

结果为:

2去除重复结果

有的时候,出于对数据分析的要求,分析人员需要消除数据表中重复的数据,那么如何消除呢?别担心,SQL语句也贴心的为你准备好了消除重复数据的关键字DISTINCT

语法规则为: SELECT DISTINCT 字段名 FROM 表名;

举个例子

假设我们现在有一张表Mall_products,内容如下:

可以从表中看到,除了字段ID没有重复项,剩下的字段里都出现了重复项。

我们将使用DISTINCT关键字去除prod_name字段中的重复数据。

查询代码如下:

SELECT DISTINCT prod_name, prod_country, prod_price
FROM Mall_products;

结果为:

可以看到,使用了关键字DISTINCT后,返回的记录都不再有重复值。

三、带 AND 与 OR 的多条件查询

1、带AND关键字的多条件查询

MySQLWHERE子句中使用AND操作符限制只有满足所有条件的查询才会被返回。可以使用AND连接两个甚至更多个查询条件,多个条件表达式之间用AND分开。

语法规则为: SELECT 字段名 FROM 表名 WHERE 表达式1 AND 表达式2;

举个例子

假设我们现在有一张表Mall_products,内容如下:

我们想要查询表中哪些商品不仅商品名中带有toy字符,单价又同时大于5,并列出他们的商品信息。

查询代码如下:

SELECT *
FROM Mall_products
WHERE prod_name LIKE '%toy%' AND prod_price > 5;

结果为:

2,带OR关键字的多条件查询

 与AND相反,在WHERE声明中使用OR关键字表示只需满足两个条件中的其中一个条件即可返回结果。

语法规则为: SELECT 字段名 FROM 表名 WHERE 表达式1 OR 表达式2; 

小提示: OR 可以和 AND 一起使用。但是 AND 的优先级要高于 OR 的优先级!

代码如下:

SELECT  ID, prod_name, prod_price
FROM Mall_products
WHERE ID = 'BNBG01' OR ID = 'BR01';

在这里我们不得不提到关键字IN,它能实现与OR相同的功能。

比如以下代码的功能和该例中的代码功能是一样的:

SELECT  ID, prod_name, prod_price
FROM Mall_products
WHERE ID IN('BNBG01', 'BR01');

小提示: 虽然两种写法功能一样,但是我们更推荐使用 IN 关键字。因为它不仅逻辑清晰,执行的速度也会快于 OR 关键字。更重要的是,使用 IN 关键字,我们以后可以执行更加复杂的嵌套语句。

发布了14 篇原创文章 · 获赞 8 · 访问量 1605

猜你喜欢

转载自blog.csdn.net/Zhongtongyi/article/details/104145310