数据库-理论基础

目录

1.什么是数据库?

2.数据库与文件系统的区别?

3.常见的数据库由那些?

[4.关系型数据库(MySQL)的特征及组成结构介绍](#4.关系型数据库(MySQL)的特征及组成结构介绍)


1.什么是数据库?

数据:描述事物的符号记录,可以是数字,文字,图形,声音,语言等多种形式,他们都可以经过数字化后存入计算机

数据库:存储数据的仓库,是长期存放在计算机内,有组织,可共享的大量 数据集合。数据库中的数据按照一定数据模型组织,描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享。总结为一下几点

  • 数据结构化
  • 数据的共享性,冗余度低,易扩充
  • 数据独立性高
  • 数据由DBMS统一管理和控制(安全性,完整性,并发控制,故障恢复)解释:DBMS数据库管理系统 (能够操作和管理数据库的大型软件)

2.数据库与文件系统的区别?

文件系统:文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称为文件系统

数据库系统:数据库管理系统(DMS) 是一种操纵和管理数据库的大型软件,用于建立,使用和维护数据库,简称DBMS.他对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

对比和区别:

1.管理对象不同:文件系统的管理对象是文件,并非直接对数据进行管理,不同的数据结构需要使用不同的文件类进行保存(例如:txt文件和doc 文件不能通过修改文件名称完成转换)而数据库直接对数据进行存储和管理

2.存储方式不同:文件系统使用不同的文件将数据分类(.doc/.mp4/.jpg)保存在外部存储上;数据库系统使用标准统一的数据类型进行数据保存(字母 数字 符号 时间)

3.调试数据的方式不同:文件系统使用不同软件打开不同类型的文件;数据库系统由DBMS统一调用和管理。如下图

优缺点总结:

  • 由于DBMS 的存在,用户不在需要了解数据存储和其他实现的细节,直接通过DBMS就能获取数据,为数据的使用带来极大的便利
  • 具有以数据为单位的共享性,具有数据的并发访问能力。DBMS保证了在访问时数据的一致性。
  • 低延时访问,典型例子就是线下支付系统的应用,支付规模局的的时候,数据库系统的表现远远优于文件系统
  • 能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖DBMS来对数据进行操作且对性能的消耗相比文件系统比较小
  • 对事物的支持。DBMS支持事务,即一系列对数据的操作集合要么都完成,要么不完成。在DBMS上对数据的各种操作都是原子级的

3.常见的数据库由那些?

关系型数据库

关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。简单的来说关系型数据库由多张能互相联系的二维行列表组成的数据库。

关系模型 就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系数据库有Oracle,DB2,Microsoft SQL Server,Microsoft Acess,MySQL,浪潮 K-DB 等

实体关系模型 简称 E-R 模型,是一套数据库设计的工具,它运用真实世界种事物与关系的观念,来解释税局库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图)来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论

非关系型数据库

非关系型数据库:又称为NoSQL (Not Only SQL ),意为不仅仅是SQL 是一种轻量,开源,不兼容 SQL 功能的数据库,对NoSQL 最普遍的定义为"非官联型的" 强调Key-Value 存储和文档数据库的优点,而不是单纯的地反对RDBMS (关系型数据库管理系统)

4.关系型数据库(MySQL)的特征及组成结构介绍

关系型数据库的发展历程

1.层次模型

2.网状模型

关系模型

关系模型以二维标结构来表示实体与实体之间的联系,关系模型的数据结构是一个"二维表框架" 组成的集合。每一个二维表又可称为关系。在关系模型中,操作的对象和结果都是二维表。

关系模型是目前最流行的数据库模型。支持关系模型的数据库管理系统称为关系数据库管理系统,Access就是一种关系数据管理系统。图所示为一个简单的关系模型,其中图(a)所示为关系模式,图(b)所示为这两个关系模式型的关系,关系名称分为教师关系和课程关系,每个关系均含3个元组,其主码均为"教师编号"。

在关系模型中基本数据结构是二维表,不想层次或网状那样的连接指针。记录之间的联系是通过不同关系哦中同名属性来体现的。关系模型中的各个关系模式不是应当孤立的,也不是随意拼凑的一堆二维表,它必须满足相应的要求。

关系式数据库的组成结构和名词解释

数据以表格的形式出现,每行为单独的一条记录,每列为一个单独的字段,许多的记录和字段组成一张表(table) 若干的表单组成库(database)

  • 记录(一条数据) 在数据库当中,表当中的行称为记录
  • 字段 (id name .......) 在数据库当中,表当中的称之为字段。
  • MySQL 数据类型

