当前位置: 首页 > article >正文

面试八股文--数据库基础知识总结(1)

1、数据库的定义

  • 数据库(DataBase,DB)简单来说就是数据的集合
  • 数据库管理系统(Database Management System,DBMS)是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。
  • 数据库系统(Database System,DBS)是指基于数据库的计算机应用系统,通常由数据库、数据库管理系统、软件、数据库管理员、用户组成

2、数据库中的一些基本概念

  • 元组:元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。 在二维表里,元组也称为行。
  • :码就是能唯一标识实体的属性,对应表中的列。
  • 候选码:若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为候选码。例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。
  • 主码 : 主码也叫主键。主码是从候选码中选出来的。 一个实体集中只能有一个主码,但可以有多个候选码。
  • 外码 : 外码也叫外键。如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。外键用来和其他表建立联系用,外键是另一表的主键,外键是可以有重复的,可以是空值。一个表可以有多个外键。
  • 主属性:候选码中出现过的属性称为主属性。比如关系 工人(工号,身份证号,姓名,性别,部门). 显然工号和身份证号都能够唯一标示这个关系,所以都是候选码。工号、身份证号这两个属性就是主属性。如果主码是一个属性组,那么属性组中的属性都是主属性。
  • 非主属性: 不包含在任何一个候选码中的属性称为非主属性。比如在关系——学生(学号,姓名,年龄,性别,班级)中,主码是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性。

 3、数据库中三范式

  • 第一范式(1NF):属性不可再分
  • 第二范式(2NF):在1NF的基础上,消除了非主属性对码的部分函数依赖
  • 第三范式(3NF):在2NF的基础上,消除了非主属性对码的传递函数依赖

(1) 函数依赖(Functional Dependency)

函数依赖是关系数据库中属性之间的一种约束关系。假设有一个关系模式R(U) ,其中U是属性集合,如果对于U 的一个子集X 和另一个子集Y,满足以下条件:对于R的任意两个元组t和s,只要 t[X] = s[X],就必然有t[Y] = s[Y],那么称Y函数依赖于X,记作X \rightarrow Y

- 举例:在学生关系表中,假设属性集合为 {学号, 姓名, 年龄, 性别},如果每个学号唯一对应一个学生的所有信息,那么可以表示为学号 -> 姓名, 年龄, 性别。

(2)部分函数依赖(Partial Functional Dependency)

如果在关系模式R(U) 中,存在函数依赖X \rightarrow Y,并且存在X的一个真子集X' ,使得X' \rightarrow Y成立,那么称Y对X是部分函数依赖。

- 举例:假设有一个关系模式R(学号, 课程号, 成绩),其中 (学号, 课程号)是候选键。如果(学号, 课程号) -> 成绩,但同时课程号->成绩也成立,那么成绩 对 (学号, 课程号) 是部分函数依赖。

部分函数依赖会导致数据冗余和更新异常,因此在数据库设计中应尽量避免。

(3) 完全函数依赖(Full Functional Dependency)

如果在关系模式R(U)中,存在函数依赖X \rightarrow Y,并且对于X的任意真子集X',X' \rightarrow Y 都不成立,那么称Y对X是完全函数依赖。

- 举例:在关系模式R(学号, 姓名, 年龄)中,假设学号->姓名, 年龄。因为姓名和年龄不能被学号的任何真子集决定,所以姓名和年龄对学号是完全函数依赖。

完全函数依赖是数据库设计中期望的依赖关系,因为它可以减少数据冗余和更新异常。

(4) 传递函数依赖(Transitive Functional Dependency)

在关系模式R(U)中,如果存在函数依赖X \rightarrow YY \rightarrow Z,并且Y不是X 的子集,同时X 不能直接决定Z,那么称Z对X是传递函数依赖。

- 举例:假设有一个关系模式R(学号, 班级, 班主任),其中学号->班级和班级 \rightarrow 班主任,但学号不能直接决定班主任,那么班主任对学号是传递函数依赖。

传递函数依赖也会导致数据冗余和更新异常,因此在数据库设计中,通常需要通过规范化(如第三范式)来消除传递函数依赖。

4、数据库语言

1. 数据库定义语言(DDL,Data Definition Language)

