0%

《MySQL必知必会》读书笔记 第四章 检索数据

SQL语句不区分大小写。但许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易于阅读和调试。

在处理SQL语句时,其中所有空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行。多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。

SELECT语句

利用SELECT 语句从products 表中检索一个名为prod_name的列。

1
2
SELECT prod_name
FROM products;

检索多个列

在SELECT关键字后给出多个列名来检索多个列。

1
2
SELECT prod_id, prod_name, prod_price
FROM products;

检索所有列

可以通过在实际列名的位置使用星号(*)通配符来检索所有的列。

1
2
SELECT *
FROM products;

一般,除非你确实需要表中的每个列,否则最好别使用*通配符。虽然使用通配符可能会使你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。

检索不同的行

使用DISTINCT关键字会指示MySQL只返回不同的值。

1
2
SELECT DISTINCT vend_id
FROM products;

DISTINCT关键字应用于所有列。如果给出SELECT DISTINCT vend_id, prod_price,除非指定的两个列都不同,否则所有行都将被检索出来。

限制结果

为了返回第一行或前几行,可使用LIMIT子句。

1
2
3
SELECT prod_name
FROM products
LIMIT 5;

为得出下一个5行,可指定要检索的开始行和行数。

1
2
3
SELECT prod_name
FROM products
LIMIT 5,5;

检索出来的第一行为行0而不是行1。因此,LIMIT 1, 1将检索出第二行而不是第一行。

LIMIT中指定要检索的行数为检索的最大行数。如果没有足够的行(例如,给出LIMIT 10, 5,但只有13行),MySQL将只返回它能返回的那么多行。

MySQL 5支持LIMIT的另一种替代语法。LIMIT4 OFFSET 3意为从行3开始取4行,就像LIMIT 3, 4一样。

使用完全限定的表名

使用完全限定的名字来引用列(同时使用表名和列字)。

1
2
SELECT products.prod_name
FROM products;

使用完全限定的表名。

1
2
SELECT products.prod_name
FROM crashcourse.products;