- 第4章 检索数据
- 一、SELECT语句
- 二、检索单个列
- 三、检索多个列
- 四、检索所有列
- 五、检索不同的行
- 六、限制结果
- 七、使用完全限定的表名
第4章 检索数据
SELECT语句
检索单个列
检索多个列
检索所有列
检索不同的行
限制结果
使用完全限定的表名
一、SELECT语句
作用:从一个或多个表中检索信息。
为了使用select
检索表数据,必须至少给出两条信息:
想选择什么
从什么地方选择
二、检索单个列
select prod_name form products;
上述语句利用select
语句从products
表中检索一个名为prod_name
的列。所需的列名在select
关键字之后给出,from
关键字指出从其中检索数据的表名。
注意:检索数据未排序,可能是添加到表中的顺序,也可能不是,顺序没有特殊意义。
如上的一条简单select
语句将返回表中所有行。数据没有过滤(过滤将得出结果集的一个子集),也没有排序。
注意:多条SQL语句必须以分号(;
)分隔,特定的DBMS单条语句可以不加分号,加上也没有坏处,如果你使用的是MySQL命令行,必须加上分号来结束SQL语句。SQL语句不区分大小写。但有些标识符(如数据库名、表名、列名)可能不同。
三、检索多个列
要想从一个表中检索多个列,使用相同的select
语句。唯一的不同是必须在select
关键字后给出多个列名,列名之间必须以逗号分隔。
select prod_id, prod_name, prod_price from products;
四、检索所有列
select * from procucts;
如果给定一个通配符(*
),则返回表中所有列。
五、检索不同的行
select distinct vend_id form products;
select distinct vend_id
告诉MySQL只返回不同(唯一)的vend_id
行。如果使用distinct
关键字,它必须直接放在列名的前面。
注意:不能部分使用distinct
,distinct
关键字应用于所有列而不仅是前置它的列。如果给出select distinct vend_id, prod_price
,除非指定的两个列都不同,否则所有行都将被检索出来。
六、限制结果
select语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可以使用limit子句。
select prod_name from products limit 5;
此语句使用select
语句检索单个列。limit 5
指示MySQL返回不多于5
行。
为得出下一个5行,可指定要检索的开始行和行数:
select prod_name from products limit 5, 5;
, 所以,带一个值的limit总是从第一行开始,给出的数为返回的行数。带两个值的limit可以指定从行号为第一个值的位置开始。
注意:检索出来的第一行为行0
而不是行1
。因此,limit 1, 1
将检索出第二行而不是第一行。在行数不够时,limit中指定要检索的行数为检索的最大行数,如果没有足够的行,MySQL将只返回它能返回的那么多行。MySQL 5的limit
语法:limit 4 offset 3
意为从行3
开始取4
行,就像limit 3, 4
。
七、使用完全限定的表名
指定了一个完全限定的列名,功能同上。
select products.prod_name from products;
表名也可以使用完全限定的:
select products.prod_name form crashcourse.products;
功能同上(假定products
表确实位于crashcourse
数据库中)。
?