MySQL入门学习:SELECT数据检索
作者:互联网
一、数据库概述
数据库是一个以某种有组织的方式存储的数据集合。理解数据库的一种最简单的办法是将其
想象为一个文件柜。此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。
数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)。
1.1 表
表(table): 某种特定类型数据的结构化清单。
通常我们将资料放入自己的文件柜时,并不是随便将它们扔进某个抽屉就完事了,而是在文件柜中创建文件,然后将相关的资料放入特定的文件中。 在数据库领域,这种文件称为表。表是一种结构化的文件,可用来存储某种特定类型的数据。表可以保存顾客清单、产品目录,或者其他信息清单。
数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的,这表示数据库中没有其他表具有相同的名字。
1.2 列和数据类型
列(column): 表中的一个字段。所有表都是由一个或多个列组成的。
表由列组成。列中存储着表中某部分的信息。理解列的最好办法是将数据库表想象为一个网格。网格中每一列存储着一条特定的信息。例如,在顾客表中,一个列存储着顾客编号,另一个列存储着顾客名,而地址、城市、州以及邮政编码全都存储在各自的列中。
数据库中每个列都有相应的数据类型。数据类型定义列可以存储的数据种类。数据类型限制可存储在列中的数据种类(例如,防止在数值字段中录入字符值)。数据类型还帮助正确地排序数据,并在优化磁盘使用方面起重要的作用。
数据类型(datatype): 所容许的数据的类型。每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据。
1.3 行
行(row): 表中的一个记录。
例如,顾客表可以每行存储一个顾客。表中的行数为记录的总数。
1.4 主键
表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客表可以使用顾客编号列,而订单表可以使用订单ID,雇员表可以使用雇员ID或雇员社会保险号。唯一标识表中每行的这个列(或这组列)称为主键。
主键(primary key)一一列(或一组列),其值能够唯一区分表中每个行。
表中的任何列都可以作为主键,只要它满足以下条件:
- 任意两行都不具有相同的主键值;
- 每个行都必须具有一个主键值(主键列不允许NULL值)。
主键通常定义在表的一列上,但这并不是必需的,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到构成主键的所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。
二、检索数据
2.1 SELECT语句
SELECT语句的用途是从一个或多个表中检索信息,是最常使用的SQL语句。为了使用SELECT检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。
2.1.1 检索单列示例:
SELECT prod_name FROM products
上例表示利用SELECT语句从products表中检索一个名为prod_name的列。所需的列名在SELECT关键字之后给出,FROM关键字指出从其中检索数据的表名。结果会将products表中prod_name的每一行内容输出,如下:
2.1.2 检索多个列示例:
检索多个列的时候,只要在SELECT关键字后给出多个列名就行。列名之间必须以逗号分隔。
SELECT prod_id,prod_name,prod_price FROM products
2.1.3 检索所有的列
可以使用通配符*,检索所有的列。如下:
SELECT * FROM products
2.1.4 检索不同的行
如下,当我们检索vend_id,SELECT返回所有匹配的行,其中会有一些相同的行,如果我们想要检索出有不同值的列表,可以使用DISTINCT关键字。此关键字指示MySQL只返回不同的值。
SELECT DISTINCT vend_id FROM products
返回值如下,没有相同值:
2.1.5 限制结果
SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句,如下,LIMIT 5限制返回不多于5行。
SELECT prod_name FROM products LIMIT 5
为得出下一个5行,可指定要检索的开始行和行数,如下所示,LIMIT 5, 5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数 。
SELECT prod_name FROM products LIMIT 5,5
总结LIMIT限制:
带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始。
2.2 排序检索数据
在前一节中,SQL语句返回某个数据库表的单个列的数据并没有特定的顺序。为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。
2.2.1 以字母顺序排序:
SELECT prod_name FROM products ORDER BY prod_name;
2.2.2 按多个列排序
经常需要按不止一个列进行数据排序。例如,如果要显示雇员清单,可能希望按姓和名排序(首先按姓排序,然后在每个姓中再按名排序)。为了按多个列排序,只要指定列名,列名之间用逗号分开即可(就像选择多个列时所做的那样)。
SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price,prod_name;
上述例子中的输出,仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有的值都是唯一的,则不会按prod_name排序。
2.2.3 指定排序方向
数据排序不限于升序排序(从A到Z)。这只是默认的排序顺序,还可以使用ORDER BY子句以降序(从Z到A)顺序排序。为了进行降序排序,必须指定DESC关键字。
SELECT prod_price,prod_name FROM products ORDER BY prod_price DESC
多个列排序示例:
SELECT prod_price,prod_name
FROM products
ORDER BY prod_price DESC, prod_name
DESC关键字只应用到直接位于其前面的列名。在上例中,只对prod_price列指定DESC,对prod_name列不指定。因此,prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准的升序排序。
三、结束
本文是MySql必知必会的学习笔记,主要介绍了SELECT数据检索,包括单列、多列数据检索以及LIMIT限制语句和ORDER BY 排序语句。
标签:检索,prod,name,数据检索,表中,MySQL,排序,SELECT 来源: https://blog.csdn.net/sssxlxwbwz/article/details/122781082