在sql查询计算机二级C语言真题中执行投影操作的运算符是

SQL的五种基本关系代数运算是什么? 五种基本操作:并,差,积,选择,投影;构成关系代数完备的操作集。 其他非基本操作:可以用以上五种基本操作合成的所有操作。并(U)、交(⌒)、投…

SQL的五种基本关系代数运算是什么?

五种基本操作:并,差,积,选择,投影;构成关系代数完备的操作集。

其他非基本操作:可以用以上五种基本操作合成的所有操作。并(U)、交(⌒)、投影(π)选择(σ)和笛卡儿积(×)。传统的集合运算

1、并(UNION)设有两个关系R和S,它们具有相同的结构。R和S的并是由属于R或属于S的元组组成的集合,运算符为∪[1] 。记为T=R∪S。

2、差(DIFFERENCE)R和S的差是由属于R但不属于S的元组组成的集合,运算符为-[1] 。记为T=R-S。

3、交(INTERSCTION)R和S的交是由既属于R又属于S的元组组成的集合,运算符为∩[1] 。记为T=R∩S。R∩S=R-(R-S)。

SQL的五种基本关系代数运算是什么?

五种基本操作:并,差,积,选择,投影;构成关系代数完备的操作集。其他非基本操作:可以用以上五种基本操作合成的所有操作。并(U)、交(⌒)、投影(π)选择(σ)和笛卡儿积(×)。

关系代数中的除法运算用sql语句怎么实现?

}

– 我是了 凡 微信公众号【了凡银河系】期待你的关注。未来大家一起加油啊~







































关系数据库管理系统在执行多表连接时,通常是先进行两个表的连接操作,再将其连接结果与第三个表进行连接。

1.带有IN谓词的子查询

在嵌套查询中,子查询的结果往往是一个集合,所以谓词IN是嵌套查询中最经常使用的谓词。

例如,查询与“王林”同一个系学习的学生的所有信息

一般我们的思路是先拿到“王林”的系名,在从系里查找一起学习的学生的所有信息,所以需要两步骤:



但是这样看明显很麻烦而且还要多次查询比较耗时占用资源,所以我们使用 IN 谓词嵌套查询:

2.带有比较运算符的子查询

带有比较运算符的子查询是指父查询与子查询之间用比较运算符进行连接。当用户能确切知道内层查询返回的是单个值时,可以用>、<、=、>=、<=、!=或<>等比较运算

其使用方法和 IN 一致。

例如,由于一个学生可能在一个系学习,也就是说内查询的结果是一个值,因此可以用=代替 IN:

子查询返回单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓词修饰符。而使用ANY或ALL谓词时则必须同时使用比较运算符。其语义为:

> ANY 大于子查询结果中的某个值
> ALL 大于子查询结果中的所有值
< ANY 小于子查询结果中的某个值
< ALL 小于子查询结果中的所有值
>= ANY 大于等于子查询结果中的某个值
>= ALL 大于等于子查询结果中的所有值
<= ANY 小于等于子查询结果中的某个值
<= ALL 小于等于子查询结果中的所有值
= ANY 等于子查询结果中的某个值
= ALL 等于子查询结果中的所有值(通常没有实际意义)
!=(或<>) ANY 不等于子查询结果中的某个值
!=(或<>) ALL 不等于子查询结果中的任何一个值

例如,查询其他系中比计算机科学系某一学生年龄小的学生姓名和年龄

exists谓词代表存在量词。带有exists谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。可以利用exists来判断 属性与关系表之间的属于关系,关

系表之间的包含、相等关系,关系表之间是否存在交集。

话不多说,第一眼我也没看懂,来个例子看下也许就明白了。

例如,查询所有选修了 1 号课程的学生姓名。

思路:在Student中依次取每个元组的Sno值,用此值去检查 SC 表。若SC中存在这样的元组,其Sno值等于此Student.Sno值,并且其 Cno=‘1’,则取此Student.Sname送入结果表。SQL 语句是

使用存在量词EXISTS后,若内层查询结果非空,则外层的WHERE 子句返回真值,否则返回假值。

SELECT 语句的查询结果是元组的集合,所以多个SELECT 语句的结果可进行集合操作。集合操作主要包括并操作UNION、交操作 INTERSECT 和差操作 EXCEPT

这一小节非常有意思,主要就是集合的并集,交集,差集三个语法,能看到我的文章的同学一定知道数学里的三种意思。

话不多说,看个实例,查询计算机科学系的学生性别为男的学生。

首先我们要查找两个集合

这样我们就能查到计算机科学系的学生性别为男的学生了。

3.4.5 基于派生表的查询

子查询不仅可以出现在WHERE子句中,还可以出现在 FROM 子句中,这时子查询生成的临时派生素(derived table)成为主查询的查询对象。大眼一看我也不懂。举例我们分析一下

例如,找出每个学生超过他自己选修课程平均成绩的课程号。

按学号相等进行连接,选出选修课成绩大于其平均成绩的课程号。

数据更新操作有三种:向表中添加若干行数据、修改表中的数据和删除表中的若干行数据。在SQL中有相应的三类语句。

SQL 的数据插入语句 INSERT 通常有两种形式,一种是插入一个元组,另一种是插入子查询结果。后者可以一次插入多个元组。

插入元组的 INSERT 语句格式为:

这么看可能不是很懂,再看一个实例你就明白了

例如,将一个新学生元组(学号,姓名:陈东,性别:男,所在系:计科系,年龄:18岁)插入到 Student 表中。

