0


MySQL-查询数据库(一)_查询库

1、查询所有字段

查询所有字段是指查询表中所有字段的数据。这种方式可以将表中所有字段的数据都查询出来。MySQL中有两种方式可以查询表中所有的字段。

1、列出表的所有字段

MySQL中,可以在select语句的“属性列表”中列出所要查询的表中的所有的字段。例如

下面用select语句查询employee表中的所有字段的数据。在执行select语句之前,先看一下employee表中的所有记录。记录显示如下;

在这里插入图片描述
上面可以看到,employee表中包含6个字段,分别是num、d_id、name、age、sex和homeadder。下面是要查询employee表的所有字段的select语句。

在这里插入图片描述

2、使用“*”查询所有字段

在MySQL中,select语句的“属性列表”中可以为“*”。其基本语法形式为:

select \* from 表名;

“*”可以表示所有的字段。这样就不用列出表中所有字段的名称了。但是,使用这种方式查询时,只能按照表中字段的顺序进行排列,不能改变字段的排列顺序。

2、查询指定字段

查询数据时,可以在select语句的“属性列表”中列出所要查询的字段。这种方式可以指定需要查询的字段,而不需要查询出所有的字段。

下面查询employee表中num、name、sex和homeaddr等4个字段的数据。select语句的代码如下:

在这里插入图片描述

3、查询指定记录

select语句中可以设置查询条件。用户可以根据自己的需要来设置查询条件,按条件进行查询。查询的结果必须满足查询条件。例如,用户需要查询d_id为1001的记录,那么可以设置“d_id=1001”为查询条件。这样查询结果中的记录就都会满足“d_id=1001”这个条件。where子句可以用来指定查询条件。其语法规则如下:

where 条件表达式

其中,“条件表达式”参数指定select语句的查询条件

下面查询employee表中d_id为1001的记录。select语句的代码如下:

在这里插入图片描述

4、带IN关键字的查询

IN关键字可以判断某个字段的值是否在指定的集合中。如果字段的值在集合中,则满足查询条件,该记录将被查询出来;如果不在集合中,则不满足查询条件。其语法规则如下:

[not] in (元素1,元素2,...,元素n)

其中,“not”是可选参数,加上not表示不在集合内满足条件;“元素n”表示集合中的元素,各元素之间用逗号隔开,字符型元素需要加上单引号。

下面使用in关键字进行查询。select语句的代码如下:

在这里插入图片描述

5、带between and的范围查询

between and关键字可以判断某个字段的值是否在指定的范围内。如果字段的值在指定范围内,则满足查询条件,该记录将被查询出来。如果不在指定范围内,则不满足查询条件。其语法规则如下:

[not] between 取值1 and 取值2

其中,“not”是可选参数,加上not表示不在指定范围内满足条件;“取值1”表示范围的起始值;“取值2”表示范围的终止值。

下面使用between and关键字进行查询,查询条件是age字段的取值从15-25。select语句的代码如下:

select \* from employee where  age between 15 and 25;

代码执行如下:

在这里插入图片描述

6、带like的字符匹配查询

like关键字可以匹配字符串是否相等。如果字段的值与指定的字符串匹配,则满足查询条件,该记录将被查询出来。如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:

[not] like '字符串'

其中,“not”是可选参数,加上not表示与指定的字符串不匹配时满足条件;“字符串”表示指定用来匹配的字符串,该字符串必须加单引号或者双引号。“字符串”参数的值可以是一个完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配字符。但是%和_有很大的差别:

“%”可以代表任意长度的字符串,长度可以为0。例如,b%k表示以字母b开头,以字符k结尾的任意长度的字符串。该字符串可以代表bk、buk、book、break、bedrock等字符串。

”只能表示单个字符。例如,b_k表示以字母b开头,以字母k结尾的3个字符。中间的“”可以代表任意一个字符。字符串可以代表bok、bak和buk等字符串。

下面使用like关键字来匹配一个完整的字符串‘Aric’。select语句的代码如下:

select \* from employee where name like '赵六';

