MySQL入门学习--查询数据

这篇博客详细介绍了MySQL的查询语句,包括基本查询、单表查询、多条件查询、分组与排序、子查询和正则表达式等。内容涵盖了从选择指定字段、使用in和between关键字,到内连接、外连接、子查询的any和all关键字,以及正则表达式的应用。是MySQL初学者全面了解和掌握查询操作的好资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本查询语句

mysql从数据表中查询数据的基本语句select语句,select语句的基本格式比较复杂,所以举例说明select查询语句的使用:

首先以一个例子说明如何使用select从单个表中获取数据:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单表查询

是指从一张表的数据中查询所需要的数据

查询所有字段:

select * from 表名
在这里插入图片描述
在select语句中指定所有字段
在这里插入图片描述

查询指定字段

查询单个字段
select 列名 from 表名;
在这里插入图片描述
查询多个字段
select 字段名1,字段名2… from 表名;
在这里插入图片描述

查询指定记录

select 字段名1,字段名2,…,字段名n
from 表名
where 查询条件
在这里插入图片描述

带in关键字的查询

in操作符用来查询满足指定范围内的条件的记录。注意:将所有检索条件用括号括起来,条件之间用‘,’分开,只要满足条件里的一个值即为匹配项。
下图中,查询了fruits数据表中s_id为101和102的记录,并按照s_id排序把记录显示出来
在这里插入图片描述
在这里插入图片描述

带between and的范围查询

用来查询某个范围的值,有两个参数,即范围的开始值和结束值。
下图查询s_id在101-102之间的记录
在这里插入图片描述
下图为查询f_price在5.0-10.0之间的记录
在这里插入图片描述

带like的字符匹配查询

前面的检索中,主要讲解了如何查询多个字段的记录,或者进行比较查询或者是查询一个条件范围内的记录,现在加入我要要查询包含“ge”字符的名称,单纯的比较操作是不可以实现的,需要采用通配符的方法。主要有两种“%”,“
1.%:匹配任意长度的字符,甚至零字符。
查询所有以b开头的水果
在这里插入图片描述
2.
:匹配任意一个字符
查询以e结尾的长度为5的水果,下图输入的下划线是由4个‘_’组成的
在这里插入图片描述

带and、or的多条件查询

and:只有满足所有查询条件的记录才可以返回。多个条件表达式用‘and’隔开;
or:满足其中一个条件即可返回。
查询s_id和f_price两个条件都满足的记录
在这里插入图片描述
查询s_id或f_price两个条件满足之一的记录
在这里插入图片描述

查询结果不重复

distinct:
语法格式:
select distinct 字段名 from 表名 ;
在这里插入图片描述

去除了重复的101数据记录
在这里插入图片描述

对查询结果进行排序

1.单列排序
order by子句对指定的列数据进行排序
语法格式:
select 字段名 from 表名 order by 字段名;
下图将数据按f_price排序并显示
在这里插入图片描述
2.多列排序
语法格式:
select 字段名1,字段名2 from 表名 order by 字段名1,字段名2;
如果第一列是相同的,才会对第二列进行排序,如果第一列数据都是唯一的,将不再对第二列进行排序。

3.指定排序方向
一般字母排序默认按升序方式,使用关键字desc可以实现降序排列,关键字asc是升序排序,是默认的排序方式
一般默认是升序排列(ASC),而DESC是降序排序
在这里插入图片描述

分组查询

分组查询是对数据按照某个或多个字段进行分组,关键字是group by
基本语法:【group by 字段】 【having <条件表达式>】
1.创建分组
group by关键字通常要和集合函数一起用,例如max(),min(),count(),sum(),avg()。group_concat()将分组中的各个字段显示出来。
在这里插入图片描述
2.添加with rollup
添加此关键字之后,在所有查询分组的记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量
在这里插入图片描述

3.多字段分组
语法格式:
select * from 数据表名 group by 字段名1,字段名2…
在这里插入图片描述

PS:group by和order by可以一起使用,即对分组进行排序

limit限制查询结果的数量

语法格式:
limit 【位置偏移量,】 行数
位置偏移量可以省略
下图显示了4行记录
在这里插入图片描述
下图从第4行记录开始显示,显示行数长度为2的之后的记录
在这里插入图片描述

使用集合函数查询

主要有max(),min(),count(),sum(),avg()(求平均值)几个函数,括号里为要求的参数,使用比较简单,不作介绍。

返回数据表的行数
在这里插入图片描述
返回数据某一列值的总和
在这里插入图片描述

连接查询

