关系型数据库面经(数据库系统概论)

下面是我在面试中被问到的关系型数据库的问题并且我回答得不是很好的题目,写个博客记录一下。

下面用于实现数据存储安全性的SQL语句是?

实现数据存储安全性通常涉及到权限管理和加密等手段。在SQL中,用于控制数据访问权限的语句主要是GRANTREVOKE。这些语句可以用来授予或撤销用户对数据库中特定数据的访问权限。

以下是一些常用的与数据安全性相关的SQL语句:

  1. GRANT:用于授予用户或角色特定的权限。

    GRANT SELECT, INSERT, UPDATE ON my_table TO user_name;
    
  2. REVOKE:用于撤销之前授予的权限。

    REVOKE INSERT, UPDATE ON my_table FROM user_name;
    
  3. DENY:在某些数据库系统中(如SQL Server),可以使用DENY语句明确拒绝某个权限,即使该权限已经通过其他方式被授予。

    DENY DELETE ON my_table TO user_name;
    
  4. CREATE ROLE 和 DROP ROLE:用于创建和删除数据库角色,角色可以被用来组织权限,然后将这些权限授予不同的用户。

    CREATE ROLE admin_role;
    DROP ROLE admin_role;
    
  5. CREATE USER 和 DROP USER:用于创建和删除数据库用户。

    CREATE USER user_name IDENTIFIED BY 'password';
    DROP USER user_name;
    
  6. ALTER USER:用于修改数据库用户的信息,如密码。

    ALTER USER user_name IDENTIFIED BY 'new_password';
    
  7. ALTER TABLE:可以用来添加或修改列的加密属性(如果数据库支持数据列加密)。

    ALTER TABLE my_table ADD COLUMN encrypted_data VARBINARY;
    
  8. ENCRYPTED 关键字:在某些数据库系统中,可以在创建表时指定列的加密属性。

    CREATE TABLE my_table (id INT, encrypted_data VARCHAR(255) ENCRYPTED);
    

需要注意的是,上述SQL语句可能因不同的数据库系统(如MySQL, PostgreSQL, SQL Server, Oracle等)而有所不同。此外,实现数据安全性不仅仅是通过SQL语句来控制访问权限,还需要考虑其他因素,如网络安全、数据备份、灾难恢复、加密存储和传输等。

请编写下面的sql语句:学生选课表中有属性学号和所选课程,课程信息表中有属性课程,查询选了全部课程的学生学号(关系代数中的除运算)

要查询选了全部课程的学生学号,可以使用SQL中的子查询EXISTS逻辑运算符。这里假设学生选课表的名称为StudentCourses,课程信息表的名称为Courses。以下是相应的SQL语句:

SELECT SC.学号
FROM StudentCourses SC
WHERE NOT EXISTS (SELECT C.课程FROM Courses CWHERE NOT EXISTS (SELECT 1FROM StudentCourses SC2WHERE SC2.学号 = SC.学号 AND SC2.所选课程 = C.课程)
);

这个查询的逻辑是:对于每个学生,检查是否存在至少一门课程是他没有选择的。如果不存在这样的课程,即所有课程都被该学生选择了,那么这个学生的学号就会被包含在结果集中。

SQL代码分析:

SELECT 1是一个常见的SQL技巧,用于检查子查询是否有返回结果。这里的1是一个任意的常数,它的作用是作为子查询的返回值,以便外层查询可以使用EXISTSNOT EXISTS来检查子查询是否有返回任何行。

具体的代码解释如下:

SELECT 1
FROM StudentCourses SC2
WHERE SC2.学号 = SC.学号 AND SC2.所选课程 = C.课程

这个子查询的目的是从StudentCourses表中选择出那些学号为SC.学号(即外层查询中当前学生的学号)且所选课程为C.课程(即外层查询中当前考虑的课程)的行。如果这样的行存在,说明该学生在选课表中选择了这门课程。

如果子查询返回了至少一行结果,那么EXISTS子句就会返回TRUE;如果子查询没有返回任何结果,那么EXISTS子句就会返回FALSE。在这个查询中,内层NOT EXISTS的意思是:“对于Courses表中的每一门课程,检查是否存在至少一行在StudentCourses表中的记录,使得该记录的学号与外层查询中的学号相同,并且所选课程与当前课程相同。”

外层的NOT EXISTS则是说:“找出那些在StudentCourses表中的学生,对于Courses表中的每一门课程,都不存在没有选择的情况。” 换句话说,就是找出那些选了所有课程的学生。

请编写下面的sql:学生表里面有属性姓名、成绩,求没有任何一门课程低于80分的学生姓名