代码执行如下:

在这里插入图片描述
结果显示,查询出name字段的取值是赵六的记录。其他不满足条件的记录都被忽略掉了。此处的like与等于号(=)是等价的。可以直接换成“=”,查询结果是一样的。代码的执行结果如下:

在这里插入图片描述

结果可以看出,使用like关键字和使用“=”的效果是一样的。但是,这只对匹配一个完整的字符串这种情况有效。如果字符串中包含了通配符,就不能这样进行替换了。

下面使用like关键字来匹配带有通配符‘%’的字符串‘北京%’。select语句的代码如下:

select \* from employee where homeaddr like '北京%';

代码执行如下:

在这里插入图片描述

7、查询空值

is null关键字可以用来判断字段的值是否为空值(null)。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。其语法规则如下:

is [not] null

其中,“not”是可选参数,加上not表示字段不是空值时满足条件。

下面使用is null关键字来查询work表中info字段为空值的记录。select语句的代码如下:

select \* from work where info is null;

代码执行如下:

在这里插入图片描述

8、带AND的多条件查询

and关键字可以用来联合多个条件进行查询。使用and关键字时,只有同时满足所有查询条件的记录会被查询出来。如果不满足这些查询条件的其中一个,这样的记录将被排除掉。and关键字的语法规则如下:

条件表达式1 and 条件表达式2 [...and 条件表达式n]

其中,and可以连接两个条件表达式。而且,可以同时使用多个and关键字,这样可以连接更多的条件表达式。

下面使用and关键字来查询employee表中d_id为1001,而且sex为‘男’的记录。select语法的代码如下:

select \* from employee where d_id=1001 and sex like '男';

代码执行如下:

在这里插入图片描述

9、带or的多条件查询

or关键字也可以用来联合多个条件进行查询,但是与and关键字不同。使用or关键字时,只要满足这几个查询条件的其中一个,这样的记录将会被查询出来。如果不满足这些查询条件中的任何一个,这样的记录将被排除掉。or关键字的语法规则如下:

条件表达式1 or 条件表达式2 [...or 条件表达式n]

其中,or可以用来连接两个条件表达式。而且,可以同时使用多个or关键字,这样可以连接更多的条件表达式。

下面使用or关键字来查询employee表中d_id为1001,或者sex为‘男’的记录。select语句的代码如下:

select \* from employee where d_id=1001 or sex like '男';

在这里插入图片描述
结果显示,num的值为3和4的记录d_id不等于1001。但是,这两条记录的sex字段为“男”。这两条记录也被查询出来。这说明,使用or关键字时,只要满足多个条件中的其中一个,就可以被查询出来。

10、查询结果不重复

如果表中的某些字段上没有唯一性约束,这些字段可能存在这重复的值。例如,employee表中的d_id字段就存在着重复的情况。

在这里插入图片描述
employee表中有两条记录的d_id的值为1001。select语句中可以使用distinct关键字来消除重复的记录。其语法规则如下:

select distinct 属性名

其中,“属性名”参数表示要消除重复记录的字段的名词。

下面使用distinct关键字来消除d_id字段中的重复记录。带distinct关键字的select语句如下:

select distinct d_id from employee;

在执行该select语句之前,先查看d_id字段的实际情况。代码执行如下:

在这里插入图片描述

结果显示,存在两条值为1001的记录,下面使用带distinct关键字的select语句。代码执行如下:

在这里插入图片描述
结果显示,d_id字段只有一条值为1001的记录。这说明,使用distinct关键字消除了重复的记录。

11、对查询结果排序

从表中查询出来的数据可能是无序的,或者其排序顺序不是用户所期望的顺序。为了使查询结果的顺序满足用户的需求,可以使用order by关键字对记录进行排序。其语法规则如下:

order by 属性名 [asc | desc]

其中,“属性名”参数表示按照该字段进行排序;asc参数表示按升序的顺序进行排序;desc参数表示按降序的顺序进行排序。默认的情况下,按照asc方式进行排序。

