第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数据库中)。

?