SELECT 姓名
FROM Students
EXCEPT
SELECT 姓名
FROM Students
WHERE 成绩 < 80;

这个查询的逻辑是:首先,SELECT 姓名 FROM Students选择了所有学生的姓名。然后,EXCEPT关键字后面跟了一个子查询,这个子查询选择了所有成绩低于80分的学生姓名。最终的结果是第一个查询的结果减去第二个查询的结果,即所有没有成绩低于80分的学生姓名。

数据库系统的三级模式结构

内模式、模式和外模式个数的比例1:1:N

① 模式(Schema)


模式(也称逻辑模式)

  • 数据库中全体数据的逻辑结构和特征的描述
  • 所有用户的公共数据视图,综合了所有用户的需求

一个数据库只有一个模式,可以把模式看成唯一的数据库,实例就是数据库里面的多个表

模式的地位:是数据库系统模式结构的中间层

  • 与数据的物理存储细节和硬件环境无关
  • 与具体的应用程序、开发工具及高级程序设计语言无关

模式的定义:

  • 数据的逻辑结构(数据项的名字、类型、取值范围等)
  • 数据之间的联系
  • 数据有关的安全性、完整性要求

② 外模式(External Schema)
外模式(也称子模式或用户模式)

  • 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
  • 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示,可以看成把数据库的部分数据,运用在不同的应用程序上,在UI界面上显示

一个数据库只有一个模式,可以把模式看成唯一的数据库,实例就是数据库里面的多个表
外模式的地位:介于模式与应用之间

  • 模式与外模式的关系:一对多

外模式通常是模式的子集;

一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求;

对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同;

  • 外模式与应用的关系:一对多

同一外模式也可以为某一用户的多个应用系统所使用;

但一个应用程序只能使用一个外模式;可以看成把数据库的部分数据,运用在不同的应用程序上,在UI界面上显示

外模式的用途

  • 保证数据库安全性的一个有力措施;
  • 每个用户只能看见和访问所对应的外模式中的数据;


③ 内模式(Internal Schema)
内模式(也称存储模式)

  • 是数据物理结构和存储方式的描述
  • 是数据在数据库内部的表示方式:
  1. 记录的存储方式(顺序存储,按照B树结构存储,
  2. 按hash方法存储)
  3. 索引的组织方式
  4. 数据是否压缩存储
  5. 数据是否加密
  6. 数据存储记录结构的规定
  • 一个数据库只有一个内模式

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

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

相关文章

【最新鸿蒙应用开发】——什么是应用开发模型?Stage模型

在应用程序开发时通常需要使用应用模型来提供必备的组件和运行机制&#xff0c;有了应用模型&#xff0c;开发者可以基于一套统一的模型进行应用开发&#xff0c;使应用开发更简单、高效。接下来谈谈鸿蒙应用开发当中的两种模型&#xff1a; Stage模型&#xff1a; HarmonyOS …

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:人工智能消防应用

青鸟消防股份有限公司成立于2001年6月&#xff0c;于2019年8月在深圳证券交易所挂牌上市&#xff0c;成为中国消防报警行业首家登陆A股的企业。公司始终聚焦于消防安全与物联网领域&#xff0c;主营业务为“一站式”消防安全系统产品的研发、生产和销售。公司产品已覆盖了火灾报…

【NOIP提高组】方格取数

【NOIP提高组】方格取数 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 设有N*N的方格图&#xff0c;我们将其中的某些方格填入正整数&#xff0c; 而其他的方格中放入0。 某人从图得左上角出发&#xff0c;可以向下走&#xff0c;也可以向…

vue2 bug求助!!!(未解决,大概是浏览器缓存的问题或者是路由的问题)

我的vue2项目出现了一个超级恶心的bug 具体流程&#xff1a; 页面a点击a标签->到页面b->页面b用户退出刷新页面->点击浏览器的返回按钮返回上一页 返回页面后页面没有刷新导致用户名还显示这 项目中没有用keep-alive缓存 也在设置了key 尝试了window.addEventListe…

idea实用快捷键(持续更新...)

文章目录 1、快速输入try/catch/finally2、选中多个光标3、实现接口4、方法参数提示5、查看某个类的子类6、弹出显示查找内容的搜索框 1、快速输入try/catch/finally CtrlAltT 2、选中多个光标 ShiftAlt单机多选 End可以全部到行尾&#xff0c;Home则可以全部回到行首 3、实现接…

Python深度学习基于Tensorflow(14)人脸检测和识别实例

