数据查询详解之软考难点剖析[1]

数据库系统工程师 责任编辑:gxjoicq 2008-05-09

添加老师微信

备考咨询

加我微信

摘要: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(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

[1]  [2]  [3]  

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取

!
咨询在线老师!