当前位置: 首页 > article >正文

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

文章目录

  • MySQL
    • 1. 数据库的介绍
      • 1.2 主流数据库
    • 2. MySQL的介绍
      • 2.1 MySQL架构
      • 2.2 SQL分类
      • 2.3 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的基本使用

连接服务器

mysql -h 127.0.0.1 -P 3306 -u root -p
mysql -u root -p

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

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

在这里插入图片描述

  

查询数据库

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

show databases;

在这里插入图片描述

  

创建数据库

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

create database database_test;

在这里插入图片描述

  

使用数据库

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

use database_test;

在这里插入图片描述

  数据库修改成功。

  

创建数据库表

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

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

> create table person(
-> id int,
-> name varchar(32),
-> gender varchar(2)
-> );

在这里插入图片描述

  数据库表创建成功。
  
  

查看数据库表的信息

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

desc database_test;

在这里插入图片描述

  

表中插入数据

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

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, '赵六'); 注意前后()中的内容匹配即可。

insert into person (id, name) values (3, '赵六');

在这里插入图片描述

  

查询表中的数据

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

select * from person;

在这里插入图片描述

  

删除数据库表的数据

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

delete from person where id=3;

在这里插入图片描述
  

删除数据库

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

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

  

查看存储引擎

show engines\G;

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

在这里插入图片描述
  

在这里插入图片描述


http://www.kler.cn/a/233915.html

相关文章:

  • PANet:路径聚合网络——实例分割的创新之路
  • IPsec VPN配置实验(固定地址)
  • 运行StableDiffusionInpaintPipeline的Example时报错:OSError: Cannot load model runwayml/stable-diffusion-...
  • C++:单例模式
  • 前端开发 -- 自动回复机器人【附完整源码】
  • Spring事务回滚
  • Matlab使用点云工具箱进行点云配准ICP\NDT\CPD
  • 软件应用实例分享,电玩计时计费怎么算,佳易王PS5游戏计时器系统程序教程
  • 【工具】Android|Android Studio 长颈鹿版本安装下载使用详解
  • windows安装sqlite
  • C语言实现memcpy、memmove库函数
  • C++初阶:适合新手的手撕vector(模拟实现vector)
  • YOLOv5改进 | 融合改进篇 | 华为VanillaNet + BiFPN突破涨点极限
  • 探索Xposed框架:个性定制你的Android体验
  • go语言实现LRU缓存
  • Qt:QFileDialog
  • java Servlet 云平台教学系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc
  • 【深度学习】:实验6布置,图像自然语言描述生成(让计算机“看图说话”)
  • 算法学习——LeetCode力扣双指针篇
  • LeetCode467. Unique Substrings in Wraparound String——动态规划
  • 图形学:Transform矩阵(3维 2维) 平移,旋转,缩放
  • 力扣738单调递增的数字思路以及贪心总结
  • centos 7.6 安装 openldap 2.5.17
  • Spring基础 - SpringMVC请求流程和案例
  • 图神经网络与图表示学习: 从基础概念到前沿技术
  • 【Linux】POSIX信号量基于环形队列的生产消费模型