【MySQL】单表查询关键字

164 阅读4分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

目录

18FCA746.jpg 今天阿文介绍的内容为:

  • LIKE关键字
  • IS NULL关键字
  • AND 和 OR 多个条件表达式连用
  • ORDER BY关键字

1.带LIKE的字符匹配查询

LIKE操作符用来查询包含某个字符的数据,需要使用通配符进行匹配查找。

通配符的介绍:

    1. 通配符"%": 匹配任意长度的字符,甚至包括零字符
    1. 通配符"_":一次只能匹配任意一个字符

语法格式如下:

SELECT 字段1,字段2,...,字段n FROM 表名 WHERE 字段x LIKE '%d_';
  • 表示匹配字段x中倒数第二个字母是字符d的数据。

例如:

SELECT * FROM fruits WHERE f_name LIKE '%g_';

查询结果为:

image.png

2.查询空值

空值一般表示数据未知,不同于0和空字符串。在SELECT语句中使用IS NULL子句,可以查询某字段的空记录。

语法格式如下:

SELECT 字段1,字段2,...,字段n FROM 表名 WHERE 字段x IS NULL;

例子:

SELECT * FROM fruits WHERE f_name IS NULL;

查询结果为:

image.png 因为在fruits表中没有f_name字段为NULL的数据,所以没有查询出任何数据。

3.带AND的多条件查询

在使用SELECT查询时,有时有多个约束条件,这时我们使用关键字AND将所有约束条件连接在一起。

语法格式如下:

SELECT 字段1,字段2,...,字段n FROM 表名 WHERE 约束条件1 AND 约束条件2 AND 约束条件3;

例子:

SELECT * FROM fruits WHERE f_price > 5 AND f_price < 10;

查询结果为:

image.png

可以看到所以f_price在5到10之间的数据全部查询出来了。

4.带OR的多条件查询

与AND相反,在WHERE声明中使用OR操作符,表示只需要满足其中一个条件的记录即可返回。

语法格式如下:

SELECT 字段1,字段2,...,字段n FROM 表名 WHERE 约束条件1 OR 约束条件2 OR 约束条件3;

例子:

SELECT * FROM fruits WHERE f_price > 10 OR f_price < 5;

查询结果为:

image.png

提示:OR可以和AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数结合。

5.查询结果不重复

在查询数据时,有时会出现许多重复的数据,我们需要消除重复的数据,这时可以使用DISTINCT关键字指示MySQL消除重复的数据。

语法格式如下:

SELECT DISTINCT 字段名 FROM 表名;

例子:

SELECT DISTINCT s_id FROM fruits;

查询结果为:

image.png

6.对查询结果排序

对于我们上述查询出来的数据都是无序的,我们可以使用ORDER BY子句对查询结果进行排序。

6.1单列排序

语法格式如下:

SELECT 字段1 FROM 表名 ORDER BY 字段1;
例子:
SELECT * FROM fruits ORDER BY f_price;

查询结果为:

image.png

6.2多列排序

有时,需要根据多列值进行排序。比如,如果要显示一个学生列表,可能会有多个学生的姓氏是相同的,因此还需要根据学生的名进行排序。对多列数据进行排序,要将需要排序的列之间用逗号隔开。

语法格式如下:

SELECT 字段1,字段2,... FROM 表名 ORDER BY 字段1,字段2,...;

例子:

SELECT * FROM fruits ORDER BY f_price, s_id;

查询结果为:

image.png

提示:在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。

6.3指定排序方向

在默认情况下,查询数据按字母升序进行排序(AZ),也可以使用关键字DESC实现降序排序(ZA)。与DESC相反的是ASC(升序),将字段列中的数据按字母表顺序升序排列。实际上,在排序的时候ASC是默认的排序方式,所以加不加都可以。

语法格式如下:

SELECT 字段1,字段2,... FROM 表名 ORDER BY 字段1 DESC,字段2;

例子:

SELECT * FROM fruits ORDER BY f_price DESC;

输出结果为:

image.png

提示:DESC关键字只对其前面的列进行降序排序,在这里只有字段1是降序排序,而字段2还是默认升序排序,如果要对多列都进行降序排序,必须要在每一列的列名后面加DESC关键字。


总结

  • LIKE用于字符串的匹配
  • IS NULL用于查找数据表中的空值
  • AND 和 OR可以连接多个条件表达式
  • ORDER BY可以实现查询数据排序,DESC是降序,ASC是升序

好了,阿文今天就介绍到这了... 18FC6367.gif