这个设计非常方便,我们可以先从数据库查询一个集合,把这个查询语句当作插入的子查询,这样可以用查询出的结果映射在要插入的属性字段中。

插入子查询结果的 INSERT 语句格式为

例如,对每一个系,求学生的平均年龄,并把结果存入数据库。

修改操作又称更新操作。我们用 UPDATE 和 SET 来进行修改操作。

1.修改某一个元组的值

例如,将学生的年龄改为22岁。

例如,将所有学生的年龄增加1岁。

3.带子查询的修改语句

这种修改方式和插入操作一致也是嵌套的方式。

例如,将计算机科学系全体学生的成绩置零。

删除操作和插入修改基本相差不多,当然了既然是删除就要更为严谨一点。一般我们用 DELETE语句 进行删除操作,这里强调一点,DELETE 语句删除的是表中的数据,而不是表种的属性(字段)。

1.删除某一个元组的值

例如,删除学号为的学生记录。

例如,删除所有的学生选课记录

这个语句可以使 SC 表成为空表,删除了SC的所有元组。

3.带子查询的删除语句

删除操作当然也可以使用嵌套方法进行指定删除。

例如,删除计算机科学系所有学生的选课记录

空值定义:空值就是“不知道”或“不存在”或“无意义”的值

SQL 语言中允许某些元组的某些属性在一定情况下取空值。一般情况如下:


  • 该属性应该有一个值,但目前不知道它的具体值。例如,某学生的年龄属性,因为学生登记表漏填了,不知道该学生年龄,因此取空值。
  • 该属性不应该有值。例如,缺考学生的成绩为空,因为没有参加考试。
  • 由于某种原因不便于填写。例如一个人的性别不想让别人知道,则取空值。

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

例如,向 SC 表插入一个元组,学生号是“”,课程号是“1”,成绩为空。

或者在插入的时候不填任何,默认也是空值。

例如,从Student表中找出漏填了数据的学生信息。

属性定义(或者域定义)中有 NOT NULL 约束条件的不能取空值,加了 UNIQUE 限制的属性不能取空值,码属性不能取空值。

4.空值的算术运算、比较运算和逻辑运算

空值与另一个值(包括另一个空值)的算术的结果为空值,空值与另一个值(包括另一个空值)的比较运算的结果为UNKNOWN,有了 UNKNOWN 后,传统的逻辑运算中二值(true,false 逻辑就扩展成了三值逻辑。AND、OR、NOT的真值表如表所示,其中T表示true,F就表示 false,U表示 unknown。

在查询语句中,只有使 WHERE 和 HAVING子句中的选择条件为 TRUE 的元组才被选出作为输出结果。

例如,找出选修 1 号课程的不及格的学生。

选出的学生是那些参加了考试(Grade 属性为非空值)而不及格的学生,不包括的学生。因为前者使条件 Grade<60 的值为 true,后者使条件的值为 UNKNOWN。

视图(View)并不在数据库中实际存在,而是一种虚拟表,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。即视图就是执行查询语句后所返回的结果集,所以在创建视图的时候,主要就是创建这条SQL查询语句。

2.视图和表什么区别和联系?

SQL语言用CREATE VIEW 命令建立视图,其一般格式为

其中,子查询可以是任意的SELECT语句,是否可以含有 ORDER BY 子句和 DISTINCT 短语,则取决于具体系统的实现。

例如,建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。

由于在定义 IS_Student 视图时加上了 WITH CHECK OPTION 子句,以后对该视图进行插入、修改和删除操作时,关系数据库管理系统会自动加上 Sdept='IS’条件。

若一个视图是从的单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,则称这类视图为行列子集视图。

例如,删除刚刚创建的view_emp_dep视图:

视图定义后,用户就可以像对基本表一样对视图进行查询了。

例如,在信息系学生的视图中找出年龄小于20岁的学生。

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

更新视图是指通过视图来插入、删除和修改数据。

由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新。像查询视图那样,对视图的更新操作也是通过视图消解,转换为对基本表的更新操作。

为防止用户通过视图对数据进行增加、删除、修改时,有意无意地对不属于视图范围内基本表数据进行操作,可在定义视图时加上 WITH CHECK OPTION 子句。这样在视图上增、删、改数据时,关系数据库管理系统会检查视图定义中的条件,若不满足条件拒绝执行该操作

例如,将信息系学生视图IS_Student 中学号为“”的学生姓名改为“刘辰”。


  1. 当一个查询需要频频的作为子查询使用时,视图可以简化代码,直接调用而不是每次都去重复写这个东西。
  2. 系统的数据库管理员需要给他人提供一张表的某两列数据,而不希望他可以看到其他任何数据,这时可以建一个只有这两列数据的视图,然后把视图公布给他。

    • 视图能够简化用户的操作
    • 视图使用户能以多种角度看待同一数据
    • 视图对重构数据库提供了一定程度的逻辑独立性
    • 视图能够对机密数据提供安全保护
    • 适当利用视图可以更清晰地表达查询



  1. 什么是基本表?什么是视图?两者的区别和联系是什么?
  2. 哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明。
  3. 请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对视图完成下列查询:

    • 找出三建工程项目使用的各种零件代码及其数量;
    • 找出供应商S1的供应情况


SQL 可以分为数据定义、数据查询、数据更新、数据控制四大部分。本章为重点建议多多练习,特别是增删改查实操部分


如果需要后续再看点个收藏!

如果对我的文章有兴趣给个关注!

如果有问题,可以关注公众号【了凡银河系】点击联系我私聊。


}

我要回帖

更多关于 计算机二级C语言真题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信