Java 程序员面试笔记 - 数据库

12.1 SQL

DML:插入数据、修改数据和删除数据。

DDL:数据定义语句,可以对数据库用户、基本表、视图等进行定义和撤销。

DCL:用于对数据库进行统一的控制管理。

12.2 内连接与外连接

内链接:两个表匹配的数据才出现在结果集。

外连接:左外链接、右外连接、全外连接。

12.3 事务

1. 原子性:全部执行或全部不执行。

2. 一致性:一个事物执行之前和之后数据库数据必须保持一致性状态。

3. 隔离性:不提交读 / 提交读 / 可重复读 / 串行化。

4. 持久性:事务完成后更改是永久性的。

12.4 存储过程

SQL 语句执行时要先编译再被执行,在大型数据库中为了提高效率将为了完成特定功能的SQL语句集进行编译优化后,存储在服务器中以便调用。

12.5 范式

1NF:数据库每一列都是不可分割的基本数据项。同一列中不能有多个值。

2NF:每个实例或行必须可以被唯一的区分。每一个非主属性都依赖某个候选键。

3NF:在 2NF的基础上,每个非主属性都不传递依赖候选键。BCNF:每个属性都不传递依赖 R 的候选键。

4NF:只存在一组多值依赖。

  1. 第一范式(1NF)

    • 要求数据库表的每一列都是不可分割的基本数据项,即表中的所有字段都应该只包含原子性的值。
    • 举例:如果有一个“地址”字段,它应该被拆分为“街道”、“城市”、“州”和“邮编”等单独的列。
  2. 第二范式(2NF)

    • 在满足1NF的基础上,要求表中没有部分依赖,即非主键列完全依赖于主键。
    • 举例:如果有一个订单表,其中包括了订单ID、客户ID和客户地址,如果客户地址只依赖于客户ID而不是订单ID,那么这个表就违反了2NF。
  3. 第三范式(3NF)

    • 在满足2NF的基础上,要求表中没有传递依赖,即非主键列只依赖于主键,不依赖于其他非主键列。
    • 举例:如果员工表中有一个部门名称字段,而部门名称依赖于部门ID(非主键),则违反了3NF,应该将部门信息分离到另一个表中。
  4. 鲍伊-科德范式(BCNF)

    • 在满足3NF的基础上,要求表中的每一行只表示一个唯一的信息,即任何非主属性都不能与主键的一部分有依赖关系。
    • 举例:如果一个学生课程表中包含学生ID、课程ID和课程名称,如果课程名称依赖于课程ID而不是学生ID,那么它应该被分离到另一个表中。
  5. 第四范式(4NF)

    • 要求表中不存在多值依赖,即一个表中不应该有两个或多个独立的多值事实关于同一个主键。
    • 举例:如果一个员工表中包含员工的工作历史记录,那么每个员工可能有多个工作记录,这违反了4NF,应该将工作历史记录分离到另一个表中。
  6. 第五范式(5NF)

    • 也称为项目连接范式(PJNF),要求消除表中的所有联接依赖。
    • 举例:如果有两个表通过多个字段进行联接,而这些字段本身并不构成主键,那么可能需要进一步规范化。

12.11 三级封锁

一级封锁:事务T在修改数据前需要加 X 锁,事务结束才释放。读取不加锁,会造成不可重复读和读脏数据。

二级封锁:一级基础上,读取数据加 S 锁,读完后释放 S 锁,可防止读脏数据,不保证可重复读。

三级封锁:一级基础上,读取 R 之前加 S 锁直到事务结束才释放。可保证可重复读。

12.11  补充 聚集索引和非聚集索引

聚集索引:对磁盘上实际数据重新组织按指定的一个或多个列的值排序的一种索引,每个表只能创建一个。记录的排列顺序和索引的排列顺序一致,查询速度快。B+ tree,叶节点就是数据节点。