数据库定义语言用于定义和管理数据库的结构,包括创建、修改、删除数据库中的各种对象(如表、视图、索引、约束等)。DDL操作直接影响数据库的模式(schema)。
 常见的DDL语句:

1. CREATE(创建)- 创建数据库:CREATE DATABASE database_name;- 创建表:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);- 创建索引:CREATE INDEX index_name ON table_name (column);- 创建视图:CREATE VIEW view_name AS SELECT columns FROM table_name WHERE condition;2. ALTER(修改)- 修改表结构,例如添加或删除列:ALTER TABLE table_name ADD COLUMN column_name datatype;ALTER TABLE table_name DROP COLUMN column_name;- 修改列的数据类型:ALTER TABLE table_name MODIFY COLUMN column_name new_datatype;3. DROP(删除)- 删除数据库:DROP DATABASE database_name;- 删除表:DROP TABLE table_name;- 删除索引:DROP INDEX index_name;- 删除视图:DROP VIEW view_name;4. TRUNCATE(清空)- 清空表中的所有数据,但保留表结构:TRUNCATE TABLE table_name;

特点:
- DDL操作通常会导致数据库结构的永久性变化。
- DDL语句在执行时通常会隐式提交事务,不可回滚。

2. 数据库操作语言(DML,Data Manipulation Language)

数据库操作语言用于操作数据库中的数据,包括插入、更新、删除数据。DML操作直接影响数据库中的数据实例,但不改变数据库的结构。常见的DML语句:

1. INSERT(插入)- 向表中插入数据:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);2. UPDATE(更新)- 修改表中的数据:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;3. DELETE(删除)- 删除表中的数据:DELETE FROM table_name WHERE condition;4. MERGE(合并)- 在某些数据库系统中,`MERGE`语句用于根据条件插入或更新数据:MERGE INTO target_table tUSING source_table sON (t.id = s.id)WHEN MATCHED THENUPDATE SET t.column = s.columnWHEN NOT MATCHED THENINSERT (column1, column2)VALUES (s.column1, s.column2);

 特点:
- DML操作可以被事务控制(如提交或回滚)。
- DML是数据库中最常用的语言,用于日常的数据操作。

3. 数据库查询语言(DQL,Data Query Language)

数据库查询语言是DML的一个子集,专门用于从数据库中检索数据。DQL的核心是`SELECT`语句,它是数据库中最常用的操作之一。

常见的DQL语句:

1. SELECT(查询)- 基本查询:SELECT column1, column2, ...FROM table_nameWHERE condition;- 查询所有列:SELECT * FROM table_name;- 带条件的查询:SELECT column1, column2FROM table_nameWHERE column1 = value AND column2 > value;- 聚合查询:SELECT COUNT(*), AVG(column), SUM(column), MAX(column), MIN(column)FROM table_nameWHERE conditionGROUP BY column;- 多表连接查询:SELECT t1.column1, t2.column2FROM table1 t1JOIN table2 t2 ON t1.id = t2.idWHERE condition;

特点:
- DQL的核心是`SELECT`语句,用于从数据库中检索数据。
- 查询操作不会修改数据库中的数据,只是返回结果集。
- 查询语言支持复杂的逻辑,如条件过滤、分组、排序、连接等。


到这里我们就介绍完数据库的相关理论知识,从整体上把握了数据库,接下来介绍MySQL

记得给个小心心♥~

相关文章:

面试八股文--数据库基础知识总结(1)

1、数据库的定义 数据库(DataBase,DB)简单来说就是数据的集合数据库管理系统(Database Management System,DBMS)是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。数据库系统…...

优化 Flink 消费 Kafka 数据的速度:实战指南

在使用 Flink 消费 Kafka 数据时,你可能会遇到 消费速率较慢 的问题。本文将从 Kafka 并行消费、批量拉取、Checkpoint 频率、Consumer Poll 速率 以及 Flink 任务 Slot 资源 等多个方面,详细解析如何优化 Flink 消费 Kafka 的速度。 🔥 1. 增…...

轮式机器人在复杂地形中如何选择合适的全局路径规划算法?

已思考完成 收起 嗯,用户问的是轮式机器人在复杂地形中如何选择合适的全局路径规划算法。首先,我需要理解复杂地形可能带来的挑战,比如崎岖的路面、动态障碍物、非结构化环境等等。轮式机器人在这里的运动控制需要考虑地形通过性、稳定性&…...

