数据库系统概论--第三章课后习题

news2024/9/20 14:51:48

1.试述SQL的特点。

答:SQL有以下特点:

①综合统一:SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一性,查找、插入、删除、更新等每一种操作都只需一种操作符,从而克服了非关系系统由于信息表示方式的多样性带来的操作复杂性。

②高度非过程化:用SQL语言进行数据操作,只要提出“做什么”,而无需指明“怎么做”,因此无需了解存取路径、存取路径的选择以及SQL语句的操作过程。这有利于提高数据独立性。

③面向集合的操作方式:SQL语言采用集合操作方式,不仅操作对象和查找结果可以是元组的集合,而且插入、删除、更新操作的对象也可以是元组的集合。

④以同一种语法结构提供两种使用方式:SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式;

⑤作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。语言简捷,易学易用。

2.说明在DROP TABLE时,RESTRICT 和CASCADE的区别。

答:①若选择RESTRICT,则该表的删除是有限制条件的;若选择 CASCADE,则该表的删除没有限制条件。默认情况是RESTRICT。RESTRICT表示表的删除是有限制条件的。要删除的基本表不能被其他表的约束所引用,不能有视图,不能有触发器,不能有存储过程或函数等。如果存在这些以来该表的对象,则表不能被删除。 CASCADE表示表的删除没有限制条件,在删除基本表的同时,相关的依赖对象(比如视图)都将被删除。

3.有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列查询等价的SQL表达式

解题思路:经典三部曲:① SELECT 后跟所求,如果是*,则是全部列  ②FROM:从哪个表找

③ WHERE: 条件限制

(1) SELECT *

        FROM S

       WHERE A=10;

(2)

SELECT DISTINCT A, B

  FROM S;

(3) SELECT A, B, S.C, S.D, E, F

  FROM S, T

WHERE S.C = T.C AND S.D = T.D;

(4) SELECT A, B, S.C, S.D, T.C, T.D, E, F

 FROM S, T

WHERE S.C = T.C;

(5) SELECT A, B, S.C, S.D, T.C, T.D, E, F

FROM S, T

WHERE A < E;

(6) SELECT S1.C, S1.D, T.C, T.D, E, F

FROM T, (SELECT DISTINCT C, D

FROM S) AS S1;

4.

答:

①用SQL 语句建立第二章习题 6中的 4 个表。建表:

 ②针对建立的4个表用SQL语言完成第2章习题6中的查询。 

(1)求供应工程J1零件的供应商号码SNO;

答:

 SELECT  Sno
     FROM  SPJ
        WHERE JNO='J1';

(2)求供应工程J1零件P1的供应商号码SNO;

答:

   SELECT  Sno
       FROM  SPJ
        WHERE JNO='J1' AND Pno='P1';

(3)求供应工程J1零件为红色的供应商号码SNO;

 SELECT  Sno
     FROM  SPJ,P
        WHERE P.Pno =SPJ.Pno AND JNO='J1'  AND COLOR='红' ;

(4)求没有使用天津供应商生产的红色零件的工程号JNO;

SELECT DISTINCT Jno

       FROM SPJ

             WHERE Jno NOT IN

                        (SELETE Jno

                             FROM SPJ,P,S

                                      WHERE S.CITY='天津'        AND    COLOR='红'    AND                                                       S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO   );

(5)求至少用了供应商Sl所供应的全部零件的工程号JNO。

 SELECT Jno

        FROM SPJ

                  WHERE PNO= (SELECT DIST PNO FROM SPJ WHERE SNO='S1');

 等价于

先查询S1供应商所供应的全部零件工程号

SELECT DIST PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2)

 查询哪一个工程既使用P1零件又使用P2零件。

SELECT JNO FROM SPJ WHERE PNO='P1'

AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')

6.什么是基本表?什么是视图?两者的区别和联系是什么?

基本表是本身独立存在的表 ,在SQL中一个关系就对应一个表。视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中 ,是一个虚表。即数据库中只存放视 图的定义而不存放视图对应的数据 ,这些数据仍存放在导出视图的基本表中 。

视图在概念上与基本表等同 ,用户可以如同基本表那样使用视图 ,可以在视图上再定义视图。

两者的区别在于基本表是实际存储数据的表格,而视图只是基于基本表的一种虚拟表格。基本表的数据可以直接进行修改、删除等操作,而视图是只读的,不能进行修改操作。视图可以根据需要筛选、计算、整理基本表中的数据,使得数据的使用更加灵活、方便。基本表和视图之间可以进行联接操作,用于生成更加复杂的查询结果。

