【MySQL】数据库基础

欢迎来到Cefler的博客😁

🕌博客主页:折纸花满衣

🏠个人专栏:MySQL


目录

👉🏻什么是数据库?

数据库是一个组织化的数据集合,通常以一种结构化的形式存储、管理和检索数据。它可以是一个简单的文件,也可以是一个大型的、高度复杂的系统。数据库的设计旨在使数据容易访问、管理和更新。它们在许多领域都有广泛的应用,包括企业管理、科学研究、教育、电子商务等等。

数据库通常由一个或多个表组成,每个表包含一系列相关的数据。这些数据按照一定的结构和格式进行组织,并且可以通过查询语言(例如MYSQL)进行检索、更新和删除。数据库还提供了一些功能,如数据完整性约束、安全性控制、事务管理等,以确保数据的一致性、安全性和可靠性。

主流数据库

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

服务器,数据库,表关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多

个数据库,一般开发人员会针对每一个应用创建一个数据库。

为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:

数据库本质:在磁盘或者内存中存储的特定结构组织的数据--将来在磁盘上存储的一套数据库服务方案,你给我字段或者要求,我直接给你结果就行

mysql语言创建数据库

以下是在linux环境下演示创建一个数据库的代码示例:

1.创建数据库

sql 复制代码
create database hellomysql;

/var/lib/mysql目录下可查看创建的数据库目录

2.使用数据库

sql 复制代码
use helloworld;

3.创建数据库表

sql 复制代码
create table student(
	id int,
	name varchar(32),
	gender varchar(2)
);

1.建立数据库,本质就是Linux下的一个目录

2.在数据库中建表,本质就是目录中的一个个文件

4.表中插入数据

sql 复制代码
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');

5.查询表中的数据

sql 复制代码
select * from student;

👉🏻sql分类

SQL(结构化查询语言)是一种用于管理关系型数据库的标准化语言,它可以分为以下几个主要的类别:

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

    • DQL 用于检索数据库中存储的数据,最常见的 DQL 命令是 SELECT。通过 SELECT 命令,可以从数据库中选择需要的数据,并根据条件进行过滤和排序。
  2. 数据操作语言(Data Manipulation Language,DML)

    • DML 用于对数据库中的数据进行操作,包括插入、更新、删除数据等操作。常见的 DML 命令包括 INSERT、UPDATE、DELETE。
  3. 数据定义语言(Data Definition Language,DDL)

    • DDL 用于定义数据库的结构,包括创建和删除数据库、表、索引等对象。常见的 DDL 命令包括 CREATE、DROP、ALTER。
  4. 数据控制语言(Data Control Language,DCL)

    • DCL 用于控制数据库用户的访问权限和安全性,包括授予和撤销权限等操作。常见的 DCL 命令包括 GRANT、REVOKE。
  5. 事务控制语言(Transaction Control Language,TCL)

    • TCL 用于管理数据库中的事务,包括事务的开始、提交、回滚等操作。常见的 TCL 命令包括 COMMIT、ROLLBACK、SAVEPOINT。

这些类别涵盖了 SQL 中常见的命令和操作,用于对数据库进行查询、操作、定义结构和管理安全性等方面的工作。

👉🏻Mysql架构

MySQL 是一个流行的开源关系型数据库管理系统(RDBMS),其架构包括以下主要组件:

  1. 连接管理器(Connection Manager):负责管理客户端与服务器之间的连接。它处理新的连接请求、验证用户身份、分配线程等。

  2. 查询解析器与优化器(Query Parser and Optimizer) :当客户端发送查询请求时,查询解析器负责解析查询语句,将其转换为内部数据结构。优化器则负责分析查询,并尝试找到最有效的执行计划,以提高查询性能。

  3. 存储引擎(Storage Engine) :MySQL 支持多种存储引擎,每种引擎都负责管理数据的存储和检索。常见的存储引擎包括 InnoDBMyISAMMemory 等,每种引擎都有其特定的优点和适用场景。

  4. 查询缓存(Query Cache):MySQL 可以缓存查询结果,以提高相同查询的性能。但在一些情况下,查询缓存可能会降低性能,因此在一些版本中已经被弃用。

  5. 日志模块(Logging Module):MySQL 使用多种日志来记录系统活动,包括二进制日志(Binary Log)、错误日志(Error Log)、查询日志(Query Log)等。这些日志对于故障排除、恢复和性能调优都非常重要。

  6. 事务管理器(Transaction Manager):MySQL 支持事务,事务管理器负责实现事务的 ACID 属性(原子性、一致性、隔离性、持久性),以确保数据的完整性和一致性。

  7. 权限与安全模块(Security and Privileges Module):MySQL 提供了灵活的权限管理机制,可以控制用户对数据库、表和其他对象的访问权限。此外,MySQL 还支持 SSL 加密等安全特性。

