面试八股文--数据库基础知识总结(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

记得给个小心心♥~

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

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

相关文章

关于在java项目部署过程MySQL拒绝连接的分析和解决方法

前言 在最近一次部署项目一次项目部署过程中,由于没有对MySQL数据库的部分权限和远程连接进行授权,导致了在执行项目功能API时,出现MySQL连接异常或MySQL拒绝连接的问题。 问题 以下是部分报错截图: 分析 根据日志提示&#xf…

PhotoLine绿色版 v25.00:全能型图像处理软件的深度解析

在图像处理领域,PhotoLine以其强大的功能和紧凑的体积,赢得了国内外众多用户的喜爱。本文将为大家全面解析PhotoLine绿色版 v25.00的各项功能,帮助大家更好地了解这款全能型的图像处理软件。 一、迷你体积,强大功能 PhotoLine被誉为迷你版的Photoshop,其体积虽小,但功能却…

阿里重磅模型深夜开源;DeepSeek宣布开源DeepGEMM;微软开源多模态AI Agent基础模型Magma...|网易数智日报

阿里重磅模型深夜开源:表现超越Sora、Pika,消费级显卡就能跑 2月26日,25日深夜阿里云视频生成大模型万相2.1(Wan)正式宣布开源,此次开源采用Apache2.0协议,14B和1.3B两个参数规格的全部推理代码…

002 Java操作kafka客户端

Java操作kafka客户端 文章目录 Java操作kafka客户端3.Java操作kafka客户端1.引入依赖2. Kafka服务配置3、生产者(Producer)实现1. 基础配置与发送消息2. 关键配置说明 4.消费者(Consumer)实现1. 基础配置与消费消息2. 关键配置说明…

【SRC实战】信息泄露导致越权会员功能

01 — 漏洞证明 1、VIP功能 2、SVIP功能 3、点击任意用户发起私聊,发现userId纯数字可遍历 4、返回包泄露身高范围height,星座constellation,属相zodiac,恋爱目标purpose,教育程度degree,成功越权VIP功能 …

游戏引擎学习第125天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾并为今天的内容做准备。 昨天,当我们离开时,工作队列已经完成了基本的功能。这个队列虽然简单,但它能够执行任务,并且我们已经为各种操作编写了测试。字符串也能够正常推送到队…

蓝桥杯 Java B 组之记忆化搜索(滑雪问题、斐波那契数列)

Day 5:记忆化搜索(滑雪问题、斐波那契数列) 📖 一、记忆化搜索简介 记忆化搜索(Memoization) 是一种优化递归的方法,它利用 哈希表(HashMap)或数组 存储已经计算过的结果…

反爬虫策略

反爬虫策略是网站用于防止自动化程序(爬虫)恶意抓取数据的核心手段,其设计需兼顾有效性、用户体验和合法性。 一、 基础检测与拦截 User-Agent检测:验证请求头中的User-Agent,拦截非常见或已知爬虫标识。IP频率限制&…

Java 实现快速排序算法:一条快速通道,分而治之

大家好,今天我们来聊聊快速排序(QuickSort)算法,这个经典的排序算法被广泛应用于各种需要高效排序的场景。作为一种分治法(Divide and Conquer)算法,快速排序的效率在平均情况下非常高&#xff…

深入解析 Spring 中的 BeanDefinition 和 BeanDefinitionRegistry

在 Spring 框架中,BeanDefinition 和 BeanDefinitionRegistry 是两个非常重要的概念,它们共同构成了 Spring IoC 容器的核心机制。本文将详细介绍这两个组件的作用、实现以及它们之间的关系。 一、BeanDefinition:Bean 的配置描述 1.1 什么…

《OpenCV》——光流估计

什么是光流估计? 光流估计的前提? 基本假设 亮度恒定假设:目标像素点的亮度在相邻帧之间保持不变。这是光流计算的基础假设,基于此可以建立数学方程来求解光流。时间连续或运动平滑假设:相邻帧之间的时间间隔足够小&a…

信息系统的安全防护

文章目录 引言**1. 物理安全****2. 网络安全****3. 数据安全****4. 身份认证与访问控制****5. 应用安全****6. 日志与监控****7. 人员与管理制度****8. 其他安全措施****9. 安全防护框架**引言 从技术、管理和人员三个方面综合考虑,构建多层次、多维度的安全防护体系。 信息…

如何进行OceanBase 运维工具的部署和表性能优化

本文来自OceanBase 用户的实践分享 随着OceanBase数据库应用的日益深入,数据量不断攀升,单个表中存储数百万乃至数千万条数据的情况变得愈发普遍。因此,部署专门的运维工具、实施针对性的表性能优化策略,以及加强指标监测工作&…

如何防止 Instagram 账号被盗用:安全设置与注意事项

如何防止 Instagram 账号被盗用:安全设置与注意事项 在这个数字化时代,社交媒体平台如 Instagram 已成为我们日常生活的一部分。然而,随着网络犯罪的增加,保护我们的在线账户安全变得尤为重要。以下是一些关键的安全设置和注意事…

Redis|复制 REPLICA

文章目录 是什么能干嘛怎么玩案例演示复制原理和工作流程复制的缺点 是什么 官网地址:https://redis.io/docs/management/replication/Redis 复制机制用于将数据从一个主节点(Master)复制到一个或多个从节点(Slave)&a…

对象存储之Ceph

Ceph 对象存储概述 Ceph 是一个开源分布式存储系统,旨在提供高度可扩展、高度可用、容错、性能优异的存储解决方案。它结合了块存储、文件系统存储和对象存储的功能,且在设计上具有极高的可扩展性和灵活性。 在 Ceph 中,对象存储&#xff0…

Document对象

DOM4j中,获得Document对象的方式有三种: 1.读取XML文件,获得document对象 SAXReader reader new SAXReader(); Document document reader.read(new File("input.xml")); 2.解析XML形式的文本,得到document对象…

树莓集团南京产业园再布局:深入剖析背后逻辑

在产业园区蓬勃发展的当下,树莓集团在南京的产业园再布局行动备受瞩目。这一举措并非偶然,其背后蕴含着深刻且多元的战略逻辑。 一、顺应区域产业发展趋势 南京作为长三角地区的重要城市,产业基础雄厚且多元。近年来,南京大力推动…

Pytorch实现之脑电波图像生成

简介 简介:采用双GAN模型架构来生成脑电波与目标图像。 论文题目:Image Generation from Brainwaves using Dual Generative Adversarial Training(使用双生成对抗训练的脑电波图像生成) 会议:IEEE Global Conference on Consumer Electronics (GCCE) 摘要:表示通过无…