基本表和视图之间是一种包含关系,即一个视图可以基于一个或多个基本表生成,而一个基本表也可以作为多个视图的基础。基本表可以通过创建视图来实现对数据的更加灵活的使用,视图可以对基本表中的数据进行筛选、计算等操作,从而生成更加符合需求的查询结果。

7.试述视图的优点、

答:

(1 )视图能够简化用户的操作 ;(2 )视图使用户能以多种角度看待同一数据 ;

(3 )视图对重构数据库提供了一定程度的逻辑独立性 ;(4 )视图能够对机密数据提供安全保护。(5)适当的利用视图可以更清晰的表达查询 。

8.哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明。

9.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询:

(1)找出三建工程项目使用的各种零件代码及其数量。

(2)找出供应商S1的供应情况。

答:

建视图:

CREATE VIEW V_SPJ_AS

SELECT SN0,PN0,QTY

FROM SPJ

WHERE JNO=

(SELECT JNO

FROM J

WHERE JNAME=’三建’);

对该视图查询:

(1)找出三建工程项目使用的各种零件代码及其数量。

SELECT PNO,QTY

FROM V_SPJ;

(2)找出供应商S1的供应情况。

SELECT PNO,QTY /* Sl供应三建工程的零件号和对应的数量*/

FROM V_SPJ

WHERE SNO=’S1’;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/453902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NestJS(1)初识 NestJS 和 Hello, World

初识 NestJS 先来看下官网对 NestJS 的介绍。 Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力&#xff0c;使用并完全支持 TypeScript &#xff08;仍然允许开发者使用纯 JavaScript 进行开发&#xff…

YARN On Mapreduce搭建与wordCount案例实现

文章目录 1.前言1.YARN 集群搭建1.1 ResourceManager High Availability 架构图1.2 配置文件mapred-site.xmlyarn-site.xml 1.3 启动服务和rm启动yarn启动rm资源管理访问页面查看集群状态 2.运行官方的WC案例2.1 运行jar准备一个data.txt文件日志查看输出 1.前言 YARN的基本思…

JVM原理

JVM 什么是JVM&#xff1f; JVM是一种虚拟出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 JVM有自己完善的硬件架构&#xff0c;如处理器、堆栈、寄存器等&#xff0c;还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。 使用J…

Nginx之rewrite与location重写功能

一、常用的Nginx 正则表达式 字符涵义以及示例^匹配输入字符串的起始位置$匹配输入字符串的结束位置*匹配前面的字符零次或多次&#xff1b;如“ol*”能匹配“o”及“ol”、“oll”匹配前面的字符一次或多次&#xff1b;如“ol”能匹配“ol”及“oll”、“olll”&#xff0c;但…

GoJS Beginner Tutorial #1

1.关系图&#xff1a; gojs部件由一个或多个gojs面板组成&#xff0c;这些面板包含和组织各种gojs图形对象 通常使用go.GraphObject.make创建一个GraphObject&#xff0c;我们通过使用$符号变量缩短了该函数的名称 这个函数的第一个参数&#xff0c;往往是你想要制作的GraphOb…

Sentinel同时配置fallback和blockHandler的问题

Spring Cloud在使用Sentinel进行服务降级和熔断时&#xff0c;如果同时配置了fallback和blockHandler&#xff0c;则在服务熔断后&#xff0c;抛出的BlockException不会再fallback逻辑中执行&#xff0c;而是在blockHandler逻辑中执行。 首先来看只配置了fallback的情况&#x…

Python文件管理【open和with open的使用】

一、文件的操作步骤 基本都是三个步骤&#xff1a; 打开文件、读写文件、关闭文件 1.open()函数 在python&#xff0c;使用open函数&#xff0c;可以打开一个已经存在的文件&#xff0c;或者创建一个新的文件&#xff0c;语法如下&#xff1a; open(name,mode) name&#xff…

LeafLet加载自定义Legend的设计与实现

背景 众所周知&#xff0c;在GIS的世界里&#xff0c;图例和地图永远是一对一起出现的对象。在地图上表示地理环境各要素&#xff0c;比如山脉、河流、城市、铁路等所用的符号叫做图例。这些符号所表示的意义&#xff0c;常注明在地图的边角上。图例是表达地图内容的基本形式和…

引用与指针:在C++中如何做出正确的选择?

文章目录 前言1. 引用入门2. 引用作为函数传参3. 引用作为函数返回值4. 引用和指针5. 其他区别 前言 引用是 C 的新增内容&#xff0c;在实际开发中会经常使用&#xff0c;它就如同C语言的指针一样重要&#xff0c;但它比指针更加方便和易用&#xff0c;有时候甚至是不可或缺的…

