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

相关推荐
夜泉_ly1 小时前
MySQL -安装与初识
数据库·mysql
qq_529835352 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New5 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6755 小时前
数据库基础1
数据库
我爱松子鱼5 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo5 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser6 小时前
【SQL】多表查询案例
数据库·sql
Galeoto6 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)7 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231117 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql