本章将介绍如何使用SELECT语句从表中检索一个或多个数据列。
1.SELECT语句
SQL语句是由简单的英语单词构成的。这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的。大概,最经常使用的SQL语句就是SELECT语句了。它的用途是从一个或多个表中检索信息。
为了使用SELECT检索表数据,必须至少给出两条信息——想选择什 么,以及从什么地方选择。
1.1 检索单个列
输入:
SELECT receive_count FROM products;
输出 :
分析:
从products中检索要给名为receive_count的列。
如果上的SELECT 语句查询到的是没有过滤的且没有排序的数据。
??SQL结束语句必须要加分号。
SQL语句大小写
SQL语句是不区分大小写的,许多SQL开发人员喜欢对所有的SQL关键字使用大写,而对多有的列和表名使用小写,这样做使代码更易于阅读和调试。
1.2 检索多个列
SELECT关键字后给出多个列明,列名之间必须以逗号分割。
?? 当心逗号 在选择多个列时,一定要在列名之间加上逗号,但最后一个列名不加,如果最后一个列名加上逗号,将出现错误。
使用SELECRT 语句从products表中选择3列:
输入:
SELECT uid,receive_count,profile FROM products
输出:
分析:
这个例子中指定了3个列名,列名之间用逗号分开。
1.3 检索所有列
使用*(通配符)来达到。
输入:
SELECT * FROM products
分析: 如果给定一个通配符(*),则返回表中所有列。列的顺序一般是出现在表定义中出现的顺序。但有时候并不是这样,表的模式的变化(如添加或者删除列)可能会导致顺序的变化
?使用通配符
一般,除非你确实需要表中的每个列,否则最好不要使用*通配符。因为这会降低检索和应用程序的性能。
1.4 检索不同的列
DISTINCT可以实现检索出的数据是去重的
输入:
SELECT DISINCT vend_id FROM products
? 不能部分使用DISTINCT
DISTINCT关键字应用于所有列而不仅是前置它的列。如果给出SELECT DISTINCT vend_id,prod_price,除非指定的两个列的类型都不同,否则所有列都将被检索出来。
1.5 限制结果
LIMIT子句
SELECT语句返回所有匹配的行,他们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。
输入:
SELECT profile FROM products LIMIT 5
输出:
分析:
此语句使用SELECT语句检索单个列。LIMIT 5 指示MySQL返回不多于5行。
指定检索的开始行和行数可以得出下一个5行。
输入:
SELECT profile FROM products LIMIT 5,5
输出:
分析:
LIMIT 5,5 指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。
?行0
索出来的第一行为行0而不是行1。因此,LIMIT 1,1将检索出第二行而不是第一行。
??在行数不够时
LIMIT中指定要检索的行数为检索的最大行数,如果没有足够的行,MySQL将只返回它能够返回的那么多行。
?? MYSQL 5支持LIMIT 的另一种替代语法 LIMIT 4 OFFSET 3 意为从行3开始取4行
1.6 使用完全限定的表名
输入:
SELECT products.pro_name FROM products;
这是一条完全限定的列名。
表名也可以完全限定:
输入:
SELECT products.pro_name FROM crashcourse.products;
这条语句在功能上也等于刚使用的那条语句(当然,假定products 表确实位于crashcourse数据库中)。
正如以后章节所介绍的那样,有一些情形需要完全限定名。现在, 需要注意这个语法,以便在遇到时知道它的作用。
1.7 小结
本章学习了如何使用SQL的SELECT语句来检索单个表列、多个表列 以及所有表列