见面试官前,掏出来看看系列(二)之——数据库原理思维导图

2024-04-02 21:38

本文主要是介绍见面试官前,掏出来看看系列(二)之——数据库原理思维导图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 数据库原理
    • SQL语言
      • 数据查询语句
      • 数据操作语句(DML)
      • 数据定义语句(DDL)
      • 数据控制语句(DCL)
    • 内连接&外连接
      • 内连接(自然连接)
      • 外连接
    • 事务
      • 事务必须满足四个属性:
      • 原子性
      • 一致性
      • 隔离性(独立性)
      • 持久性
    • 存储过程
      • 存储过程&函数区别和联系
    • 范式
      • 目的:
      • 第一范式(1NF)
      • 第二范式(2NF)
      • 第三范式(3NF)
      • 鲍依斯-科得范式(BCNF)
      • 第四范式(4NF)
    • 触发器
      • 触发器&存储过程的区别
      • DML触发器
      • DDL触发器
      • 事前触发&事后触发
      • 语句级触发&行级触发
    • 视图
      • 作用
    • union和union all 的区别
      • union:
      • union all:
      • union all 要比 union 操作快
    • 日志文件
    • 游标
      • 优点

在这里插入图片描述
见面试官前,掏出来看看系列

本系列旨在为面试者见到面试官之前打发无聊时间之用
缓解面试者见到面试官之前,因为紧张而头脑一片空白又想看点知识点来提高安全感之用

数据库原理

SQL语言

数据查询语句

  • select
    • 选择符合条件的语句
      • select * from table where 条件语句

数据操作语句(DML)

  • insert
    • 插入一条记录
      • insert into table(字段1 ,字段2)values(值1,值2)
  • update
    • 更新语句
      • update table set 字段名 = 字段值 where 条件表达式
  • delete
    • 删除记录(可恢复)
      • delete from table where 条件表达式

数据定义语句(DDL)

  • 对数据库用户用户、基本表、视图、索引进行定义和撤销。
  • truncate
    • 清空表数据(不可恢复)
      • truncate table 表名
  • create
    • 数据表的建立
      • create table tablename(字段1,字段2)
  • drop
    • 数据表的删除
      • drop table tablename

数据控制语句(DCL)

  • 对数据库进行统一控制管理,保证数据在多用户共享的情况下能够安全。
  • grant
    • 为用户授权系统权限
      • Grant <权限> on 表名[(列名)] to 用户 With grant option
      • GRANT <权限> ON <数据对象> FROM <数据库用户>
        1. 数据对象可以是表名或列名
  1. 权限表示对表的操作,如select,update,insert,delete
  • revoke
    • 收回系统权限
      • REVOKE <权限> ON <数据对象> FROM <数据库用户名>

内连接&外连接

内连接(自然连接)

  • 只显示符合条件的记录
  • 选取两个表中所有匹配的数据,舍弃不匹配的数据
  • select fieldlist from table1 [inner] join table2 on table1.column = table2.column

外连接

  • 除了显示符合条件的记录,还显示表中的记录
    (例如:使用左外连接,还显示左表中的记录)
  • 左外连接
    • LEFT OUTER JOIN
  • 右外连接
    • RIGHT OUTER JOIN
  • 全外连接
    • FULL OUTER JOIN

事务

  • 事务是数据库中一个单独的执行单元(Unit)
  • 当前数据库中更改数据成功时,在事务中更改的数据便会提交。否则,事务就取消或者回滚,更改无效。

事务必须满足四个属性:

原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability),即ACID四个属性

原子性

  • 当数据修改时,要么全执行,要么全不执行

一致性

  • 一个事务执行之前和执行之后,数据库数据必须保持一致性状态
  • 由于并发操作带来的数据不一致性包括丢失数据修改、读“脏”数据、不可重复读和产生“幽灵”数据

隔离性(独立性)

  • 当两个或多个事务并发执行时,为了保证数据的安全性,将一个事务内部的操作与事务的操作隔离起来,对其他食物都是不可见的
  • 数据库四种类型的事务隔离级别
    • 不提交的读
    • 提交的读
    • 可重复的读
    • 串行化
  • 实现隔离性时解决临时更新与消除级联回滚问题的一种方式

持久性

  • 事务完成以后,数据库管理系统(DBMS)保证他对数据库中的数据的修改时永久性的,当系统或介质发生故障时,该修改也永久保持
  • COMMIT语句
    • 事务启动后,对数据库所作的所哟更改都成为永久性的了(写入磁盘)
  • ROLLBACK语句
    • 事务启动后,对数据库的所有更改都会被撤销(数据库中的内容返回事务开始之前所处的状态)

存储过程

  • 一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它
create procedure sp_name @ [参数名] [类型]asbegin......end

