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

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


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

相关推荐
valkyrja1108 分钟前
aws 小白入门,VPC 子网、路由表、互联网网关
aws·入门·vpc·路由表·子网·互联网网关
杨江8 分钟前
ThingsBoard安装测试
服务器·数据库
mit6.82417 分钟前
[Redis#4] string | 常用命令 | + mysql use:cache | session
数据库·redis·后端·缓存
Beekeeper&&P...1 小时前
map和redis关系
数据库·redis·缓存
jianqimingtian1 小时前
如何使用 Matlab 制作 GrabCAD 体素打印切片
数据结构·数据库
真真假假々1 小时前
MySQL和ADSDB
数据库·mysql
秦老师Q1 小时前
MySQL第二章 sql约束与sql数据类型
数据库·sql·mysql
不是二师兄的八戒1 小时前
mysql in查询大数据量业务无法避免情境下优化
数据库·mysql
苹果醋31 小时前
vue3 在哪些方便做了性能提升?
java·运维·spring boot·mysql·nginx
----云烟----2 小时前
Qt获取文件夹下的文件个数(过滤和不过滤的区别)
数据库·qt