非聚集索引:制定了表中记录的逻辑顺序。叶节点仍是索引节点,指针指向数据块。

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

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

相关文章

【Harmony】SCU暑期实训鸿蒙开发学习日记Day2

目录 Git 参考文章 常用操作 ArkTS的网络编程 Http编程 发送请求 GET POST 处理响应 JSON数据解析 处理响应头 错误处理 Web组件 用生命周期钩子实现登录验证功能 思路 代码示例 解读 纯记录学习日记,杂乱,误点的师傅可以掉了&#x1…

How to integrate GPT-4 model hosted on Azure with the gptstudio package

题意:怎样将托管在Azure上的GPT-4模型与gptstudio包集成? 问题背景: I am looking to integrate the OpenAI GPT-4 model into my application. Here are the details I have: Endpoint: https://xxxxxxxxxxxxxxx.openai.azure.com/Locatio…

【前端】SpringBootWeb 篇-入门了解 Spring Cache、Spring Task与WebSocket 框架

在SpringBootWeb开发中,Spring Cache、Spring Task与WebSocket框架是三个非常重要的组件,它们分别用于缓存管理、任务调度和实时通信。以下是对这三个框架的入门了解: 一、Spring Cache 1. 简介 Spring Cache是Spring框架提供的缓存抽象&a…

LG 选择 Flutter 来增强其智能电视操作系统 webOS

可以这个话题会让大多数人困惑,2024 年了为什么还会冒出 webOS 这种老古董?然后 LG 为什么选择 webOS ?现在为什么又选择 Flutter ? 其实早在 Google I/O 发布 Flutter 3.22 版本的时候,就提到了 LG 选择 Flutter 来增…

tinymce富文本支持word内容同时粘贴文字图片上传 vue2

效果图 先放文件 文件自取tinymce: tinymce富文本简单配置及word内容粘贴图片上传 封装tinymce 文件自取&#xff1a;tinymce: tinymce富文本简单配置及word内容粘贴图片上传 页面引用组件 <TinymceSimplify refTinymceSimplify v-model"knowledgeBlockItem.content…

Socket、WebSocket 和 MQTT 的区别

Socket 协议 定义&#xff1a;操作系统提供的网络通信接口&#xff0c;抽象了TCP/IP协议&#xff0c;支持TCP和UDP。特点&#xff1a; 通用性&#xff1a;不限于Web应用&#xff0c;适用于各种网络通信。协议级别&#xff1a;直接使用TCP/UDP&#xff0c;需要手动管理连接和数…

vue3 项目的创建、组合式API、rective和ref、watch函数

vue3项目的创建&#xff1a; npm init vuelatest 在执行上述代码以后&#xff0c;按需勾选项目所需的东西就可以 然后再命令行依次执行&#xff1a; // 进入项目 cd vuedemo //安装下来对应的包 npm install //启动项目 npm run dev文件解读&#xff1a; package.json &am…

【leetcode】 字符串相乘(大数相乘、相加)

记录一下大数相乘相加方法&#xff1a; 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 注意&#xff1a;不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: nu…

vue3前端开发-执行npm run dev提示报错怎么解决

vue3前端开发-执行npm run dev提示报错怎么解决&#xff01;今天在本地安装初始化了一个vue3的案例demo。但是当我执行npm run dev想启动它时报错了说&#xff0c;找不到dev。让我检查package.json文件是否包含dev。如下图所示&#xff1a; 实际上&#xff0c;不必惊慌&#xf…

iOS ------ tagged Pointer 内存对齐

一&#xff0c;tagged Pointer 为了节省内存和提高执行效率&#xff0c;苹果在64bit程序中引入了Tagged Pointer计数&#xff0c;用于优化NSNumber, NSDate, NSString等小对象的存储。一个指针或地址区域&#xff0c;除了放对象地址之外&#xff0c;也可以放其他额外的信息&am…

240717.LeetCode——2974.最小数字游戏

