SELECT 语句
- 使用SELECT检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择
检索单个列或多、所有列
SELECT code FROM a;-- 上述语句利用SELECT语句从a表中检索一个名为code的列-- 所需的列名在SELECT关键字之后给出, FROM关键字指出从其中检索数据的表名-- 在SELECT关键字后给出多个列名,列名之间必须以逗号分隔可实现查询多个列名-- 检索所有列可用通配符 *SELECT * FROM a;-- 除非需要表中的所有数据,否则别使用通配符,检索不需要的列通常会降低检索和应用程序的性能-- 通配符优点是可以检索名字未知的列

检索不同的行
- SELECT返回所有匹配的行,所以有些会有部分数据重复的情况
- 可是使用 DISTINCT(去重) ```sql SELECT DISTINCT vend_id FROM priducts; — SELECT DISTINCT vend_id告诉MySQL只返回不同(唯一)的vend_id行 — 如果使用 DISTINCT 关键字,它必须直接放在列名的前面 — DISTINCT关键字应用于所有列而不仅是前置它的列。如果给出SELECT DISTINCT vend_id,prod_price,除非指定的两个列都不同,否则所有行都将被检索出来
- 限制结果
- SELECT语句返回所有匹配的行,它们可能是指定表中的每个行
- LIMIT
```sql
SELECT prod_name FROM products LIMIT 5;
-- LIMIT 5指示MySQL返回不多于5行
-- 为得出下一个5行,可指定要检索的开始行和行数
SELECT prod_name FROM products LIMIT 5,5;
-- 带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始。
-- 行0 检索出来的第一行为行0而不是行1。因此, LIMIT 1, 1将检索出第二行而不是第一行。
-- 在行数不够时 LIMIT中指定要检索的行数为检索的最大行数。如果没有足够的行(例如,给出LIMIT 10, 5,但只有13行), MySQL将只返回它能返回的那么多行。
- MySQL 5的LIMIT语法 LIMIT 3, 4的含义是从行4开始的3行还是从行3开始的4行?如前所述,它的意思是从行3开始的4行,这容易把人搞糊涂。由于这个原因, MySQL 5支持LIMIT的另一种替代语法。 LIMIT4 OFFSET 3意为从行3开始取4行,就像LIMIT 3, 4一样。
- 使用完全限定的表名
- 使用完全限定的名字来引用列(同时使用表名和列字)
SELECT products.prod_name FROM products; -- 作用一样,但是使用了一个完全限定的列名 SELECT products.prod_name FROM crashcourse.products -- 假定 products 在 crashcourse 数据库中,也可以这样使用
- 使用完全限定的名字来引用列(同时使用表名和列字)
