1、select子句
��SQL查询语句的结果也是一个关系,例如:
��Select branch-name from loan
找出了关系loan中所有分支机构的名称。
��关系代数中基于关系是一个集合这样的数学概念,因此,重复的元组不会在关系中出现。但在实践当中,要删除查询结果中的重复元组是相当费时的!所以在商用数据库产品中,允许在关系和SQL表达式的结果中出现重复元组。对于select子句,还需要特别注意以下事情:
��⑴�是否要去除结果中的重复元组可以选用all和distinct选项,例如:
select [all | distinct] branch-name from loan
其中all表示保留所有重复元组,而distinct表示要去掉重复元组;
��⑵�可以用*代替关系中的所有属性,如loan.*或*:
select * from loan
��⑶�select子句中还可以出现算术表达式,这与关系代数中的广义投影运算对应:
select branch-name, loan-number, amount*100 from loan

2、where子句先
��从一个例子开始,例如:
select loan-number from loan
where branch-name = "Perryridge" and amount>1200
这个SQL语句的含义是什么呢?请大家自己思考。
��需要注意的是where子句中的逻辑运算符使用and、or和not,而不是∧、∨和?。比较运算符有<、<=、>、>=、=和<>。

3、from子句
��from子句本身定义了子句中关系的笛卡尔积。由于自然连接是用笛卡尔积、选择和投影来定义的,因此为自然连接写SQL表达式还是相对简单的。例如:
关系代数表达式:Πcustomer-name, loan-number(borrower��loan)对应的SQL表达式如下所示:
select customer-name, borrower.loan-number
from borrower, loan
where borrower.loan-number = loan.loan-number

4、order by子句
��用order by子句对查询的结果进行排序,具体的语法格式如下:order by 属性名 [asc | desc][,属性名 [asc | desc], ...]例如:
select * from loan
order by amount desc, loan-number