连接查询是关系型数据库模型的主要特点,是关系型数据库的主要查询方法,主要包括内连接,外链接等。通过连接运算符可以实现多个表查询。

内连接查询

内连接(inner join)使用比较运算符进行表间某列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录。
首先创建数据表suppliers
在这里插入图片描述
插入数据
在这里插入图片描述
在fruits表和suppliers表之间使用内连接查询。
查询之前,查看两个表的结构:
在这里插入图片描述
fruits表和suppliers表中都有相同数据类型的字段s_id,两个表通过s_id字段建立联系。接下来从fruits表中查询f_name、f_price字段,从suppliers表中查询s_id、s_name,SQL语句如下:
在这里插入图片描述
在fruits表和suppliers表之间,使用INNER JOIN语法进行内连接查询,SQL语句如下:
在这里插入图片描述
查询供应f_id= ‘a1’的水果供应商提供的其他水果种类,SQL语句如下:
在这里插入图片描述

外链接查询

1.left join左连接

2.right join右连接

复合条件查询

在连接查询的过程中,添加过滤条件,限制查询的结果。

子查询

指 一个查询语句嵌套在另一个查询语句的内部的查询。

带any some关键字的子查询

ANY和SOME关键字是同义词,表示满足其中任一条件,它们允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。
下面定义两个表tb1和tb2:
CREATE table tbl1 ( num1 INT NOT NULL);
CREATE table tbl2 ( num2 INT NOT NULL);
分别向两个表中插入数据:
INSERT INTO tbl1 values(1), (5), (13), (27);
INSERT INTO tbl2 values(6), (14), (11), (20);
ANY关键字接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE,则返回TRUE。
在这里插入图片描述
在这里插入图片描述
返回tbl2表的所有num2列,然后将tbl1中的num1的值与之进行比较,只要大于num2的任何1个值,即为符合查询条件的结果。
在这里插入图片描述

带all关键字的子查询

在这里插入图片描述

带exists关键字的子查询

查询suppliers表中是否存在s_id=107的供应商,如果存在,则查询fruits表中的记录,SQL语句如下:
在这里插入图片描述

带比较运算的子查询

在suppliers表中查询s_city等于“Tianjin”的供应商s_id,然后在fruits表中查询所有该供应商提供的水果的种类,SQL语句如下:
在这里插入图片描述

合并查询结果

查询所有价格小于9的水果的信息,查询s_id等于101和103所有的水果的信息,使用UNION连接查询结果,SQL语句如下:
在这里插入图片描述
如前所述,UNION将多个SELECT语句的结果组合成一个结果集合。可以分开查看每个SELECT语句的结果:
在这里插入图片描述
在这里插入图片描述

为表和字段取别名

查询fruits表,为f_name取别名fruit_name,f_price取别名fruit_price,为fruits表取别名f1,查询表中f_price
在这里插入图片描述

使用正则表达式查询

在fruits表中,查询f_name字段以字母’b’开头的记录,SQL语句如下:

字符“^”匹配以特定字符或者字符串开头的文本

在这里插入图片描述

字符“$”匹配以特定字符或者字符串结尾的文本

在这里插入图片描述

用“.”来替代字符串中的任意一个字符

在这里插入图片描述

用“*”和“+”来匹配多个字符

星号’*’匹配前面的字符任意多次,包括0次。加号’+’匹配前面的字符至少一次。
在fruits表中,查询f_name字段值以字母’b’开头,且’b’后面出现字母’a’的记录,SQL语句如下:
在这里插入图片描述

匹配指定字符串

正则表达式可以匹配指定字符串,只要这个字符串在查询文本中即可,如要匹配多个字符串,多个字符串之间使用分隔符’|’隔开。
在fruits表中,查询f_name字段值包含字符串“on”的记录,SQL语句如下:
在这里插入图片描述
在fruits表中,查询f_name字段值包含字符串“on”或者“ap”的记录,SQL语句如下:
在这里插入图片描述

匹配指定字符中的任意一个

方括号“[]”指定一个字符集合,只匹配其中任何一个字符,即为所查找的文本。
在fruits表中,查找f_name字段中包含字母’o’或者’t’的记录,SQL语句如下:
在这里插入图片描述
在fruits表,查询s_id字段中数值中包含4、5或者6的记录,SQL语句如下
在这里插入图片描述

匹配指定字符以外的字符

“[^字符集合]”匹配不在指定集合中的任何字符。
在fruits表中,查询f_id字段包含字母ae和数字12以外的字符的记录,SQL语句如下:
在这里插入图片描述
在fruits表中,查询f_name字段值出现字符串“ba”最少1次,最多3次的记录,SQL语句如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值