数据类型用于指定特殊字段所包含数据的规则,它决定了数据保存在字段里的方式,包括分配给字段的宽度,以及值是否可以是字母,数字,日期,和时间等。任何数据或数据的组合都对于的数据类型,用于存储字母,数字,日期和时间,图像,二进制数据等。数据类型是数据本身的特征,其特性被设置到表里面的字段。

MySQL 常见基础数据类型

1.字符串类型 (CHAR (0-255 固定长度)VARCHAR(0-255可变长度))

2.数值类型(INT(整数型)FLOATI(浮点型))

3.日期和时间类型(DATE(年月日),TIME(时分秒))

  • MySQL 约束类型

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性,唯一性。

1.主键约束primary key 主键约束相当于唯一约束+飞空约束的组合,主键约束不允许重复,也不预序出现空值。每个表最多只允许一个主键,建立主键约束可以在列表级别创建,也可以在表示级别创建。当创建主键的约束时,系统默认会在所有的列列组合上建立对应的唯一索引。

2.外键约束 foregin key 外键约束时保证一个或两个表之间的参照完整性,外键时构建于一个表的两个字段或是两个表的两个字段之间的参照关系

3**.唯一约束**unique 唯一约束是指table 表的列或列表不能重复,保证数据的唯一性。唯一性约束不允许出现重复的值,但是可以为多个null.同一个表可以又多个唯一约束,多个列表组合的约束。在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。

4.非空约束 not null 与默认值 default : 非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。Null 类型特征:所有的类型的值都可以时null 包括 int float 等数据类型。

  • MySQL 索引

索引是一个单独的,物理的数据库结构,它是某一个字段或若干字段的集合。表的存储由两部分组成,一部分用来存放数据,另一部分存放索引页面。通常,索引页面相对于数据页面来说小的多。数据检索花费的大部分开销是磁盘读写,没有索引就需要从磁盘上读表的每一个数据页,如果有索引,则只需查找索引页面就可以了。所以建立合理的索引,就能加速数据的检索过程。

  • MySQL 锁

数据库是一个多用户的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事物同时存取同一数据地情况。若对并发操作不加控制就可能会读取和存储不正确地数据,破环数据库地一致性。

加锁是实现数据库并发控制地一个非常重要的技术。当事物在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事物就对该数据对象有了一定的控制,在该事务释锁之前,其他事物不能对此数据对象进行更新操作。

  • MySQL 的存储引擎

存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,而不是基于库的。所以存储引擎页可以被称为表类型。Oracle,SqlServer 等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL 存在多种存储引擎。可以根据需要使用相应引擎,或者编写存储引擎。

MYISAM:默认引擎,插入和查询速度较快,支持全文索引,不支持事务,行级锁和外键约束等功能。

INNODB: 支持事物,行级锁和外键约束等功能

MEMORY: 工作在内存中,通过散列字段保存数据,速度快,不能永久保存数据

  • 事务 (Transaction) 是并发控制的基本单位

可以把一系列要执行的操作称为事务,而事务管理就是管理这些操操作要么完全执行,要么完全不执行

经典案例:银行转账工作,从一个账号扣款 并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保存数据的一致性。

注意:mysql 中并不是所有的数据引擎都支持事务管理的,只有 innodb 支持事务管理。

相关推荐
Elastic 中国社区官方博客5 小时前
在 Elasticsearch 中使用 Mistral Chat completions 进行上下文工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
编程爱好者熊浪6 小时前
两次连接池泄露的BUG
java·数据库
TDengine (老段)8 小时前
TDengine 字符串函数 CHAR 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
qq7422349848 小时前
Python操作数据库之pyodbc
开发语言·数据库·python
姚远Oracle ACE9 小时前
Oracle 如何计算 AWR 报告中的 Sessions 数量
数据库·oracle
Dxy12393102169 小时前
MySQL的SUBSTRING函数详解与应用
数据库·mysql
码力引擎9 小时前
【零基础学MySQL】第十二章:DCL详解
数据库·mysql·1024程序员节
杨云龙UP9 小时前
【MySQL迁移】MySQL数据库迁移实战(利用mysqldump从Windows 5.7迁至Linux 8.0)
linux·运维·数据库·mysql·mssql
l1t9 小时前
利用DeepSeek辅助修改luadbi-duckdb读取DuckDB decimal数据类型
c语言·数据库·单元测试·lua·duckdb
安当加密10 小时前
Nacos配置安全治理:把数据库密码从YAML里请出去
数据库·安全