- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE
PAGE10
SQL语言
正如大多数现代的关系语言一样,SQL是基于记录关系微积分(TRC)的。结果是每个可以用记录关系微积分(TRC)表示的查询(相等地,或者是关系演算),同样也可以用SQL表示。不过,还有一些超出关系演算或者微积分的能力。下面是一个SQL提供的并非关系演算或者关系微积分的内容的一个列表:
插入,删除或者更改数据的命令。
算术能力:在SQL里,我们可以和比较功能一样进行算术运算,例如AB+3。
要注意+或者其他算术操作符从未在关系演算或者关系微积分里面出现过。
分配和打印命令:我们可以打印一条查询构造的关系以及给一个被计算的关系分配关系名。
聚集函数:象average,sum,max,等操作符可以应用于一个关系的列以获取单
一的量。
Select(选择)
SQL里面最常用的命令是SELECT语句,用于检索数据。语法是:SELECT[ALL|DISTINCT[ON(expression[,...])]]
*|expression[ASoutput_name][,...]
[INTO[TEMPORARY|TEMP][TABLE]new_table]
[FROM from_item[,...]][WHERE condition]
[GROUPBY expression[,...]]
[HAVINGcondition[,...]]
[{UNION|INTERSECT|EXCEPT[ALL]}select]
[ORDERBY expression[ASC|DESC|USINGoperator][,...]][FORUPDATE[OF class_name[,...]]]
[LIMIT{count|ALL}[{OFFSET|s,ta}rt]]
现在我们将通过不同的例子演示SELECT语句复杂的语法。用于这些例子的表在供应商和部件数据库里定义。
一个关系数据库是被其用户看作表集合(而且除表之外没有其他东西)的这么一个东西。一个表由行和列组成,每行代表一条记录,每列代表一个包含在表里面的记录的属性。供应商和部件数据库演示了一个由三个表组成的数据库:
SUPPLIER是存储供应商数字(SNO),名称(SNAME)和城市(CITY)的表。PART是存储部件的数字(PNO)名称(PNAME)和价格(PRICE)的表。
SELLS存储关于某个供应商(SNO)销售的部件(PNO)的信息。它是联接其他两个表的结点。
Example1-1.供应商和部件数据库SUPPLIER: SELLS:
SNO| SNAME | CITY SNO|PNO
++ +
1
|
Smith
|
London
1
|
1
2
|
Jones
|
Paris
1
|
2
3
|
Adams
|
Vienna
2
|
4
4
|
Blake
|
Rome
3
|
1
3
|
3
4
|
2
PART: 4 | 3
PNO| PNAME | PRICE 4 | 4
++
1 | Screw | 102 | Nut | 8
3 | Bolt | 15
4 | Cam | 25
PART和SUPPLIER可以看作不同的实体而SELLS可以看作是特定部件和特定供应商之间的一种关系。
如我们稍后将看到的,SQL对表进行操作,就象我们刚才定义的那样,不过在这之前,我们将先学习关系模型的理论。
简单的Select
这里是一些使用SELECT语句的简单例子:Example1-4.带有条件的简单查询
要从表PART里面把字段PRICE大于10的所有记录找出来,我们写出下面查询:
SELECT*FROMPARTWHEREPRICE10;
然后得到表:
PNO| PNAME | PRICE
++
3 | Bolt | 15
4 | Cam | 25
在SELECT语句里使用*将检索出表中的所有属性。如果我们只希望从表PART中检索出属性PNAME和PRICE,我们使用下面的语句:
SELECTPNAME,PRICEFROMPART
WHEREPRICE10;
这回我们的结果是:
PNAME | PRICE
+
Bolt
|
15
Cam
|
25
请注意SQL的SELECT语句对应关系演算里面的projection(映射),而不是selection(选择)(参阅关系演算 获取详细信息)。
WHERE
文档评论(0)