下面查询employee表中的所有记录,按照age字段进行排序。带order by关键字的select语句如下:

select \* from employee order by age;

在这里插入图片描述

12、分组查询

group by关键字可以将查询结果按某个字段或多个字段进行分组。字段中值相等的为一组。其语法规则如下:

group by 属性名 [having 条件表达式] [with rollup]

其中,“属性名”是指按照该字段的值进行分组;“having条件表达式”用来限制分组后的显示,满足条件表达式的结果将被显示;with rollup关键字将会在所有记录的最后加上一条记录。该记录是上面所有记录的总和。

group by关键字可以和group_concat()函数一起使用。group_concat()函数会把每个分组中指定字段值都显示出来。同时,group by关键字通常与集合函数一起使用。集合函数包括count()、sum()、avg()、max()和min()。其中,count()用来统计记录的条数;sum()用来计算字段值的总和;avg()用来计算字段的值的平均值;max()用来查询字段的最大值;min()用来查询字段的最小值。如果group by不与上述函数一起使用,那么查询结果就是字段取值的分组情况。字段中取值相同的记录为一组,但只显示该组的第一条记录。

1、单独使用group by关键字来分组

如果单独使用group by关键字,查询结果只显示一个分组的一条记录。

下面按employee表的sex字段进行分组查询,查询结果与分组前结果进行对比。先执行不带group by关键字的select语句。语句执行如下:

在这里插入图片描述

带有group by关键字的select语句的代码如下:

在这里插入图片描述

2、group by关键字与group_concat()函数一起使用

group by关键字与group_concat()函数一起使用时,每个分组中指定字段值都显示出来。

下面按employee表的sex字段进行分组查询。使用group_concat()函数将每个分组的name字段的值显示出来。select语句的代码如下:

select sex,group\_concat(name) from employee group by sex;

代码执行如下:
在这里插入图片描述

3、group by关键字与集合函数一起使用

group by关键字与集合函数一起使用时,可以通过集合函数计算分组中的总记录、最大值、最小值等。

下面按employee表的sex字段进行分组查询。sex字段取值相同的为一组。然后对每一组使用集合函数count()进行计算,求出每一组的记录数。select语句的代码如下:

select sex,count(sex) from employee group by sex;

代码执行如下:
在这里插入图片描述
4、group by关键字与having一起使用

如果加上“Having 条件表达式”,可以限制输出的结果。只有满足条件表达式的结果才会显示。

下面按employee表的sex字段进行分组查询。然后显示记录数大于等于3的分组。select语句的代码如下:

在这里插入图片描述

5、按多个字段进行分组

MySQL中,还可以按多个字段进行分组。例如,employee表按照d_id字段和sex字段进行分组。分组过程中,先按照d_id字段进行分组。遇到d_id字段的值相等的情况时,再把d_id值相等的记录按照sex字段进行分组。

下面employee表按照d_id字段和sex字段进行分组。select语句如下:

select \* from employee group by d_id,sex;

代码执行如下:
在这里插入图片描述
6、group by关键字与with rollup一起使用
使用with rollup时,将会在所有记录的最后加上一条记录。这条记录是上面所有记录的总和。

下面按employee表的sex字段进行分组查询。使用count()函数来计算每组的记录数。并且加上with rollup。select语句如下:


# 总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

**请转发本文支持一下**

![](https://img-blog.csdnimg.cn/img_convert/d45e1b7517bade0f3109eead2eb81e1d.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/c5385c3c5ab256e41c315e752ee8ccf7.webp?x-oss-process=image/format,png)

sex字段进行分组查询。使用count()函数来计算每组的记录数。并且加上with rollup。select语句如下:

总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

[外链图片转存中…(img-CfiZz6VI-1725904418240)]

[外链图片转存中…(img-jFvsQVn6-1725904418240)]

标签: mysql 数据库

本文转载自: https://blog.csdn.net/2401_86637453/article/details/142073088
版权归原作者 2401_86637453 所有, 如有侵权,请联系我们删除。

“MySQL-查询数据库(一)_查询库”的评论:

还没有评论