数据结构与算法:动态规划dp:买卖股票相关力扣题(下):309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费

309. 买卖股票的最佳时机含冷冻期 首先我们要明确,如果全程只能买卖一次或者允许买卖多次,那么我们就没必要记录无操作这个状态。 如果买卖的次数为k(k≥2),那么我们才要记录无操作这个状态,以此来区分具体…...

[uboot][stm32]配置LTDC屏幕

文章目录 前提dts设备树修改Kconfig日志打印后记 https://github.com/wdfk-prog/u-boot 前提 手上刚好有块屏幕,尝试在uboot中点亮一下使用前请使用其他手段点亮该屏幕确保屏幕的完好再进行操作.确保配置的参数及引脚是可用的. dts设备树修改 ltdc状态修改为重定向前绑定,另…...

机试刷题_1614. 括号的最大嵌套深度【python】

1614. 括号的最大嵌套深度 class Solution:def maxDepth(self, s: str) -> int:maxD 0if not s:return maxDstack []for char in s:if char(:stack.append(char)maxD max(maxD,len(stack))elif char) :stack.pop()return maxD...

VM虚拟机安装与配置Ubuntu Linux操作系统详细教程~

一、下载VM虚拟机 VMware16.0.zip百度网盘下载链接:https://pan.baidu.com/s/1-l-CcAVNINqhRLSiQ26R7w?pwd=tznn 提取码: tznn 二、软件介绍 VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,通过它可在一台电脑上同…...

2025年2月科技热点深度解析:AI竞赛、量子突破与开源革命

引言 2025年的科技领域持续呈现爆发式增长,AI大模型竞争白热化、量子计算商业化加速、开源工具生态繁荣成为本月最受关注的议题。本文结合最新行业动态,从技术突破、商业布局到开发者生态,全面解析当前科技热点,为读者提供深度洞…...

免费PDF工具

Smallpdf.com - A Free Solution to all your PDF Problems Smallpdf - the platform that makes it super easy to convert and edit all your PDF files. Solving all your PDF problems in one place - and yes, free. https://smallpdf.com/#rappSmallpdf.com-解决您所有PD…...

组件注册方式、传递数据

组件注册 一个vue组件要先被注册,这样vue才能在渲染模版时找到其对应的实现。有两种注册方式:全局注册和局部注册。(组件的引入方式) 以下这种属于局部引用。 组件传递数据 注意:props传递数据,只能从父…...

IPD流程适合创业团队吗?

目录 简介 创业团队 作者简介 简介 回答这个问题,就不能只局限于 IPD 流程本身。 而是要先回答为什么需要 IPD 流程? 在 IPD 思维这篇文章,我也强调过这个观点: IPD 本身是为过剩经济量身定做的一种模式、一种思维。 包括…...

异步fifo学习

FIFO 本质是由 RAM 加上读写逻辑构成的先入先出的数据缓冲器。与 RAM 的区别是 FIFO 没有外部读写地址线,顺序写入顺序读出数据,其数据地址是由内部读写指针自增完成,因此 FIFO 在读写时不需要考虑读写冲突的问题。 根据 FIFO 工作的时钟域&a…...

【有啥问啥】All-to-All 通信:原理、实现与应用

All-to-All 通信:原理、实现与应用 一、引言 在分布式计算和并行处理领域,进程之间的通信是至关重要的。All-to-All 通信作为一种高效的通信模式,广泛应用于各种高性能计算和分布式系统中。本文将详细介绍 All-to-All 通信的定义、工作原理…...

深度学习(3)-TensorFlow入门(常数张量和变量)

低阶张量操作是所有现代机器学习的底层架构,可以转化为TensorFlow API。 张量,包括存储神经网络状态的特殊张量(变量)​。 张量运算,比如加法、relu、matmul。 反向传播,一种计算数学表达式梯度的方法&…...

Python学习第十七天之PyTorch保姆级安装

PyTorch安装与部署 一、准备工作二、pytorch介绍三、CPU版本pytorch安装1. 创建虚拟环境2. 删除虚拟环境1. 通过环境名称删除2. 通过环境路径删除 3. 配置镜像源4. 安装pytorch1. 首先激活环境变量2. 进入pytorch官网,找到安装指令 5. 验证pytorch是否安装成功 四、…...

HTML邮件的制作以及遇到的问题

