内容摘要:本章将介绍如何使用 SELECT 语句从表中检索一个或多个数据列。
4.1 SELECT 语句
使用 SELECT 语句需要两个信息:选择什么,以及从什么地方选择。
4.2 检索单个列
SELECT 列名 FROM 表名;从表中检索一个列。如我们从 products 表中检索一个名为 prod_name 的列:
SELECT prod_name FROM products;
此处如果没有明确排序查询结果,则返回的数据顺序没有特殊的意义。只要返回相同数目的行,就是正常的。
注意:
- 多条 SQL 语句必须以分号分隔;
- SQL 语句不区分大小写,习惯将所有 SQL 关键字大写,所有列名和表名小写;
- SQL 语句中所有的空格会被忽略
4.3 检索多个列
SELECT 列名, 列名, 列名 FROM 表名; 从某个表中选择三列数据。
SELECT prod_id,prod_name,prod_price FROM products;
4.4 检索所有列
SELECT * FROM 表名; 返回表中所有列。通配符(*)代表所有。
SELECT * FROM products;
4.5 检索不同的行
SELECT DISTINCT 列名 FROM 表名; 从此表中返回此列中所有不同的值。
SELECT DISTINCT vend_id FROM products; // 从 products 表中检索 vend_id 列并且只返回不相同的值,过滤掉相同的值。
注:DISTINCT(
[dɪ’stɪŋkt],清晰的)
不能部分使用 DISTINCT:DISTINCT 关键字必须应用于所有列而不仅是前置它的列。如果给出 SELECT DISTINCT vend_id, prod_price,除非指定的两个列都不同,否则所有航都将被检索出来。
4.6 限制结果
SELECT 列名 FROM 表名 LIMIT 行数; 从某个表中检索某个列且不多于多少行。
SELECT prod_name FROM products LIMIT 5; // 从 products 表中检索 prod_name 这一列并不多于 5 行
SELECT 列名 FROM 表名 LIMIT X Y ; 从某个表中检索某个列,且从第 X 行开始,不多于 Y 行。
SELECT prod_name FROM products LIMIT 3,5; //
从 products 表中检索 prod_name 这一列,从第 3 行开始,返回的结果不超过 5 行。
注意:
- 行数不够时,MySQL 只返回它能返回的那么多行。
- 检索出来的第一行是行 0 而不是行1,因此,LIMIT 1,1 将检索出第二行而不是第一行。
- 为避免费解,LIMIT 4 OFFSET 3 等价于 LIMIT 3,4
4.7 使用完全限定的表名
SELECT 表名.列名 FROM 表名;
SELECT 表名.列名 FROM 数据库名.表名;
SELECT products.prod_name FROM products;
SELECT products.prod_name FROM crashcourse.products;
有一些情形需要完全限定名,此为后话。