【MySQL】数据库的基础——数据库的介绍、MySQL的介绍和架构、SQL分类、MySQL的基本使用、MySQL的存储引擎

文章目录

  • MySQL
    • [1. 数据库的介绍](#1. 数据库的介绍)
      • [1.2 主流数据库](#1.2 主流数据库)
    • [2. MySQL的介绍](#2. MySQL的介绍)
      • [2.1 MySQL架构](#2.1 MySQL架构)
      • [2.2 SQL分类](#2.2 SQL分类)
      • [2.3 MySQL的基本使用](#2.3 MySQL的基本使用)
      • [2.4 MySQL存储引擎](#2.4 MySQL存储引擎)

MySQL

1. 数据库的介绍

**  数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。它是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。**

数据库是一个文件集合,本质就是一个文件系统,它按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作。这些数据可以是数字、文字、图形、图像、声音、语言等,它们被存放在结构化的数据表里,并按一定顺序排列组合。

数据库具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)四个特性。根据数据结构的不同,数据库通常分为关系型数据库(SQL)和非关系型数据库(NoSQL)。 关系型数据库如Oracle、MySQL、SQL Server等,具有易于维护、使用方便、多表复杂操作友好度高等优点,但大批量数据的读写效率较差,表结构固定,灵活度稍欠。非关系型数据库如Redis、MongoDB等,则具有存储数据的格式灵活、速度快效率高、可扩展性强等优点,但不支持或有限支持SQL,数据结构相对复杂,学习和使用的成本高。

**  数据库管理系统(DBMS)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。** 常见的数据库管理系统有MySQL、SQL Server、Oracle和DB2等。

数据库的发展史可以追溯到最早的通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。随着计算机的广泛应用,传统的文件系统已经不能满足人们对数据共享的需求,于是能够统一管理和共享数据的数据库管理系统应运而生。

在生活中,人们可以直接用中文、英文等自然语言描述客观事物,但在计算机中,需要抽象出对这些事物感兴趣的特征,并组成一个记录来描述。例如,在学生档案中,学生信息是由学号、姓名、性别、年龄、籍贯、联系电话等特征组成的,那么这些具体的特征值所构成的一条记录就是一个学生的信息数据。

1.2 主流数据库

**  SQL Sever** : 微软的产品,.Net程序员的最爱,中大型项目

**  Oracle** : 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。

**  MySQL** :世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。

**  PostgreSQL** :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发

**  SQLite** : 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

**  H2** : 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

2. MySQL的介绍

**  MySQL是一个关系型数据库管理系统(RDBMS),由瑞典的MySQL AB公司开发,目前属于Oracle旗下产品。它是最流行的关系型数据库管理系统之一,** 特别是在WEB应用方面,MySQL被认为是最好的RDBMS应用软件之一。

**  关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这种设计增加了速度并提高了灵活性。** MySQL所使用的SQL(Structured Query Language,结构化查询语言)是用于访问数据库的最常用标准化语言,这使得用户可以通过编写SQL语句来查询、插入、更新和删除数据库中的数据。

**  MySQL软件采用了双授权政策,分为社区版和商业版。** 由于其体积小、速度快、总体拥有成本低,并且开放源代码,MySQL成为了中小型和大型网站开发的首选数据库。此外,MySQL使用C和C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。同时,它为多种编程语言提供了API,方便开发者在不同的编程环境中使用MySQL。

MySQL是一个功能强大、易于使用且经济实惠的关系型数据库管理系统,广泛应用于各种规模的网站和应用程序中。

2.1 MySQL架构

**  MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。** 各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

**  MySQL的架构大致可以分为以下几层:**

(1)网络连接层:提供与MySQL服务器建立连接的支持,支持各种主流的服务器编程技术,如Java、C、Python、.NET等,通过各自的API技术与MySQL建立连接。

(2)服务层:这是MySQL的核心部分,主要包含以下内容:

1. 连接池:负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接。

2. 系统管理和控制工具:如备份恢复、安全管理、集群管理等。

3. SQL接口:用于接受客户端发送的各种SQL命令,并返回用户需要查询的结果,如DML、DDL、存储过程、视图、触发器等。

4. 解析器:负责将请求的SQL解析生成一个"解析树",然后根据一些MySQL规则进一步检查解析树是否合法。

5. 查询优化器:当"解析树"通过解析器语法检查后,将交由优化器将其转化成执行计划,然后与存储引擎交互。

6. 缓存:包括一系列小缓存,如表缓存、记录缓存、权限缓存、引擎缓存等。 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

(3)存储引擎层:负责MySQL中数据的存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,服务器中的查询执行引擎通过接口与存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异。常见的存储引擎有InnoDB、MyISAM、Memory等。InnoDB是MySQL的默认存储引擎,它支持事务、行锁和外键等功能。

此外,MySQL的架构中还包括系统文件层,但这一层通常与存储引擎层紧密相关,因为存储引擎需要与底层系统文件进行交互。

2.2 SQL分类

DDL【Data Definition Language】 数据定义语言,用来维护存储数据的结构,代表指令: create, drop, alter

DML【Data Manipulation Language】 数据操纵语言,用来对数据进行操作,代表指令: insert,delete,update

DQL【Data Query Language】数据查询语言,用来对数据进行查询操作,代表指令: select

DCL【Data Control Language】 数据控制语言,主要负责权限管理,代表指令: grant,revoke,commit

TCL【Transaction Control Language】事务控制语言,用于管理数据库事务,代表指令:commit、rollback

2.3 MySQL的基本使用

连接服务器

sql 复制代码
mysql -h 127.0.0.1 -P 3306 -u root -p
sql 复制代码
mysql -u root -p

**  如果没有写 -h 127.0.0.1 默认是连接本地**

**  如果没有写 -P 3306 默认是连接3306端口号**

查询数据库

通过show databases;操作,我们可以查看到当前MySQL中所拥有的所有数据库。

sql 复制代码
show databases;

创建数据库

通过create databases <数据库的名字>;操作,我们可以创建数据库。

sql 复制代码
create database database_test;

使用数据库

如果我们要对数据库进行下一步操作use <数据库的名字>;,我们要先选择使用那一个数据库。

sql 复制代码
use database_test;

数据库修改成功。

创建数据库表

使用create语句进行我们数据库表的创建 create table <数据库表名>( id int, name varchar(32), gender varchar(2) ); 我们建的表中包含了三个数据分别是id、姓名和性别。

注意SQL语句都是以 ; 结尾的。

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

数据库表创建成功。

查看数据库表的信息

输入desc <数据库表的名字>;我们就可以查看到数据库表的基本信息。

sql 复制代码
desc database_test;

表中插入数据

向数据库表中插入数据insert into <数据库表名> (id, name, gender) values (1, '张三', '男');注意插入()中的信息和上面建表一致即可。

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, '王五', '男');

我们同样可以插入部分的数据insert into <数据库表名> (id, name) values (3, '赵六'); 注意前后()中的内容匹配即可。

sql 复制代码
insert into person (id, name) values (3, '赵六');

查询表中的数据

使用select查询数据库表中的数据,select * from <数据库表名>这里的 * 表示所有的数据。

sql 复制代码
select * from person;

删除数据库表的数据

delete from <表名> where id=3;delete表示删除操作,操作from来自<表名>的数据,且数据的id为3,因为有两条id=3所以删除了两条信息。如果是 delete from <表名>就表示删除表中全部数据。

sql 复制代码
delete from person where id=3;

删除数据库

drop database <数据库名>;drop删除数据库。

sql 复制代码
drop database database_test;

database_test就被删除了。

2.4 MySQL存储引擎

MySQL的存储引擎是数据库底层软件组织,它负责数据的存储、处理和保护。不同的存储引擎提供不同的存储机制、索引技巧、锁级别和事务等功能。MySQL的存储引擎是基于表的,而非数据库。

**  MySQL中最常用的存储引擎包括InnoDB和MyISAM。** InnoDB是MySQL 5.5版本之后的默认存储引擎,它支持事务、提供行级锁,每个表的主键不能为空且支持主键自增长,还支持外键完整性约束。

InnoDB的设计旨在达到处理巨大数据量的最大性能,其CPU效率可能是其他基于磁盘的关系型数据库引擎所无法比拟的。

MyISAM存储引擎则不支持事务和外键,它使用表级锁来控制并发的读写操作,并支持全文索引。MyISAM引擎强调快速读取操作,因此主要用于高负载的SELECT查询,对于没有事务完整性要求的应用,可以使用MyISAM来创建表。

除了InnoDB和MyISAM之外,MySQL还支持其他存储引擎,如Memory、Federated、CSV等,每种存储引擎都有其特定的使用场景和优势。

此外,MySQL的存储引擎是可插拔的,这意味着用户可以根据需要选择和更换存储引擎,以满足不同的应用需求。这种灵活性使得MySQL能够适应各种场景,从简单的个人项目到复杂的企业级应用。

MySQL的存储引擎是数据库管理系统中的重要组成部分,它负责数据的存储、访问和管理,并提供了多种选择以满足不同的应用需求。

查看存储引擎

sql 复制代码
show engines\G;

\G指表示输出格式化,无关字符不进行打印。

相关推荐
猿小喵11 分钟前
DBA之路,始于足下
数据库·dba
tyler_download20 分钟前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang
weixin_449310841 小时前
高效集成:聚水潭采购数据同步到MySQL
android·数据库·mysql
CodingBrother1 小时前
MySQL 和 PostgreSQL 的使用案例
mysql·adb·postgresql
Cachel wood2 小时前
Github配置ssh key原理及操作步骤
运维·开发语言·数据库·windows·postgresql·ssh·github
standxy2 小时前
如何将钉钉新收款单数据高效集成到MySQL
数据库·mysql·钉钉
Narutolxy3 小时前
MySQL 权限困境:从权限丢失到权限重生的完整解决方案20241108
数据库·mysql
Venchill3 小时前
安装和卸载Mysql(压缩版)
数据库·mysql
Humbunklung3 小时前
一种EF(EntityFramework) MySQL修改表名去掉dbo前缀的方法
数据库·mysql·c#
PGCCC4 小时前
【PGCCC】postgresql 缓存池并发设计
数据库·缓存·postgresql