MySQL数据库基础

1. 数据库概念

1.1 什么是数据库

存储数据用文件就可以了,为什么还要弄个数据库?

一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据内容管理能力(站在用户角度)。

文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

数据库的本质:对数据内容存储的一套解决方案,你给我字段或者要求,我直接给你结果就行。

数据库存储介质:磁盘、内存。

为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标

  • 数据库是在 20 世纪 60 年代末发展起来的一项重要技术,20 世纪 70 年代以来数据库技术得到迅猛发展,已经成为计算机科学与技术的一个重要分支。数据库技术和系统已经成为信息基础设施的核心技术和重要基础,数据库技术作为数据管理的最有效的手段,极大地促进了计算机应用的发展。数据库技术主要是用来解决数据处理的非数值计算问题,数据处理的主要内容是数据的存储、查询、修改、排序和统计等。

  • 数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。——来自数据库(电子化的文件柜)_百度百科 (baidu.com)

1.2 MySQL是什么

MySQL到底是什么呢?

[MySQL](MySQL(关系型数据库管理系统)_百度百科 (baidu.com))是一个关系型数据库管理系统,由瑞典 [MySQL AB](https://baike.baidu.com/item/MySQL AB/2620844?fromModule=lemma_inlink) 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。

在Linux中看看MySQL这个文件。

QQ_1721875983465

可以看到不仅有mysql文件,也有一个mysqld文件。

  1. mysql是数据库服务的客户端
  2. mysqld是数据库服务的服务器端,后缀带d也就证明它是一个守护进程。
  3. MySQL的本质:基于C(mysql)S(mysqld)模式的一种网络服务。

使用netstat -lntp查看一下

QQ_1721876419738

由此证明MySQL是一个服务端。

2. 主流数据库

  1. MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。广泛使用的开源关系型数据库管理系统,具有高性能、易用性和丰富的功能。
  2. Oracle:甲骨文产品,复杂的业务逻辑,并发一般来说不如MySQL。功能强大、稳定可靠的商业数据库,适用于大型企业级应用。
  3. Microsoft SQL Server:微软开发的关系型数据库,与 Windows 系统集成良好,提供了全面的企业级功能,.Net程序员的最爱,适合中大型项目。
  4. PostgreSQL:加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。开源的对象关系型数据库,具有高度的可扩展性和强大的功能。
  5. MongoDB:非关系型的文档数据库,适用于处理大量的非结构化和半结构化数据。
  6. Redis:内存数据结构存储,常用于缓存、会话存储和实时数据处理。
  7. SQLite:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了,常用于移动应用和小型项目。
  8. H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

3. MySQL的基本使用

MySQL的基本安装已经讲述过了,具体方法可以跳转这里

MySQL的安装-CSDN博客

3.1 连接服务器

在命令行输入:

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

解释一下选项:

  • -h:指明登录部署了MySQL服务的主机
  • -P:指明我们要访问的端口号
  • -u:指明登录用户
  • -p:指明需要输入密码

注意:

  • 如果没有-h [IP地址]选项,默认是连接本地,也就是 127.0.0.1
  • 如果没有-P [端口号]选项,默认是连接3306端口号。(这与你的配置文件有关系,如果你配置的是别的端口号那么默认连接的就不是3306了)

3.2 使用案例

存放MySQL数据的目录:/var/lib/mysql

  1. 创建一个helloworld数据库
create database helloworld;

QQ_1721896088196

可以看到我们现在多了一个helloworld数据库

QQ_1721896143686

然后再/var/lib/mysql目录下我们也发现多了个helloworld文件。

QQ_1721896478968

  1. 使用数据库,也就是选择数据库
use helloworld;
  1. 创建数据库表
create table student(
    name varchar(32),
    age int,
    gender varchar(32)
);
  1. 向表中插入数据
insert into student (name, age, gender) values ('王一', 22, '男');
insert into student (name, age, gender) values ('李子', 23, '女');
insert into student (name, age, gender) values ('Felix', 24, 'female');

如果在插入的时候出现1366号错误,证明字符的编码不合适,执行下列语句即可。

ALTER TABLE student MODIFY name VARCHAR(32) CHARACTER SET utf8mb4;
ALTER TABLE student MODIFY gender VARCHAR(32) CHARACTER SET utf8mb4;
  1. 查询表中的数据
select * from student;

QQ_1721899163004

这就是MySQL的逻辑存储结构

3.3 服务器、数据库、表关系

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器、数据库和表的关系如下:

QQ_1721901020070

4. MySQL架构

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

MySQL 的架构主要由以下几个部分组成:

  1. 连接层

处理客户端的连接请求,包括验证用户身份、权限等。

  1. 服务层
  • 包括查询缓存:缓存查询结果以提高性能,但在某些复杂场景下可能导致问题,新版本中该功能逐渐被弱化。

  • 解析器:对 SQL 语句进行语法和语义分析。

  • 优化器:选择最优的查询执行计划。

  1. 存储引擎层

存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。MySQL的核心就是插件式存储引擎,支持多种存储引擎。

  • MySQL 支持多种存储引擎,如 InnoDB、MyISAM 等。每种存储引擎具有不同的特点和适用场景。
  • 常见的 InnoDB 支持事务、行级锁定、外键等,适合对数据完整性和并发要求较高的场景。
  • MyISAM 不支持事务,但在某些只读或读多写少的场景中可能具有较好的性能。

查看存储引擎:

show engines;

QQ_1721902813213

  1. 数据存储层

实际存储数据的物理文件,包括数据文件、索引文件、日志文件等。

其中,InnoDB 是 MySQL 中最常用的存储引擎之一,其采用了聚簇索引、自适应哈希索引等技术来提高性能和数据的完整性。

不同的架构组件协同工作,以实现高效的数据存储、查询处理和并发控制

5. SQL分类

  • DDL(data definition language)数据定义语言,用来维护存储数据的结构。代表指令:create、drop、alter

  • DML(data manipulation language)数据操纵语言,用来对数据进行操作。代表指令: insert、delete、update

    • DML中又单独分了一个DQL,数据查询语言,代表指令:select
  • DCL(Data Control Language)数据控制语言,主要负责权限管理和事务。代表指令:grant、revoke、commit

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值