题目描述 你有一个下标从 0 开始、长度为 偶数 的整数数组 nums &#xff0c;同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏&#xff0c;游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下&#xff1a; 每一轮&#xff0c;Alice 先从 nums 中移除一个 …

转移C盘中的conda环境(包括.condarc文件修改,environment.txt文件修改,conda报错)

conda环境一般是默认安装到C盘的&#xff0c;若建立多个虚拟环境&#xff0c;时间长了&#xff0c;容易让本不富裕的C盘更加雪上加霜&#xff0c;下面给出将conda环境从C盘转移到D盘的方法。 目录 电脑软硬件转移方法查看当前conda目录转移操作第一步&#xff1a;.condarc文件修…

Apache Flink 入门

零、概述 Apache Flink 是一个高性能的开源分布式流处理框架&#xff0c;专注于实时数据流的处理。 它设计用于处理无界和有界数据流&#xff0c;在内存级速度下提供高效的有状态计算。 Flink 凭借其独特的Checkpoint机制和Exactly-Once语义&#xff0c;确保数据处理的准确性…

vue中:class、watch、v-show使用

1、:class 指令 在 Vue.js 中&#xff0c;:class 指令&#xff08;或 v-bind:class&#xff09;允许你动态地绑定 CSS 类到一个元素。这个指令有两种主要的使用方式&#xff1a;绑定一个对象或者绑定一个数组。 1.1、:class{} 对象语法 对象语法允许你基于条件来添加或移除类…

如何在网页中对视频进行截图

在网页开发中&#xff0c;我们经常需要对视频进行截图&#xff0c;以便在文章或博客中展示视频的某个瞬间。HTML5 提供了强大的 <video> 标签&#xff0c;使得在网页中嵌入视频变得简单。但是&#xff0c;如何对这些视频进行截图呢&#xff1f;本文将介绍一种简单的方法&…

只用 CSS 能玩出什么花样?

在前端开发领域&#xff0c;CSS 不仅仅是一种样式语言&#xff0c;它更像是一位多才多艺的艺术家&#xff0c;能够创造出令人惊叹的视觉效果。本文将带你探索 CSS 的无限可能&#xff0c;从基本形状到动态动画&#xff0c;从几何艺术到仿生设计&#xff0c;只用 CSS 就能玩出令…

Vscode中Github copilot插件无法使用(出现感叹号)解决方案

1、击扩展或ctrl shift x ​​​​​​​ 2、搜索查询或翻找到Github compilot 3、点击插件并再左侧点击登录github 点击Sign up for a ... 4、跳转至github登录页&#xff0c;输入令牌完成登陆后返回VScode 5、插件可以正常使用

社会科学战线

《社会科学战线》&#xff08;以下简称《战线》&#xff09;是吉林省社会科学院主办的大型综合性人文社会科学类期刊&#xff0c;创刊于1978年5月&#xff0c;月刊&#xff0c;每期约50万字。内容涵盖哲学、历史学、文学、经济学、政治学、法学、社会学、教育学等人文社会科学学…

微服务实战系列之玩转Docker(三)

前言 镜像&#xff08;Image&#xff09;作为Docker的“水源”&#xff0c;取之于它&#xff0c;用之于它。这对于立志成为运维管理的撒手锏——Docker而言&#xff0c;重要性不言而喻。 我们在虚拟机时代&#xff08;当然现在依然ing…&#xff09;&#xff0c;如何快速完成…

成为CMake砖家(5): VSCode CMake Tools 插件基本使用

大家好&#xff0c;我是白鱼。 之前提到过&#xff0c;白鱼的主力 编辑器/IDE 是 VSCode&#xff0c; 也提到过使用 CMake Language Support 搭配 dotnet 执行 CMakeLists.txt 语法高亮。 对于阅读 CMakeLists.txt 脚本&#xff0c; 这足够了。 而在 C/C 开发过程中&#xff…