数据库系统概论-第三章数据查询②

3.4数据查询

查询语名一般格式为SELECT (ALL/DISTINCT)+目标列表达式……+FROM+表名或视图名……(WHERE条件表达式)(GROUP BY 列名1(HAVING 条件表达式))+(ORDER BY列名 (ASC/DESC))

整个SELECT语句的含义是,根据WHERE子句的条件表达式从FROM子句指定的基本表,视图或派生表中找出满足条件的元组,再按SELECT子句中的目标列表达式选出元组中的属性值形成结果表。

1,单表查询

仅涉及一个表的查询。

①可以查询指定列,可以用*查询全部列,查询经过计算的值-即目标列表达式不仅可以是表中的属性列,也可以是表达式。

②选择表中的若干元组。可以用DISTINCT消除取值重复的行。可以用WHERE子句查询满足指定条件的元组。常用查询条件有

比较大小,

确定范围-BETWEEN……AND……和NOT BETWEEN……AND……用来查找属性值在指定范围内的元组,

确定集合-谓词IN可以用来查找属性值属于指定集合的元组或谓词NOT IN查找属性值不属于指定集合的元组,

字符匹配-谓词LIKE可以用来进行字符串的匹配。可以有NOT LIKE。后面的匹配串中可以含有通配符%和_。%代表任意长度的字符串。_代表任意单个字符。如果LIKE后面的匹配串中不含通配符,则可以用=运算符取代LIKE谓词。当字符集为ASCII时一个汉字需要两个_。如果要查询的字符串本身就含有通配符%或_,就要使用ESCAPE+换码字符对通配符进行转义。

涉及空值的查询-用IS。

多重条件查询-AND和OR,AND的优先级高于OR,但用户可以用括号改变优先级。

③ORDER BY子句

用户可以用它对查询结果按照一个或多个属性列的升序ASC或降序DESC排列,默认值为升序。

④聚集函数

有COUNT(*)统计元组个数,COUNT(DISTNCT/ALL 列名)统计一列中值的个数。SUM计算一列值的总和。AVG计算一列值的平均值。MAX求一列值中的最大值,MIN求一列值中的最小值。如果指定DISTlNCT,则表示在计算时要取消指定列的重复值。

⑤GPOUP BY子句

将查询结果按某一列或多列的值分组,值相等的为一组。HAVING给出选择组的条件。

2,连接查询

一个查询同时涉及两个以上的表。包括等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询和复合条件连接查询等。

①等值与非等值连接查询:当连接运算符为=时,称为等值连接。其他运算符称为非等值连接。

②自身连接:一个表与其自己进行连接。

③外连接

④多表连接:两个以上的表三进行连接。

3,嵌套查询

上层查询块称为外层查询或父查询,下层查询块称为内层查询或子查询。

①带有IN谓词的子查询。

如果子查询的查询条件依赖于父查询,这类子查询称为相关子查询,整个查询语句称为相关嵌套查询语句。

②带有比较运算符的子查询:相关子查询。

③带有ANY(SOME)或ALL谓词的子查询。

④带有EXISTS谓词的子查询。存在量词,带有它的子查询不返回任何数据,只产生逻辑真值tiue或逻辑假值false。与EXISTS谓词相对应的是NOTEXISTS谓词。可以用EXIST/NOT EXIST来实现带全称量词的查询。

4,集合查询

包括并操作UNION,交操作INTERSECT和差操作EXCEPT。

3.5数据更新

三种操作:向表中添加若干行数据,修改表中的数据和删除表中的若干行数据。

1,插入数据

两种形式:一种是插入一个元组,另一种是插了子查询结果。后者可以一次插入多个元组。

①插入元组:INSERT INTO……VALUES……。

②插入子查询结果:INSERT INTO ……+……。

2,修改数据

又称更新操作。格式:UPDATE …… SET……+(WHERE 条件)

①修改某一个元组的值。

②修改多个元组的值。

③带子查询的修改语句。子查询也可以嵌套在UPDATE语句中,用以构造修改的条件。

3,删除数据

格式:DELETE FROM……(WHERE……)。

①删除某一个元组的值。

②删除多个元组的值。

③带子查询的删除语句。

3.7视图

从一个或几个基本表导出的表。是一个虚表。视图一经定义,就可以和基本表一样被查询,被删除。

1,定义视图

建立视图:CREATE VIEW视图名(列名……)AS子查询(WITH CHECK OPTION)。

子查询可以是任意的SELECT语句。WITH CHECK OPTION表示对视图进行UPDATE,INSERT和DELETE操作时要保证更新,插入或删除的行满足视图定义中的谓词条件。

组成视图的属性列名或者全部省略或者全部指定,无第三种选择。三种必须明确指定组成视图的所有列名:某个目标列是聚集函数或列表达式。多表连接时选出了几个同名列作为视图的字段。需要在视图中为某个列启用新的,更合适的名字。

2,查询视图

关系数据库管理系统执行对视图的查询时,首先进行有效性检查,检查查询中涉及的表,视图等是否存在。如果存在,则从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,然后再执行修正了的查询。这一转换过程称为视图消解。

目前多数关系数据库系统对行列子集视图的查询均能正确转换。但对非行列子集视图的查询就不一定能做转换了,因此这类查询应该直接对基本表进行。

3,更新视图

指通过视图来插入INSERT,删除DELETE和修改UPDATE数据。

由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新。

4,视图的作用

①视图能够简化用户的操作

②视图使用户能以多种角度看待同一数据

③视图对重构数据库提供了一定程度的逻辑独立性

 

 

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值