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

相关推荐
RestCloud2 小时前
4中常见的数据集成方式
数据库
咯哥布林3 小时前
Ubuntu24安装MySQL8.4
mysql
Databend3 小时前
超 10 倍查询加速,N-Gram Index 设计与优化全解析
数据库
爱可生开源社区4 小时前
SCALE:一个面向专业级任务的大语言模型 SQL 能力开源评测框架
数据库
HyggeBest4 小时前
Mysql之undo log、redo log、binlog日志篇
后端·mysql
星环科技TDH社区版5 小时前
星环科技产品可存储的表格式功能介绍以及创建示例
大数据·数据库
Tapdata8 小时前
全球 DaaS 市场研究报告上线,聚焦数据服务化趋势与行业演进路径
数据库
李少兄10 小时前
MySQL 默认连接数
数据库·mysql
刘一说10 小时前
资深Java工程师的面试题目(六)数据存储
java·开发语言·数据库·面试·性能优化
江沉晚呤时10 小时前
EventSourcing.NetCore:基于事件溯源模式的 .NET Core 库
java·开发语言·数据库