SQL语句大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL语句大全
正如大多数现代的关系语言一样,SQL 是基于记录关系微积分(TRC)的。结果是每个可以用记录关系微积分(TRC)表示的查询(相等地,或者是关系演算),同样也可以用SQL 表示。不过,还有一些超出关系演算或者微积分的能力。下面是一个SQL 提供的并非关系演算或者关系微积分的内容的一个列表:∙插入,删除或者更改数据的命令。
∙算术能力:在SQL 里,我们可以和比较功能一样进行算术运算,例如
∙ A < B + 3。
要注意+ 或者其他算术操作符从未在关系演算或者关系微积分里面出现过。
∙分配和打印命令:我们可以打印一条查询构造的关系以及给一个被计算的关系分配关系名。
∙聚集函数:象average,sum,max,等操作符可以应用于一个关系的列以获取单一的量。1.4.1. Select(选择)
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 语句复杂的语法。用于这些例子的表在供应商和部件数据库里定义。
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 中检索出属性PNA ME 和PRICE,我们使用下面的语句:
SELECT PNAME, PRICE
FROM PART
WHERE PRICE > 10;
这回我们的结果是:
PNAME | PRICE
--------+--------
Bolt | 15
Cam | 25
请注意SQL 的SELECT 语句对应关系演算里面的"projection" (映射),而不是"selection"(选择)(参阅关系演算获取详细信息)。
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 是第二个列的新名字。这个技巧可以用于目标列表里的每个元素,给它们赋予一个在结果列中显示的新的标题。这个新的标题通常称为别名。这个别名不能在该查询的其他地方使用。
1.4.1.
2. Joins(连接)
下面的例子显示了SQL 里是如何实现连接的。
要在共同的属性上连接三个表SUPPLIER,PART 和SELLS,我们通常使用下面的语句:
SELECT S.SNAME, P.PNAME
FROM SUPPLIER S, PART P, SELLS SE
WHERE S.SNO = SE.SNO AND
P.PNO = SE.PNO;
而我们得到的结果是:
SNAME | PNAME
-------+-------
Smith | Screw
Smith | Nut
Jones | Cam
Adams | Screw
Adams | Bolt
Blake | Nut
Blake | Bolt
Blake | Cam