调用存储过程语法:exec sp_name[参数名]
删除存储过程语法:drop procedure sp_name

  • 存储过程可以使没有权限的用户在控制之下间接的存取数据库,保证了数据的安全

存储过程&函数区别和联系

  • 存储过程作为一个独立的部分来执行,而函数可以作为查询语句的一部分调用
  • 存储过程的功能复杂,而函数的功能针对性强
  • 存储过程可以返回多个参数,而函数只能返回一个值或对象
  • 函数不能直接操作实体表,只能操作内建表
  • 存储过程在创建时即在服务器上进行了编译,执行速度比较快

范式

目的:

  • 减少数据库中的冗余,以增加数据的一致性。

第一范式(1NF)

  • 属性值不能在分裂成更小部分

第二范式(2NF)

  • 满足第1NF的同时,数据库中的每一个实例或行必须被唯一的区分

第三范式(3NF)

  • 满足2NF的同时,非主键字段不能互相依赖

鲍依斯-科得范式(BCNF)

假设仓库管理关系表为(仓库ID, 存储物品ID, 管理员ID, 数量),满足一个管理员只在一个仓库工作;一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:
(仓库ID, 存储物品ID) →(管理员ID, 数量)
(管理员ID, 存储物品ID) → (仓库ID, 数量)
所以,(仓库ID, 存储物品ID)和(管理员ID, 存储物品ID)都是仓库管理关系表的的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:
(仓库ID) → (管理员ID)
(管理员ID) → (仓库ID)
即存在关键字段决定关键字段的情况,所以其不符合BCNF范式。把仓库管理关系表分解为二个关系表:
仓库管理:(仓库ID, 管理员ID)
仓库:(仓库ID, 存储物品ID, 数量)
这样的数据库表是符合BCNF范式的。

  • 所有非主属性对每一个码都是完全函数依赖
  • 所有的主属性对每一个不包含它的码,也是完全函数依赖
  • 没有任何属性完全函数依赖于非码的任何一组属性

第四范式(4NF)

职工表(职工编号,职工孩子姓名,职工选修课程)

在这个表中同一个职工可能会有多个职工孩子的姓名,同样,同一个职工也可能会有多个职工选修课程,所以这里存在着多值事实,不符合第四范式。

将职工表分为两个表,使它们只有一个多值事实

职工表一(职工编号,职工孩子姓名)
职工表二(职工编号,职工选修课程)

两个表都只有一个多值事实,所以符合第四范式

  • 把同一表内的多对多关系删除

触发器

  • 触发器是一种特殊类型的存储过程
  • 由事件触发,自动完成SQL语句
  • 使用触发器可以保证数据的有效性和完整性,完成比约束更复杂的数据约束

触发器&存储过程的区别

  • 触发器当操作DML语句时隐式的调用,而存储过程从一个应用或过程中显示调用
  • 在触发器体内禁止使用COMMIT和ROLLBACK语句
  • 触发器不能接受参数输入,而存储过程可以接受参数输入

DML触发器

  • After触发器
    • 记录改变之后进行的一种触发器
  • InsteadOf触发器
    • 记录改变之前,执行触发器本身定义的操作

DDL触发器

  • 响应数据定义语句事件时执行的存储过程

事前触发&事后触发

  • 事前触发:用于验证一些条件或进行一些准备工作,获得之前和新的字段值
  • 事后触发:收尾工作,保证事务的完整性

语句级触发&行级触发

  • 语句级触发:在语句执行之前或之后执行
  • 行级触发:在触发器影响的行触发一次

视图

  • 从数据的基本表中选取出来的数据组成的逻辑窗口。与基本表不同,它是个虚表

作用

  • 可以简化数据查询语句

  • 可以使用户能从多角度看待同一数据

  • 通过引入视图可以提高数据的安全性

  • 视图提供了一定程度的逻辑独立性

  • 定义视图可以将表与表之间的复杂的操作连接和搜索条件对用户不可见,故增强了数据的安全性,但不能提高查询的效率

union和union all 的区别

union:

  • 对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序

union all:

  • 对两个结果集进行并集操作,包括重复行,不进行排序;

union all 要比 union 操作快

日志文件

  • 记录数据库,故障发生以及恢复数据的信息

  • 每一个数据库至少包含两个日志文件组。每个日志文件组至少包含两个日志文件成员

  • 日志文件组以循环方式进行写操作

  • 每一个日志文件对应一个物理文件

  • 【注意】:如果数据库中的日志满了,就只能执行查询等读操作,不能执行更改,备份等写操作

游标

  • 从包含多条数据记录的结果集中每次提取一条记录
  • 游标由结果集和结果集中指向特定记录的游标位置组成的

优点

  • 在使用游标的表中,对行提供删除和更新的功能
  • 游标将面向集合的数据库管理系统和面向行的程序设计连接了起来

这篇关于见面试官前,掏出来看看系列(二)之——数据库原理思维导图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871120

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit