• 第4章 检索数据
    • 一、SELECT语句
    • 二、检索单个列
    • 三、检索多个列
    • 四、检索所有列
    • 五、检索不同的行
    • 六、限制结果
    • 七、使用完全限定的表名

    第4章 检索数据

    1. SELECT语句
    2. 检索单个列
    3. 检索多个列
    4. 检索所有列
    5. 检索不同的行
    6. 限制结果
    7. 使用完全限定的表名

      

    一、SELECT语句

      作用:从一个或多个表中检索信息。

      为了使用select检索表数据,必须至少给出两条信息:

    1. 想选择什么
    2. 从什么地方选择

      

    二、检索单个列

    1. select prod_name form products;

      上述语句利用select语句从products表中检索一个名为prod_name的列。所需的列名在select关键字之后给出,from关键字指出从其中检索数据的表名。

    注意:检索数据未排序,可能是添加到表中的顺序,也可能不是,顺序没有特殊意义。

      如上的一条简单select语句将返回表中所有行。数据没有过滤(过滤将得出结果集的一个子集),也没有排序。

    注意:多条SQL语句必须以分号(;)分隔,特定的DBMS单条语句可以不加分号,加上也没有坏处,如果你使用的是MySQL命令行,必须加上分号来结束SQL语句。SQL语句不区分大小写。但有些标识符(如数据库名、表名、列名)可能不同。

      

    三、检索多个列

      要想从一个表中检索多个列,使用相同的select语句。唯一的不同是必须在select关键字后给出多个列名,列名之间必须以逗号分隔。

    1. select prod_id, prod_name, prod_price from products;

      

    四、检索所有列

    1. select * from procucts;

      如果给定一个通配符(*),则返回表中所有列。

      

    五、检索不同的行

    1. select distinct vend_id form products;

      select distinct vend_id告诉MySQL只返回不同(唯一)的vend_id行。如果使用distinct关键字,它必须直接放在列名的前面。

    注意:不能部分使用distinctdistinct关键字应用于所有列而不仅是前置它的列。如果给出select distinct vend_id, prod_price,除非指定的两个列都不同,否则所有行都将被检索出来。

      

    六、限制结果

      select语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可以使用limit子句。

    1. select prod_name from products limit 5;

      此语句使用select语句检索单个列。limit 5指示MySQL返回不多于5行。

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

    1. select prod_name from products limit 5, 5;

    ,  所以,带一个值的limit总是从第一行开始,给出的数为返回的行数。带两个值的limit可以指定从行号为第一个值的位置开始。

    注意:检索出来的第一行为行0而不是行1。因此,limit 1, 1将检索出第二行而不是第一行。在行数不够时,limit中指定要检索的行数为检索的最大行数,如果没有足够的行,MySQL将只返回它能返回的那么多行。MySQL 5的limit语法:limit 4 offset 3意为从行3开始取4行,就像limit 3, 4

      

    七、使用完全限定的表名

      指定了一个完全限定的列名,功能同上。

    1. select products.prod_name from products;

      表名也可以使用完全限定的:

    1. select products.prod_name form crashcourse.products;

      功能同上(假定products表确实位于crashcourse数据库中)。

    ?