MySQL——1、数据库基础

数据库基础

1、安装MySQL

1、更新软件包列表

bash 复制代码
sudo apt update

2、查看MySQL安装包

bash 复制代码
apt list | grep mysql-server

3、安装MySQL

bash 复制代码
# 默认安装最新版
sudo apt install -y mysql-server

4、启动MySQL

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

bash 复制代码
sudo systemctl start mysql

然后我们查看一下是否存在一个mysqld的进程:

5、配置mysqld.cnf文件

bash 复制代码
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服务。

bash 复制代码
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。

相关推荐
极限实验室25 分钟前
搭建持久化的 INFINI Console 与 Easysearch 容器环境
数据库
白仑色1 小时前
Oracle PL/SQL 编程基础详解(从块结构到游标操作)
数据库·oracle·数据库开发·存储过程·plsql编程
程序猿小D2 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的个人财务管理系统,推荐!
java·数据库·mysql·spring·毕业论文·ssm框架·个人财务管理系统
钢铁男儿3 小时前
C# 接口(什么是接口)
java·数据库·c#
__风__4 小时前
PostgreSQL kv(jsonb)存储
数据库·postgresql
轩情吖4 小时前
Qt的第一个程序(2)
服务器·数据库·qt·qt creator·qlineedit·hello world·编辑框
Databend4 小时前
Databend 产品月报(2025年6月)
数据库
Little-Hu5 小时前
QML TextEdit组件
java·服务器·数据库
保持学习ing7 小时前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
宇钶宇夕8 小时前
EPLAN 电气制图:建立自己的部件库,添加部件-加SQL Server安装教程(三)上
运维·服务器·数据库·程序人生·自动化