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

相关推荐
不羁。。6 小时前
【撸靶笔记】第八关:GET - Blind - Boolian Based - Single Quotes
数据库·sql·mybatis
AwhiteV6 小时前
利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
数据库·人工智能·自然语言处理·oracle·大模型·text2sql
m0_595199857 小时前
Redis(以Django为例,含具体操作步骤)
数据库·redis·缓存
爱尚你19937 小时前
MySQL 三大日志:redo log、undo log、binlog 详解
数据库·mysql
小猿姐8 小时前
KubeBlocks AI:AI时代的云原生数据库运维探索
数据库·人工智能·云原生·kubeblocks
NocoBase10 小时前
10 个开源工具,快速构建数据应用
数据库·低代码·开源
麻辣清汤10 小时前
结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))
数据库·python·sql·finebi
钢铁男儿10 小时前
Python 正则表达式(正则表达式和Python 语言)
python·mysql·正则表达式
Kan先生11 小时前
对象存储解决方案:MinIO 的架构与代码实战
数据库·python
超级迅猛龙12 小时前
保姆级Debezium抽取SQL Server同步kafka
数据库·hadoop·mysql·sqlserver·kafka·linq·cdc