文章目录 人脸检测研究现状传统的人脸检测算法深度学习人脸检测算法 人脸识别实战人脸检测人脸对齐人脸标准化人脸表示人脸验证 参考资料 人脸检测研究现状 这里直接引用了吴伟硕士毕业论文 随着计算能力的飞速提升和创新性的传感、分析、渲染设备和技术的广泛应用&#xff0c…

LoRA低秩自适应微调技术原理及实践

大型语言模型的低秩自适应 (LoRA) 用于解决微调大型语言模型 (LLM) 的挑战。GPT 和 Llama 等模型拥有数十亿个参数&#xff0c;通常对于特定任务或领域进行微调的成本过高。LoRA 保留了预训练的模型权重&#xff0c;并在每个模型块中加入了可训练层。这显著减少了需要微调的参数…

k8s学习--ConfigMap详细解释与应用

文章目录 一 什么是configmapConfigMap 的好处ConfigMap 的限制 二.创建ConfigMap的4种方式1.在命令行指定参数创建2.在命令行通过多个文件创建3.在命令行通过文件提供多个键值对创建4.YAML资源清单文件创建 三 configmap的两种使用方法1.通过环境变量的方式传递给pod2.通过vol…

MySQL学习——影响选项文件处理的命令行选项和程序选项修改器

大多数支持选项文件的MySQL程序都处理以下选项。因为这些选项会影响选项文件的处理&#xff0c;所以必须在命令行上给出&#xff0c;而不是在选项文件中给出。为了正常工作&#xff0c;这些选项中的每一个都必须先于其他选项给出&#xff0c;但以下情况除外&#xff1a; -prin…

WLAN组网模型探究

目录 一、WLAN基本概念二、WLAN组网方式三、WLAN转发模型 随着信息技术的飞速发展&#xff0c;无线局域网&#xff08;WLAN&#xff09;已逐渐成为企业网络架构中不可或缺的一部分。不同的企业组织因其业务特性、规模大小及安全需求的不同&#xff0c;对WLAN的要求也各有侧重。…

物联网面试准备

volatile的作用 volatile关键字用于告诉编译器&#xff0c;该变量可能会在程序的执行过程中被意外更改&#xff0c;因此编译器不应该对该变量进行优化或者缓存。 这样可以确保每次访问该变量时都会从内存中读取最新的值&#xff0c;而不是使用缓存中的旧值。 在多线程编程中&…

Arduino IDE 2.3.2找不到端口解决方法

Arduino IDE 2.3.2找不到端口解决方法 问题描述 Arduino IDE 2.3.2 软件找不到端口(端口显示灰色)&#xff0c;Arduino开发板连接电脑后&#xff0c;设备管理器能够看到端口信息&#xff0c;Arduino IDE软件中看不到端口。 设备管理器中能够看到端口信息 Arduino IDE中端口显…

植物大战僵尸杂交版(最新版)

杂交版1.0文件链接 链接&#xff1a;https://pan.baidu.com/s/1Ew6iTg0_d_Ut8N9_18KGLw 提取码&#xff1a;yspa 杂交版2.0文件链接 链接:https://pan.baidu.com/s/1tuchowb4C_oNT6EpqSvr_w?pwdy2fz 提取码:y2fz

HTML静态网页成品作业(HTML+CSS)—— 香奈儿香水介绍网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

上位机图像处理和嵌入式模块部署(f407 mcu中tf卡模拟u盘)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在f407开发板上面&#xff0c;本身是有一个usb接口的。这个usb接口也不仅仅是作为电源使用的&#xff0c;它还可以用来做很多的事情。一方面&#…

计算机网络错题答案汇总

王道学习 第1章 计算机网络体系结构 1.1 1.2

vue配置代理服务器解决跨域方法

一.vue配置代理服务器解决跨域方法一 过程如图&#xff1a; 1.在配置文件中设置代理服务器的地址 //vue.config.js module.exports{pages:{index:{// 入口entry:src/main.js,},},lintOnSave:false, //关闭语法检测// 开启代理服务器devServer:{proxy:http://localhost:8000//…

Java基础教程:算术运算符快速掌握

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

操作系统之银行家算法

目录 前言 银行家算法 定义 举例 策略 思路 结束语 前言 今天是坚持写博客的第16天&#xff0c;已经超过半个月了&#xff0c;希望可以继续坚持&#xff0c;不断积累与回顾&#xff0c;夯实基础知识体系的基础。我们今天来讲讲操作系统当中的另一个重要知识点——银行家…

vue2组件传参方法

一、父传子 1、$refs方法 <template><div class"father"><h1>我是父亲</h1><button click"getHeight">获取身高</button><ChildView ref"childRef"></ChildView></div> </template&…