MySQL——1、数据库基础

发布于:2025-05-16 ⋅ 阅读:(13) ⋅ 点赞:(0)

1、安装MySQL

1、更新软件包列表

sudo apt update

2、查看MySQL安装包

apt list | grep mysql-server

在这里插入图片描述

3、安装MySQL

# 默认安装最新版
sudo apt install -y mysql-server

4、启动MySQL
安装成功后我们需要启动mysql服务

sudo systemctl start mysql

然后我们查看一下是否存在一个mysqld的进程:
在这里插入图片描述

5、配置mysqld.cnf文件
在这里插入图片描述

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

提权使用vim打开该文件进行配置,在文件最后加入以下内容:
skip-grant-tables
character-set-server=utf8
default-storage-engine=innodb
在这里插入图片描述
第一行配置表示配置root免密码登录,我们后面会设置密码。第二行配置编码为utf8。第三行设置默认存储引擎为innodb。
配置好后保存退出,然后使用以下命令重启mysql服务。

sudo systemctl restart mysql

6、访问数据库服务
在这里插入图片描述
-h指明登录部署了mysql服务的主机,实际上mysql是一个网络服务。-P指明要访问的端口号。-u指明登录用户。-p指明需要输入密码。然后我们直接回车就会发现登录失败,这是因为上面配置了免密码登录导致mysql并没有成网络服务,我们使用netstat -tnlp是看不到端口号为3306的网络服务的,这个我们后面用户管理设置了密码再将配置的免密码登录删掉。

我们直接使用mysql -uroot -p登录,不需要输入密码直接回车即可。如果要退出输入quit即可。
在这里插入图片描述


2、什么是数据库

在这里插入图片描述
1、mysql是数据库服务的客户端。
2、mysqld是数据库服务的服务端。
3、mysql本质上是基于C(mysql) S(mysqld)模式的一种网络服务。

mysql是一套给我提供数据存储服务的网络程序。
数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据——将来在磁盘上存储的一套数据库方案。数据库服务——mysqld。

存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:文件的安全性问题、文件不利于数据查询和管理、文件不利于存储海量数据、文件在程序中控制不方便。数据库存储介质:磁盘、内存。
数据库本质:对数据内容存储的一套解决方案,你给我字段或者要求,我直接给你结果。

在这里插入图片描述
如图,原来我们用户是直接和磁盘上的文件打交道的,现在我们通过mysql客户端访问服务器上的mysqld服务端,然后服务端将SQL进行分析然后去操作磁盘上的数据库文件,获取到结果后再将结果返回给mysql客户端。

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

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

在这里插入图片描述


3、数据库使用案例

样例:使用mysql建立一个数据库,建立一张表结构,插入一些数据。看看数据库在Linux中是如何表现的。

1、首先登录数据库:mysql -uroot -p
在这里插入图片描述

2、查看所有数据库:show databases;
在这里插入图片描述
登入root账户,或者使用sudo提权,查看/var/lib/mysql下的文件,对比左边的数据库,我们发现数据库本质上就是在Linux下的一个目录。

3、创建一个数据库:create database helloworld;
在这里插入图片描述
建立数据库,本质上就是在Linux下创建一个目录。

4、使用数据库,相当于进入该目录:use helloworld;
在这里插入图片描述

5、创建数据库表
在这里插入图片描述
创建数据库表的语法如图左侧,首先是列的名称,然后是属性,多个列以逗号分隔开。创建后进入该数据库目录下可以看到多了一个student.ibd的文件。

6、插入数据
在这里插入图片描述
使用insert into 表名,向数据库的某个表插入数据。

7、查询表中数据
在这里插入图片描述
如图,查询的数据信息是逻辑存储结构。


4、MySQL架构与SQL分类

MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
在这里插入图片描述
首先mysql服务端的最上面是一个连接池,进行连接管理和安全验证的。然后连接池下面就是用来进行SQL语法分析解析优化的,然后将它们交给再下一次的存储引擎,存储引擎再去操作磁盘上的文件。不同的存储引擎适用于不同类型的存储数据。

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。

5、存储引擎

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

在这里插入图片描述
使用show engines \G可以查看当前数据库支持的存储引擎。或者使用show engines。
在这里插入图片描述
虽然存储引擎这么多,但是我们主要使用的还是InnoDB和MyISAM这两种存储引擎。我们在最初配置的存储引擎也是InnoDB。


网站公告

今日签到

点亮在社区的每一天
去签到