SQL select 语法

发表于:2007-06-07来源:作者:点击数: 标签:
SQL 里面最常用的命令是 SELECT 语句,用于检索数据。语法是: SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ] [ FROM from_item [, ...] ] [ WHE

SQL 里面最常用的命令是 SELECT 语句,用于检索数据。语法是:

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]

    * | expression [ AS output_name ] [, ...]

    [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ]

    [ FROM from_item [, ...] ]

    [ WHERE condition ]

    [ GROUP BY expression [, ...] ]

    [ HAVING condition [, ...] ]

    [ { UNION | INTERSECT | EXCEPT [ ALL ] } select ]

    [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]

    [ FOR UPDATE [ OF class_name [, ...] ] ]

    [ LIMIT { count | ALL } [ { OFFSET | , } start ]]

     

现在我们将通过不同的例子演示 SELECT 语句复杂的语法。用于这些例子的表在 sqldb.org/pgsqldoc-7.1c/sql.html#AEN108">供应商和部件数据库 里定义。

1.4.1.1. 简单的 Select

这里是一些使用 SELECT 语句的简单例子:

Example 1-4. 带有条件的简单查询

要从表 PART 里面把字段 PRICE 大于 10 的所有记录找出来, 我们写出下面查询:

SELECT * FROM PART

    WHERE PRICE > 10;

	
然后得到表:
 PNO |  PNAME  |  PRICE

-----+---------+--------

  3  |  Bolt   |   15

  4  |  Cam    |   25

	

在 SELECT语句里使用 "*" 将检索出表中的所有属性。 如果我们只希望从表 PART 中检索出属性 PNAME 和 PRICE, 我们使用下面的语句:

SELECT PNAME, PRICE 

    FROM PART

    WHERE PRICE > 10;

	
这回我们的结果是:
                      PNAME  |  PRICE

                     --------+--------

                      Bolt   |   15

                      Cam    |   25

	
请注意 SQL 的 SELECT 语句对应关系演算里面的 "projection" (映射),而不是 "selection"(选择)(参阅 sqldb.org/pgsqldoc-7.1c/relmodel-oper.html#AEN246">关系演算 获取详细信息)。

WHERE 子句里的条件也可以用关键字 OR,AND,和 NOT 逻辑地连接起来:

SELECT PNAME, PRICE 

    FROM PART

    WHERE PNAME = 'Bolt' AND

         (PRICE = 0 OR PRICE <= 15);

	
这样将生成下面的结果:
 PNAME  |  PRICE

--------+--------

 Bolt   |   15

	

目标列表和 WHERE 子句里可以使用算术操作。例如, 如果我们想知道如果我们买两个部件的话要多少钱, 我们可以用下面的查询:

SELECT PNAME, PRICE * 2 AS DOUBLE

    FROM PART

    WHERE PRICE * 2 < 50;

	
这样我们得到:
 PNAME  |  DOUBLE

--------+---------

 Screw  |    20

 Nut    |    16

 Bolt   |    30

	
请注意在关键字 AS 后面的 DOUBLE 是第二个列的新名字。 这个技巧可以用于目标列表里的每个元素, 给它们赋予一个在结果列中显示的新的标题。 这个新的标题通常称为别名。这个别名不能在该查询的其他地方使用。

原文转自:http://www.ltesting.net