数据库原理-期末复习基础知识第二弹

embedded/2024/12/3 3:22:18/

1、数据的逻辑独立性是指

外模式/模式映像  当模式改变的时候,由数据库管理员对各个外模式/模式的映像做出相应改变,使外模式保持不变。由于应用程序是按照外模式进行编写的,故应用程序不必修改,保证了数据与程序的逻辑独立性。

2、数据的物理独立性是指

模式/内模式映像 当数据库的存储结构发生改变时,由数据库管理员对模式/内模式映像做出相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。

3、基本的关系操作包括

投影、选择、并、差、笛卡尔积。 

4、专门的关系运算包括

选择、投影、连接、除。

5、试述数据、数据库数据库管理系统、数据库系统的概念。

数据:描述事务的符号记录。

数据库:长期存储在计算机内的、有组织的、可共享的数据集合。

数据库管理系统:是位于用户和操作系统之间的具有数据定义、操纵、数据库的运行管理、数据库的建立与维护功能的一层数据管理软件。

数据库系统:在计算机系统中引入数据库后的系统、一般由数据库数据库管理系统、应用系统、数据库管理员以及用户构成。

6、视图和基本表的区别?

视图是从一个或几个基本表导出 的表,它与基本表不同,是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据存放在原来的基本表中,当基本表中的数据发生变化,从视图中查询出的数据也就随之改变。视图一经定义可以像基本表一样被查询,删除,也可以在一个视图上定义新的视图。

7、故障的类型?

事务故障,系统故障,介质故障。

8、EXISTS关键字

EXISTS 关键字

  • 语法及基本用法
    EXISTS 用于检查子查询是否返回至少一行数据,语法格式一般是 EXISTS (subquery),这里的 subquery 就是一个子查询语句。例如,有两张表,orders(订单表)包含 order_id(订单编号)、customer_id(客户编号)等字段,customers(客户表)包含 customer_id(客户编号)和 customer_name(客户姓名)等字段,要查询有订单的客户信息,可以这样写:
SELECT customer_name
FROM customers c
WHERE EXISTS (SELECT 1FROM orders oWHERE o.customer_id = c.customer_id
);

其核心思路是对于 customers 表中的每一行数据,去执行括号内的子查询,如果子查询能返回至少一行数据,那就说明对应的客户有订单,该行客户记录就会被筛选出来。

  • 执行原理
    数据库在执行 EXISTS 语句时,一旦发现子查询返回了一行数据,就会停止继续检查该子查询(因为它只关心是否有数据返回,而不关心具体返回的数据内容),接着处理下一条外层查询的记录。所以从性能角度来看,在合适的场景下,EXISTS 可以比一些关联查询等方式更高效,尤其是当子查询关联的表数据量很大时,只要能快速判断有数据返回即可。

  • 应用场景举例
    常用于判断主表中的记录在关联表中是否存在对应数据的情况,比如查找有下属员工的部门信息、查找发布过文章的作者信息等,本质上是一种基于关联关系去判断存在性的操作。

总体区别总结

  • 逻辑判断方向
    • IN 和 NOT IN 侧重于判断某个值与一组给定值之间的包含关系,是对具体值集合的比对操作。
    • EXISTS 重点关注的是子查询是否有返回结果,是从是否存在数据的角度进行逻辑判断。
  • 性能特点及适用场景差异
    • IN 在值列表较短时通常性能较好,但列表过长可能影响性能;适合明确列举具体值进行筛选的场景。
    • NOT IN 同样受值列表中 NULL 值影响较大,使用时要小心;常用于排除特定值集合的筛选场景。
    • EXISTS 依赖子查询的逻辑构建,性能优势在于一旦确定有数据返回就停止子查询执行;更适合处理主从表之间判断存在性关联的复杂场景,尤其是大数据量情况下能体现其高效性优势。

在执行带有 NOT EXISTS 的查询时,数据库会针对主查询(外层查询)中的每一条记录,去执行对应的子查询操作。如果子查询返回的结果集为空(也就是没有返回行数据),那么对于当前这条主查询记录来说,NOT EXISTS 条件成立,该记录就会被包含在最终的查询结果中;反之,如果子查询返回了至少一行数据,那 NOT EXISTS 条件就不成立,对应的主查询记录则不会被选中。

示例说明