以下是关于HTML邮件制作的详细步骤以及可能遇到的问题和解决办法: 一、HTML邮件制作步骤 规划邮件结构:确定邮件的主题、主要内容、目标受众等。比如是营销推广邮件、新闻通讯邮件还是通知邮件等。例如,营销推广邮件可能需要突出产品特点和…...

GPT-5倒计时:2025年AI海啸来袭,机器与人类对话临近

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 人工智能&AIGC术语100条 Shelly聊AI-重…...

ADC采集的电压误差比较大怎么办?

目录 1、电源噪声和电源不稳定 2、参考电压不稳定或不准确 3、采样电路设计不合理 4、温度影响 5、软件校准和误差修正 6、时钟抖动 ADC(模数转换器)采集的电压误差可能会受到多种因素的影响,要有效减少误差,需要从硬件和软…...

【单片机】MSP430MSP432入门

文章目录 0 前言1 开发方式选择2 CCS和开发相关软件3 Keil开发MSP4324 IAR for 430开发MSP4305 总结 0 前言 最近因为想学DSP,所以把之前卸载的CCS给装回来了,手头也还有之前电赛剩下的MSP430和MSP432的板子,由于年代久远,想着花点…...

linux中conda3安装

1、下载安装包 清华源-》https://mirrors.tuna.tsinghua.edu.cn/# 本文使用Anaconda3-2022.10,对应的下载路径-》https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2022.10-Linux-x86_64.sh 2、将下载到的sh脚本放在Linux中用sh脚本解析器执行 …...

大模型自动提示优化(APO)综述笔记

自大型语言模型(LLMs)出现以来,提示工程一直是各种自然语言处理(NLP)任务中激发期望响应的关键步骤。然而,由于模型的快速进步、任务的多样性和相关最佳实践的变化,提示工程对最终用户来说仍然是…...

SOME/IP-SD -- 协议英文原文讲解6

前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.3.1 E…...

每日Attention学习24——Strip Convolution Block

模块出处 [TIP 21] [link] CoANet: Connectivity Attention Network for Road Extraction From Satellite Imagery 模块名称 Strip Convolution Block (SCB) 模块作用 多方向条形特征提取 模块结构 模块特点 类PSP设计,采用四个并行分支提取不同维度的信息相比于…...

ECharts graphic 的学习

ECharts 的 graphic 属性用于在图表中自定义图形元素(如文本、形状、图片等),实现更灵活的视觉效果增强或交互设计。以下是结合搜索结果的整理与分析: 一、graphic 的核心功能 自定义图形类型 支持多种基础图形元素,包…...

Springboot快速接入豆包大模型

背景 突然接到上面的通知,想要在系统里面接入各大模型的能力,我这边随机选了个豆包,然后快速对接了一下,很顺利,一把过,现在文档的快速入门还是很ok的,在此记录一下过程,给宝子们参考…...

DeepSeek的安全挑战和安全控制措施

本研究探讨了与 DeepSeek 相关的安全风险,为安全和风险管理领导者提供了有针对性的策略来缓解这些威胁,并提供了可行的措施来加强基于现有安全控制的 AI 保护。 主要发现 了解 DeepSeek 当前的安全状况。DeepSeek的采用激增暴露了关键的安全挑战&…...

掌握 JavaScript 旋转技术

1. 基本概念 1.1 角度与弧度 在讨论旋转之前,首先需要了解角度和弧度的概念: 角度:通常用度数表示,一个圆周为360度。弧度:数学上更常用的角度单位,一个圆周为2π弧度。 在JavaScript中,大多…...

力扣-贪心-968 监控二叉树

思路 用true和false作为放置了摄像头,会有局限,就是没法判断以下情况 所以要用数字代表三种状态 2:有覆盖1:有摄像头0:无覆盖 两个节点都被覆盖时,要返回0 两个节点有一个无覆盖就要返回1 两个…...

从零开始搭建你的第一个HBase项目:实战经验分享

从零开始搭建你的第一个HBase项目:实战经验分享 数据洪流中的你,准备好了吗? 在大数据时代,数据量的增长速度令人咋舌。面对海量的数据,如何高效地存储、管理和分析成为了一个亟待解决的问题。今天,我们将…...

计算机毕业设计SpringBoot+Vue.js智慧社区(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...