存储引擎

存储引擎是数据库管理系统中的一个重要组件,负责管理数据的存储和检索。不同的存储引擎具有不同的特性和优缺点,适用于不同的使用场景。

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法

linux下查看存储引擎

sql 复制代码
show engines;

在 MySQL 中,常见的存储引擎包括以下几种:

  1. InnoDB

    • InnoDB 是 MySQL 默认的存储引擎,它支持事务和行级锁定,提供了高并发和高可靠性的特性。InnoDB 也支持外键约束、崩溃恢复等功能,适用于大多数 OLTP(联机事务处理)场景。
  2. MyISAM

    • MyISAM 是 MySQL 较早的存储引擎,它不支持事务,但具有较高的性能和简单的结构。MyISAM 适合于读操作频繁、写操作较少的场景,如数据仓库、日志分析等。
  3. Memory

    • Memory 存储引擎将数据存储在内存中,因此具有非常高的读写性能。但是,由于数据存储在内存中,数据库重启时数据会丢失。Memory 引擎适用于临时表、缓存等场景。
  4. Archive

    • Archive 存储引擎专门用于存储归档数据,它采用压缩算法存储数据,适合于数据归档和备份。
  5. CSV

    • CSV 存储引擎将数据以 CSV(逗号分隔值)格式存储在文本文件中,适用于数据导入和导出操作。
  6. Blackhole

    • Blackhole 存储引擎实际上不存储任何数据,它将所有写入操作都忽略,适用于数据复制和分发场景。
  7. NDB Cluster

    • NDB Cluster 存储引擎是 MySQL Cluster 的一部分,它提供了高可用性和分布式存储的特性,适用于大规模的分布式应用。

让我们来用一个幽默的比喻来解释存储引擎的作用:

想象一下你正在组装一座超级豪华的乐高城堡。城堡的不同部分需要用不同类型的乐高块来构建,而每种类型的乐高块都有自己的特性。

  • InnoDB 块 :这些块是城堡的主要支柱,非常坚固且能够相互连接。它们负责支撑整个城堡的结构,并确保城堡稳固耐用。当你需要城堡变得更加结实时,InnoDB 块是首选。

  • MyISAM 块 :这些块很轻便,快速组装,但不够稳固。它们适合用于城堡的一些简单装饰部分,比如花园中的小树屋或者塔楼的旗杆。虽然它们不够坚固,但在一些不需要太多支撑的地方使用它们可以节省时间和成本。

  • Memory 块 :这些块非常快速,但它们有一个大问题------它们都是用冰淇淋做的!虽然冰淇淋块组成的城堡看起来很诱人,但一旦太阳一出来,整个城堡就会融化。因此,Memory 块适合用于制作临时的城堡,比如在一个冰雪节庆典上展示一天后就会融化的城堡。

  • Archive 块 :这些块非常节省空间,因为它们可以压缩成小小的立方体。它们适合用于城堡中的一些旧档案,比如古老的地图和传说。

通过这个比喻,你可以更好地理解存储引擎的作用:它们就像乐高城堡的不同类型的块一样,负责构建和管理数据库的不同部分,以满足不同的需求和要求。


如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长

相关推荐
mmsx1 小时前
android sqlite 数据库简单封装示例(java)
android·java·数据库
zpjing~.~2 小时前
Mongo 分页判断是否有下一页
数据库
2401_857600952 小时前
技术与教育的融合:构建现代成绩管理系统
数据库·oracle
秋恬意2 小时前
Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别
java·数据库·mybatis
潇湘秦3 小时前
一文了解Oracle数据库如何连接(1)
数据库·oracle
雅冰石3 小时前
oracle怎样使用logmnr恢复误删除的数据
数据库·oracle
web前端神器3 小时前
mongodb给不同的库设置不同的密码进行连接
数据库·mongodb
从以前3 小时前
Berlandesk 注册系统算法实现与解析
数据库·oracle
Muko_0x7d23 小时前
Mongodb
数据库·mongodb
Ren_xixi3 小时前
redis和mysql的区别
数据库·redis·mysql