Mysql入门系列三:检索数据

本文详细介绍了Mysql中SELECT语句的使用方法,包括简单的数据检索、使用DISTINCT关键字去除重复行、利用LIMIT关键字限制结果行数、使用ORDER BY子句对数据进行排序等。同时,还介绍了如何通过结合LIMIT和ORDER BY子句来查找最贵或最便宜的商品。

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

查询是数据库操作中十分重要的功能,本节对《Mysql必知必会》第四、五章进行学习。

SELECT语句是从表中检索一个或多个数据列,参数主要是检索的内容以及数据来源

注:sql语句不区分大小写

准备工作

#登录mysql
mysql -u root -p
输入密码
#使用goods数据库
use goods;

简单检索数据

这一部分对应第四章,主要是初步掌握数据库的检索

检索单个列

#从表products中检索出prod_name列
select prod_name from products;

检索多个列,参数列名之间用逗号隔开

#从表products检索3列
select prod_id,prod_name,prod_price from products;

检索所有列

#从products表中查询所有数据
select * from products;

检索不同的行

#查询供应商ID
select vend_id from products;

四个供应商却有14个结果,明显不是我们需要的,所以需要引入DISTINCT关键字,DISTINCT关键字是对查询所有列有一个列不相同就算不同

#查询供应商ID
select distinct vend_id from products;

限制结果

查询结果有很多行,可以用LIMIT关键字来约定查询结果显示行数

#查询前五行产品名
select prod_name from products limit 5;

#从行5开始的5行
select prod_name from products limit 5,5;

需要注意的是行是从0开始的,行5表示的是数据的第六行

#查询第二行,数值是1
select prod_name from products limit 1,1;

另外如果查询的行数超过了本身的行数,那么只会返回剩下的所有行数

#从行10开始的5行
select prod_name from products limit 10,5;

可以看出最后只有四行结果

使用完全限定的表名

特殊时期需要限定某个表中的列和某个数据库的表

#限定goods数据库的products表及表中的prod_name列
select products.prod_name from goods.products;

排序检索数据

这一部分对应的是《Mysql必知必会》第五章的内容,主要是使用SELECT 的 ORDER BY子句去给检索出的数据进行排序

排序数据

select语句查询出的结果默认是存储的顺序,一般是最开始添加到表的顺序,如果数据后来进行过更新删除,顺序就会被改变。

子句(clause)  SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。子句的例子有SELECT语句的FROM子句,我们在前一章看到过这个子句。为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。 ORDER BY子句取一个或多个列的名字,据此对输出进行排序。

#查询prod_name按字典序排序
select prod_name from products order by prod_name;

 这是按照ASCII值排序的

按多个列排序

查询的结果通常是多列形式,为了让数据显示的更容易明白,需要对多个列进行排序,排序的顺序是order by子句后面的顺序,也就是说前一个值相同的时候才去比较后面的值

#先按价格再按名称
select prod_id,prod_price,prod_name from products order by prod_price,prod_name;

#先按名字再按价格
select prod_id,prod_name,prod_price from products order by prod_name,prod_price;

例如上面价格相同的时候才去根据字典序去比较名称

指定排序方向

通常Mysql默认的排序是升序,也就是数字从小到大,字符从小到大,但有的时候我们需要降序,例如搜索最贵的商品,降序排序的关键字是DESC

#降序排序价格
select prod_id,prod_price,prod_name from products order by prod_price desc;

如果是对多个列排序,那么需要对哪一列降序排序就在哪一列后面加上DESC

#对价格降序排序,名称降序排序
select prod_id,prod_price,prod_name from products order by prod_price desc,prod_name desc;

可以看出都是10元的时候名称是降序的

升序的关键字是ASC,不过一般用不到,因为是默认的

最后介绍一下如何通过排序和LIMIT子句来找出最贵或最便宜的商品

#查询最贵的商品
select prod_id,prod_price,prod_name from products order by prod_price desc limit 1;

通过限制查询数量为1就可以了

需要注意的是order by子句必须在from子句后面,limit子句必须在order by子句后面,否则会出错

下一个教程将会讲解对数据进行过滤,从而得到我们想要的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值