数据库系统概论三_SQL2

                              连接查询

[<表名1>.]<列名1>  <比较运算符>  [<表名2>.]<列名2>

[<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3>

v等值连接:连接运算符为=

SELECT  Student.*, SC.*

           FROM     Student, SC

           WHERE  Student.Sno = SC.Sno;

 

连接操作的执行过程

1)嵌套循环法NESTED-LOOP

(2)排序合并法(SORT-MERGE

(3)索引连接(INDEX-JOIN

嵌套查询概述

一个SELECT-FROM-WHERE语句称为一个查询块

将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询

上层的查询块称为外层查询父查询

下层查询块称为内层查询子查询

ANY和ALL

使用ANYALL谓词时必须同时使用比较运算

语义为:

> ANY  大于子查询结果中的某个值      

> ALL  大于子查询结果中的所有值

< ANY  小于子查询结果中的某个值   

< ALL  小于子查询结果中的所有值

>= ANY  大于等于子查询结果中的某个值   

>= ALL  大于等于子查询结果中的所有值

EXISTS谓词

存在量词 $

带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”

若内层查询结果非空,则外层的WHERE子句返回真值

若内层查询结果为空,则外层的WHERE子句返回假值

EXISTS引出的子查询,其目标列表达式通常都用 * ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义。

集合查询

集合操作的种类

并操作UNION

交操作INTERSECT

差操作EXCEPT

UNION:将多个查询结果合并起来时,系统自动去掉重复元组

UNION ALL:将多个查询结果合并起来时,保留重复元组

基于派生类的查询

子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表(Derived Table)成为主查询的查询对象

SELECT

SELECT [ALL|DISTINCT] 

   <目标列表达式> [别名] [ ,<目标列表达式> [别名]] …

 FROM     <表名或视图名> [别名]

                [ ,<表名或视图名> [别名]] …

                |(<SELECT语句>)[AS]<别名>

 [WHERE <条件表达式>]

 [GROUP BY <列名1>[HAVING<条件表达式>]]

 [ORDER BY <列名2> [ASC|DESC]];

1) *

2<表名>.*

3COUNT([DISTINCT|ALL]* )

4[<表名>.]<属性列名表达式>[,<表名>.]<属性列名表达式>]…

WHERE 

                                                     数据更新

  插入数据

  修改数据

  删除数据

插入数据

语句格式

  INSERT

  INTO <表名> [(<属性列1>[,<属性列2 >…)]

  VALUES (<常量1> [,<常量2>]… );

INTO子句

指定要插入数据的表名及属性列

属性列的顺序可与表定义中的顺序不一致

没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致

指定部分属性列:插入的元组在其余属性列上取空值

VALUES子句

 提供的值必须与INTO子句匹配

值的个数

值的类型

插入子查询结果

语句格式

INSERT

INTO <表名>  [(<属性列1> [,<属性列2>…  )

   子查询;

修改数据

语句格式

   UPDATE  <表名>

    SET  <列名>=<表达式>[,<列名>=<表达式>]…

    [WHERE <条件>];

删除数据

语句格式

       DELETE

       FROM     <表名>

       [WHERE <条件>];

空值

空值是一个很特殊的值,含有不确定性。对关系运算带来特殊的问题,需要做特殊的处理。

判断一个属性的值是否为空值,用IS NULLIS NOT NULL来表示。

                                                                       视图

定义视图

查询视图

更新视图

视图的作用

建立视图

语句格式

       CREATE  VIEW

             <视图名>  [(<列名>  [,<列名>]…)]

       AS  <子查询>

       [WITH  CHECK  OPTION];

删除视图

语句的格式:

  DROP  VIEW  <视图名>[CASCADE];

视图的作用

视图能够简化用户的操作

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

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

视图能够对机密数据提供安全保护

适当的利用视图可以更清晰的表达查询

猜你喜欢

转载自blog.csdn.net/qq_20017379/article/details/84260533
今日推荐