摘要:select-from-where一.基本结构在SQL语言中,只提供了一个动词Select用来进行数据查询操作,但这个动词的参数十分复杂,且能嵌套使用,所以,考试时往往就考这个功能。其通用格式如下:Select[All|Distinct]<目标列表达式>[,<目标列表达式>]…From<表名或视图名>[,<表名或视图名>]…[Where<条件
select-from-where
一.基本结构
在SQL语言中,只提供了一个动词Select用来进行数据查询操作,但这个动词的参数十分复杂,且能嵌套使用,所以,考试时往往就考这个功能。其通用格式如下:
Select[All|Distinct]<目标列表达式>[,<目标列表达式>]…
From<表名或视图名>[,<表名或视图名>]…
[Where<条件表达式>]
[Group by <列名1>[Having<条件表达式>]]
[Order by <列名2>[Asc|Desc]];
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(borrowerloan)对应的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
软考备考资料免费领取
去领取