使用YOLOV5-6.2预训练模型(yolov5s)进行detect的详细说明(detect.py)文件解析

目录 准备源文件和预训练文件下载python版本以及torch版本说明&#xff1a;文件目录说明测试文件 detect.py使用测试单张图片测试一个文件夹里的图片 准备 源文件和预训练文件下载 下载链接&#xff1a;https://github.com/ultralytics/yolov5/releases/tag/v6.2 源文件和预训…

数据科学与机器学习在软件开发中的应用

数据科学和机器学习是现代软件开发的重要组成部分&#xff0c;可以帮助开发人员更好地理解和分析数据&#xff0c;从而提高软件的质量和性能。在本篇博客中&#xff0c;我将深入探讨数据科学和机器学习在软件开发中的应用&#xff0c;并讨论它们如何帮助我们创建更好的软件。 …

你最想知道的APP自动化测试项目实战详解

目录 一、引言 二、APP自动化测试的基本概念 三、APP自动化测试的流程 四、APP自动化测试的最佳实践 五、常见的APP自动化测试工具 六、APP自动化测试的挑战和解决方案 七、结论 一、引言 随着移动设备的普及和应用市场的繁荣&#xff0c;越来越多的企业开始开发和发布移…

【手撕MyBatis源码】执行器与缓存

文章目录 概述执行器(Executor)执行器总结 缓存MyBatis缓存概述一级缓存(LocalCache)Spring集成MyBatis后一级缓存失效的问题二级缓存二级缓存组件结构二级缓存的使用为什么要提交之后才能命中二级缓存?二级缓存结构二级缓存执行流程 概述 通过一条修改语句&#xff0c;我们来…

Android 开发死磕性能优化,方向是否正确?

在 Android 开发者技能中&#xff0c;如果想进大厂&#xff0c;一般拥有较好的学历可能有优势一些。 但是如果你靠硬实力也是有机会的&#xff0c;例如死磕性能优化&#xff0c;成为一名Android性能优化的高手&#xff0c;也算是目前招聘过程中比较稀缺的人才&#xff0c;可以…

Maven安装及其原理

一、maven安装 maven 3.6.1的安装包如下 二、配置本地仓库和阿里云私服 打开在上述百度网盘下载的文件&#xff0c;打开conf下面的setting.xml&#xff0c;大概第55行增加如下代码 &#xff0c;意思是指定一个目录为本地jar包的文件夹&#xff0c;管理jar包。一般来说&…

C++位图

位图 文章目录 位图setResetTest整体代码位图应用 给定40亿个不重复、没排序的无符号整数&#xff0c;再给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中&#xff1f;&#xff1f;&#xff1f;首先想到的是归并排序二分查找。排序可以排&#xff0c;但是通过…

【计算机组成原理】第三章 存储系统

文章目录 知识体系3.1 存储器概述3.1.1 存储器的分类3.1.2 存储器的性能指标3.1.3 多级层次的存储系统 3.2 主存储器3.2.1 SRAM芯片和DRAM芯片3.2.2 只读存储器3.2.3 主存储器的基本组成3.2.4 多模块存储器 3.3 主存储器与CPU的连接3.3.1 连接原理3.3.2 主存容量的扩展3.3.3 存…

指定GPU运行python程序

一、命令行运行python程序时 1、首先查看哪些GPU空闲&#xff0c;nvidia-smi显示当前GPU使用情况。 nvidia-smiGPU&#xff1a;编号&#xff0c;这里是0和1 Fan&#xff1a;风扇转速&#xff0c;在0到100%之间变动&#xff0c;第一个是29% Name&#xff1a;显卡名&#xff…

布署到centos7.9时,ModuleNotFoundError: No module named ‘_sqlite3‘

先下载编译sqlite3 wget http://www.sqlite.org/sqlite-3.5.6.tar.gz cd sqlite-3.5.6 ./configure --disable-tcl make && make install 注意add LIBDIR to the ‘LD_LIBRARY_PATH’ environment variable&#xff0c;这是sqlite建议添加环境变量。 所以: echo expor…

「C/C++」C/C++异常处理

博客主页&#xff1a;何曾参静谧的博客 文章专栏&#xff1a;「C/C」C/C学习 目录 相关术语一、C语言中的异常处理1.返回值来传递错误信息2.使用标准库函数对异常进行处理&#xff08;不推荐&#xff09;3.使用全局变量来记录错误信息(不推荐) 二、C中的异常处理1.try{}catch()…