检索数据
SELECT语句
SELECT语句用途是从一个或多个表中检索信息。为了使用SELECT检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。
检索单个列
利用SELECT语句从products表中检索一个名为prod_name的列:
SELECT prod_name FROM products;
注意:
- 未排序数据:如果没有明确排序查询结果(下一章介绍),则返回的数据的顺序没有特殊意义。
- 结束SQL语句:多条SQL语句必须以分号(;)分隔。
- SQL语句和大小写: SQL语句不区分大小写,许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易于阅读和调试。
- 使用空格:处理SQL语句时,其中所有空格都被忽略。多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。
检索多个列
从products表中选择3列:
SELECT prod_id, prod_name, prod_price FROM products;
SQL语句一般返回原始的、无格式的数据。数据的格式化是一个表示问题,而不是一个检索问题。
检索所有列
SELECT语句还可以检索所有的列而不必逐个列出它们:
SELECT * FROM products;
虽然使用通配符可能会使你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。
检索不同的行
DISTINCT关键字指示MySQL只返回不同的值:
SELECT DISTINCT vend_id FROM products;
DISTINCT关键字应用于所有列而不仅是前置它的列。如果给出SELECT DISTINCT vend_id, prod_price,除非指定的两个列都不同,否则所有行都将被检索出来。
限制结果
为了返回第一行或前几行,可使用LIMIT子句:
SELECT prod_name FROM products LIMIT 5;
可指定要检索的开始行和行数:
SELECT prod_name FROM products LIMIT 5, 5;
LIMIT 5, 5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。注意行号从0开始。
MySQL 5支持LIMIT的另一种替代语法。LIMIT4 OFFSET 3意为从行3开始取4行,就像LIMIT 3, 4一样。
使用完全限定的表名
使用完全限定的名字来引用列(同时使用表名和列字):
SELECT products.prod_name FROM products;
表名也可以是完全限定:
SELECT products.prod_name FROM crashcourse.products;