MySQL检索数据和排序数据

目录

一、select语句

[1.检索单个列(SELECT 列名 FROM 表名;)](#1.检索单个列(SELECT 列名 FROM 表名;))

[2.检索多个列(SELECT 列名1,列名2,列名3 FROM 表名;)](#2.检索多个列(SELECT 列名1,列名2,列名3 FROM 表名;))

[3.检索所有的列(SELECT * FROM 表名;)](#3.检索所有的列(SELECT * FROM 表名;))

[4.检索不同的行(SELECT 列名 FROM 表名;)](#4.检索不同的行(SELECT 列名 FROM 表名;))

[5.限制结果(SELECT 列名 FROM 表名 LIMIT 行数;)](#5.限制结果(SELECT 列名 FROM 表名 LIMIT 行数;))

[6.使用完全限定的表名(SELECT 表名.列名 FROM 表名;)](#6.使用完全限定的表名(SELECT 表名.列名 FROM 表名;))

二、排序检索数据

1.排序数据

2.按多个列排序

3.指定排序方向

[4.limit和order by子句的结合使用](#4.limit和order by子句的结合使用)


一、select语句

最经常使用的语句就是select 语句,它的作用是从一个或多个表中检索信息 。为了使用select检索数据,至少给出两条信息-----想选择什么以及从什么地方选择。

1.检索单个列(SELECT 列名 FROM 表名;)

输入:select prod_name from products;

输出:

注意:结束SQL语句:如果使用mysql命令行,多条SQL语句必须以分号(;)分隔,且SQL语句必须加上分号来结束。
SQL语句的大小写问题:SQL语句不区分大小写!!!SELECT和select是相同的,写成Select也没有关系。但是把SQL的关键字使用大写,表名等使用小写,可以使代码更易于阅读和调试。

2.检索多个列(SELECT 列名1,列名2,列名3 FROM 表名;)

使用同一个SELECT语句检索多个列,需要在每个列名之后加上逗号,最后一个列名不需要加。

输入: select vend_id,vend_name from vendors;

3.检索所有的列(SELECT * FROM 表名;)

可以通过在实际列名的位置使用星号(*)通配符来检索。

输入:select * from vendors;

注意:除非需要检索表中的所有列,否则最好不使用(*)通配符,检索不需要的列会降低检索效率和应用程序的性能。

4.检索不同的行(SELECT 列名 FROM 表名;)

假如想要获取所有的ID

输入:select vend_id from vendors;

注意:如果所获取的数据有重复出现的,可以使用DISTINCT关键字,此关键字指示MySQL只返回不同的值。即(SELECT DISTINCT vend_id FROM vendors;)

5.限制结果(SELECT 列名 FROM 表名 LIMIT 行数;)

为了返回第一行或者前几行,可以使用LIMIT子句。

输入:select vend_id from vendors limit 4;

注意: 如果要返回下一个4行,即从行4开始的4行,如下所示:

select vend_id from vendors limit 4,4;

如果行数不够,MySQL只返回能返回的行数。

6.使用完全限定的表名(SELECT 表名.列名 FROM 表名;)

使用完全限定的名字来引用列(同时使用表名和列名)。

输入: select vendors.vend_name from vendors;

注意:表名也可以是限定的,前提是这个表名确实存在于某个数据库中。

二、排序检索数据

1.排序数据

一般来说返回表中的某个列没有特定顺序,但是检索出来的数据也不是纯粹的随机显示 ,而是以底层表中出现的顺序显示。如果数据后来进行过更新或删除,这个顺序就会受到MySQL重用回收存储空间的影响 。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义。

为了明确的排序用SELECT检索出来的数据,可以使用ORDER BY 子句。ORDER BY子句取一个或多个列的名字对输出进行排序。输出结果将以字母顺序进行排序

格式:SELECT 列名 FROM 表名 ORDER BY 列名;

输入: select vend_name from vendors order by vend_name;

2.按多个列排序

为了按多个列进行排序,则需要指定列名,列名之间用逗号(,)分隔。

格式:SELECT 列名1,列名2,列名3 FROM 表名 ORDER BY 列名1,列名2,列名3;

输入:select prod_price,prod_name from products order by prod_price,prod_name;

以上排序按照价格进行排序。仅在多个行具有相同的prod_price值时才按照prod_price排序。如果prod_price列中的值是唯一的,则不会按照prod_price排序。

3.指定排序方向

数据排序不只是升序排序(A-Z),也有降序排序(Z-A),为了使用降序排序,可以使用DESC关键字。

格式:SELECT 列名1,列名2,列名3 FROM 表名 ORDER BY 列名1 DESC;

输入: select prod_price,prod_name from products order by prod_price desc;

如果要使用多个列进行排序怎么办?则可以降序进行排序之后再对产品进行排序。

desc只对prod_price有效,而其他的依旧以升序排序。

示例:

注意:如果想要多个列都降序排序,则每个列后都要加上desc关键字。

4.limit和order by子句的结合使用

使用limit和order by的组合,可以找到某个列中最高或最低的值。

输入:select prod_price,prod_name from products order by prod_price desc limit 1;

注意:在给出order by子句时,要保证它位于from之后,如果使用limit,它必须位于order by之后。使用子句顺序不对将会产生错误。

即from------>order by------->limit

相关推荐
一个天蝎座 白勺 程序猿5 分钟前
KingbaseES在政务领域的应用实践——武汉人社大数据平台“数字化服务新模式”
大数据·数据库·政务·kingbasees·金仓数据库
vx_vxbs6615 分钟前
【SSM电动车智能充电服务平台】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·spring cloud·小程序·php·idea
f***01931 小时前
【MySQL】JDBC的连接
数据库·mysql
5***T4481 小时前
开启mysql的binlog日志
数据库·mysql
q***33371 小时前
UNION 和 UNION ALL 的区别:深入解析 SQL 中的合并操作
数据库·sql·oracle
郑重其事,鹏程万里2 小时前
关系型数据库(derby)
数据库
Elastic 中国社区官方博客2 小时前
使用 A2A 协议和 MCP 在 Elasticsearch 中创建一个 LLM agent 新闻室:第二部分
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
秋邱2 小时前
价值升维!公益赋能 + 绿色技术 + 终身学习,构建可持续教育 AI 生态
网络·数据库·人工智能·redis·python·学习·docker
前端木偶人之神2 小时前
mysql基础学习
mysql
Three~stone2 小时前
Matlab2025b的安装教程(附安装包和密钥破解文件)
学习·mysql·持续部署