假设有两张表,一张是 employees(员工表),包含 employee_id(员工编号)、department_id(部门编号)等字段,用于记录员工所属部门等信息;另一张是 departments(部门表),包含 department_id(部门编号)、department_name(部门名称)等字段。

现在想要查询出没有员工的部门信息,就可以使用 NOT EXISTS 关键字来实现,示例 SQL 语句如下:

SELECT department_name
FROM departments d
WHERE NOT EXISTS (SELECT 1FROM employees eWHERE e.department_id = d.department_id
);

在上述语句中:

  • 对于 departments 表中的每一个部门记录(由外层查询遍历每一条记录)。
  • 都会执行一次子查询,这个子查询是去查找在 employees 表中是否存在员工的 department_id 与当前遍历到的 department 表中的 department_id 相等(也就是判断这个部门是否有员工)。
  • 如果子查询没有找到这样的员工(即返回结果集为空),那就意味着这个部门没有员工,此时外层查询中对应的这个部门记录就会基于 NOT EXISTS 条件被筛选出来,最终查询结果就是那些没有员工的部门的相关信息(这里是部门名称)。

关于 EXISTS

  • 确实是先执行子查询来判断是否有满足条件的数据,只要子查询返回至少一行数据,对于当前正在处理的外层(父)查询中的那条记录来说,EXISTS 条件就成立。但子查询并非完全与父查询 “无关”,通常子查询会和父查询存在关联条件,通过这个关联条件去判断相关的存在性情况。比如前面提到的员工和部门的例子中,子查询里会通过 e.department_id = d.department_id 这个关联条件来判断对于部门表中的某个部门,在员工表中是否存在属于该部门的员工。

关于 NOT EXISTS

  • 你的理解很形象,它类似嵌套循环的操作逻辑。对于父查询中的每一条记录,都会拿这条记录相关的属性值(通过关联条件)去和子查询里对应的属性进行匹配、判断。当子查询依据关联条件去查找时,如果没有返回任何行(也就是找不到对应的匹配数据),那么对于父查询中正在处理的这条记录而言,NOT EXISTS 条件就成立了,父查询中相应的记录以及 SELECT 后面选择的属性信息就会作为最终结果的一部分输出。

http://www.ppmy.cn/embedded/142498.html

相关文章

【Unity How】如何让物体跟随平台移动或旋转?

先看下最终要实现的效果: 当查找这个问题的资料时,发现多数的方案都是将物体设置为平台的子对象。 但是如果平台是非均匀缩放时,物体在移动或旋转时就会发生变形。 参考:Unity中父对象是非均匀缩放时出现倾斜或剪切现象 那有没有…

(4)CHATGPT-3和GPT-4是生成式AI的一部分吗?

文章目录 前言ChatGPT-3 和 GPT-4被认为是生成式AI的原因后续 前言 ChatGPT-3 和 GPT-4 都是大型语言模型(LLMs),也是生成式AI(生成式人工智能)的例子。它们属于一类称为transformers的模型,特别擅长处理数…

使用ECharts创建带百分比标注的环形图

在数据可视化领域,环形图是一种非常有效的图表类型,它能够清晰地展示各部分与整体的关系。今天,我们将通过ECharts来创建一个带百分比标注的环形图,并详细解释如何实现这一效果。 1. 数据准备 首先,我们定义了一些基础…

D82【python 接口自动化学习】- pytest基础用法

day82 pytest初体验 学习日期:20241128 学习目标:pytest基础用法 -- pytest初体验 学习笔记: 文件命名规范 py测试文件必须以test_开头(或_test结尾)测试方法必须以test开头测试类必须以Test开头,并且…

(免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发

摘要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品,从而也带动了一系列与此相关产业,是人们的生活发生了翻天覆地的变化,而网络化的出现也在改变着人们传统的生活方式,包括工作,学习,社交…

【二分查找】力扣 34. 在排序数组中查找元素的第一个和最后一个位置

一、题目 二、思路 将题目转化为求解 target 和 target 1 的查找。分别采用最基础的二分查找即可。 三、题解 class Solution {public int[] searchRange(int[] nums, int target) {int n nums.length;int start lowerBound(nums, target);if (start n || nums[start] !…

家庭记账本小程序

私信我获取源码和万字论文,制作不易,感谢点赞支持。 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户…

【2025最新计算机毕业设计】基于SpringBoot+Vue文化创意展示与交流平台【提供源码+答辩PPT+文档+项目部署】

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…