ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

《MySQL必知必会》检索数据,排序检索数据(select ,* ,distinct ,limit , . , order by ,desc)

2020-08-16 20:32:42  阅读:219  来源: 互联网

标签:检索 排序 name 必知 products MySQL prod select


《MySQL必知必会》检索数据,排序检索数据

1、检索数据

1.1 select 语句

为了使用SELECT检索表数据,必须至少给出两条信息一想选择什
么,以及从什么地方选择。

1.2 检索单个列

select prod_name
from products;

在这里插入图片描述
(此时,检索得到的数据并未进行排序。)

MySQL执行多条SQL语句,结束每条SQL语句时,必须加上“ ; ”分隔,尽管这是单条SQL语句,你加上也可以执行,但其他部分的DBMS却可能需要单条SQL语句也需要加上“ ; ”才可以执行,为了代码的可复用性,培养这一习惯十分重要。

MySQL4.1版本后,SQL语句是不区分大小写的。大小写这取决于个人习惯。

在处理SQL语句时,其中所有空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行。多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。

1.3 检索多个列

要想从一个表中检索多个列,使用相同的SELECT语句。唯-的不同是必须在SELECT关键字后给出多个列名,列名之间必须以逗号分隔(注意:最后一个列名不需要加逗号)。

select prod_name , prod_price
from products;

在这里插入图片描述

1.4检索所有列

select *
from products;

在这里插入图片描述

所有列用(*)通配符来表示。

给出的列的顺序按照表结构中的列顺序展示数据。

使用通配符一般, 除非你确实需要表中的每个列,否则最好别使用*通配符。虽然使用通配符可能会使你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能

通过*通配符可以检索到未知列名的列

1.5检索不同的行

使用distinct关键字指示MySQL只返回不同的值,排除掉相同的值。

distinct关键字必须放在列名的前面

select distinct prod_price
from products;

在这里插入图片描述

不能部分使用distinct distinct关键字应用于所有列不仅是前置它的列。如果给出select distinct vend id,prodprice,除非指定的两个列都不同,否则所有行都将被检索出来。

1.6 限制显示结果

select prod_name , prod_price
from products limit 5;

在这里插入图片描述

使用关键字 limit , 限制只显示 5 行数据。

select prod_name , prod_price
from products limit 5 ,5;

在这里插入图片描述

可以限制开始行 和 显示行数。上图表示显示从第6行数据开始,显示5 行数据(0表示第1行数据,5即表示第6行数据)。

在行数不够时,LIMIT中指定要检索的行数为检索的最大行数。如果没有足 够的行(例如,给出LIMIT10, 5,但只有13行,则返回最后3行数据),MySQL将只返回它能返回的那么多行。

MySQL 5 后,还有一种 limit 替代语法 , limit 3 offset 4 等同于 limit 4 , 3 ;意为从第5行开始取3行数据。

                   **需要注意的是 LIMIT 是MySQL 特有的关键字,Oracle 没有的,考虑到可复用性,应减少使用。**
1.7 使用完全限定的表名(库名)

使用 “ . ” 指定

select products.prod_name 
from mydb.products;

效果等同于

select prod_name 
from products;

products表在 mydb 数据库中 ,prod_name 列在 products 表中。这样使用可以明确指定数据库,表。遇上不同库中相同表名,列名时,可以派上用场。

2、排序检索数据

2.1 排序数据

使用关键字 order by

select vend_name
from vendors
order by vend_name;

在这里插入图片描述

vend_name 以字母顺序排序数据。

2.2 按多个列排序

select prod_name , prod_price
from products
order by prod_price , prod_name;

在这里插入图片描述

按价格排序,出现相同价格时,再按名称字母顺序排序。如果价格不相同,则不会按名称字母顺序排序。

2.3 指定排序方向

select prod_name , prod_price
from products
order by prod_price desc;

在这里插入图片描述

使用关键字 DESC 表示 降序排序方向,默认是升序排序方向(ASC)一般不需要指定。

select prod_name , prod_price
from products
order by prod_price desc,prod_name;	

desc 并未指定到 prod_name 列,则prod_name 列还是按照升序排序显示数据结果。

同理, 在多个列上降序排序如果想在多个列上进行降序排序,必须对每个列指定DESC关键字

在字典( dictionary )排序顺序中,A被视为与a相同,这是MySQL(和大多数数据库管理系统)的默认行为。但是,许多数据库管理员能够在需要时改变这种行为(如果你的数据库包含大量外语字符,:可能必须这样做)。这里,关键的问题是,如果确实需要改变这种排序顺序,用简单的ORDER BY子句做不到。你必须请求数据库管理员的帮助。

order by 可以和 limit 组合使用

select prod_name , prod_price
from products
order by prod_price desc
limit 3;

在这里插入图片描述
如果使用order by 和 limit 组合,limit 必须在 order by 子句之后

标签:检索,排序,name,必知,products,MySQL,prod,select
来源: https://www.cnblogs.com/l1ng14/p/13472586.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有