亲爱的小伙伴们,大家好!在这篇文章中,我们将深入浅出地为大家讲解 数据库基础知识 帮助您轻松入门,快速掌握核心概念。
如果文章对您有所启发或帮助,请别忘了 点赞 👍、收藏 🌟、留言 📝 支持!您的每一份鼓励,都是我持续创作的源动力。让我们携手前行,共同进步!
文章目录
- @[toc]
- 1. MySQL 的基本使用方法
- 1.1 连接服务器
- 1.2 Windows 系统开启Mysql服务
- 2. 什么是数据库
- 2.1 mysql 与 mysqld
- 2.2 Linux 系统中的数据库
- 2.3 创建数据库和数据库表
- 3. mysqld 架构
- 3.1 架构解释
- 3.2 查看存储引擎
- 4. SQL语句分类
文章目录
- @[toc]
- 1. MySQL 的基本使用方法
- 1.1 连接服务器
- 1.2 Windows 系统开启Mysql服务
- 2. 什么是数据库
- 2.1 mysql 与 mysqld
- 2.2 Linux 系统中的数据库
- 2.3 创建数据库和数据库表
- 3. mysqld 架构
- 3.1 架构解释
- 3.2 查看存储引擎
- 4. SQL语句分类
上一篇文章中,博主介绍了 :
- Ubuntu 系统中如何安装和卸载 MySQL;
建议将上一篇文章看完之后再来看这篇文章,链接如下:
【MySQL初阶】Ubuntu 安装与卸载 MySQL那么接下来正文开始:
1. MySQL 的基本使用方法
1.1 连接服务器
- 实际上,
MySQL
是一种 网络服务,它允许别的主机来访问本地的数据库; - 因此,当一个主机要访问另一台主机上的数据库是,可以采用一下命令:
mysql -h 主机IP地址 -P mysql网络端口号 -u 登录用户 -p 用户密码
;- 由于我们现在访问的大概率都是本地的主机,所以前两个可以省略,采用如下方式即可:
mysql -uroot -p
- 至于这里为什么会出现端口号呢?我们知道
mysql
的默认端口号是 3306; - 但是实际上在很多公司中,为了保护数据的安全,经常会将这个默认端口号进行修改,我们也是可以在
MySQL
的配置文件中进行修改的:
1.2 Windows 系统开启Mysql服务
- 我们可以输入
Win + r
,然后输入services.msc
打开服务管理器; - 找到
Mysql
,通过图标进行停止、暂停、重启。
2. 什么是数据库
- 在操作系统中,有文件管理,为什么还需要数据库呢?
- 可以想象一下,有一个包含十万行
IP
地址的文件,如果现在要找出IP
地址是120
开头的,且要统计一下出现的次数; - 作为程序员,我们可以在
cpp
或者java
等语言中一行行读取文件内容,并进行比对,稍微有点麻烦; - 但是数据库,是在磁盘或者内存中存储的特定结构组织的数据,我们只需要输入特定的指令,数据库就知道我们想要干什么,然后它就会把我们想要的结果告知我们;
- 所以,可以在磁盘或者内存中找到 存储数据库的方案;
- 那么我们应该如何让数据库知道我们想要做什么呢?
2.1 mysql 与 mysqld
- 实际上,我们在下载
MySQL
的时候,是下载了两个东西,第一个是mysql
,第二个是mysqld
; - 其中
mysql
是客户端,mysqld
是服务器;- 这里的
d
表示的是daemon
,守护进程的意思。
- 这里的
我们可以来看一下:
- 因此MySQL的本质是基于CS模式的网络服务!
- 我们平时使用的就是客户端
mysql
,而mysqld
就是读取了我们的指令,然后在内部分析我们的指令,然后在磁盘上进行增删查改; - 我们可以抽象的想象成数据库就是在磁盘上的 “文件”。
看一下下面这幅图:
稍微总结一下:
- 一般情况下,文件系统确实提供了数据存储功能,但是并没有为用户提供非常好的数据管理功能;
- 所以数据库的本质就是对数据内容存储的一套解决方案,用户只要给出字段或者要求,数据库直接给出回显就行。
2.2 Linux 系统中的数据库
-
Linux
中,在MySQL
配置文件中,有一个字段是datadir
,表示的是数据库的存储位置,我们可以来验证一下: -
然后,我们登录一下
mysql
,看一下有什么数据库:-
发现在
/var/lib/mysql
路径中,深颜色的就代表着我们已经创建的数据库,因此数据库在 Linux 系统中就是目录!
2.3 创建数据库和数据库表
-
我们可以重新创建一个数据库,比如就叫
helloworld
:-
创建数据库:
create database helloworld;
-
使用数据库:
use helloworld;
-
创建数据库表:
create table student( id int, name varchar(32), gender varchar(2) );
-
为表中插入数据:
insert into student (id, name, gender) values (1, '张三', '男'); insert into student (id, name, gender) values (2, '李四', '女'); insert into student (id, name, gender) values (3, '王五', '男');
-
查询表中数据:
select * from student;
-
-
我们可以看一下在数据库存储的位置中发生了些什么:
-
可以发现,我们创建的表实际上就会在数据库这个目录中创建出一个文件;
-
这个文件是二进制形式的,并不是把我们的表完全一样的存储起来:
再总结一下:
- 建立数据库,本质就是在
Linux
中建立一个目录; - 在数据库中建立一个表,本质就是在在数据库目录中建立一个文件;
- 数据库本身也是文件,只不过这些文件并不是直接由用户操作,而是数据库服务器帮我们操作!
因此就有了下面一幅图:
3. mysqld 架构
3.1 架构解释
MySQL
是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux
、Windows
、Mac
和 Solaris
。各种系统在底层实现方面各有不同,但是 MySQL
基本上能保证在各个平台上的物理体系结构的一致性。
mysqld 层状解释
- 第一层是连接池,因为
MySQL
是网络服务,所以需要处理来连接的主机;- 第二层主要目的是为了检查客户端的指令是否是合法的,要进行词法分析、语法分析,除此之外还要对这个指令进行优化;
- 对于优化后的指令,第三层就是存储引擎,这层有点类似于
OS
中的驱动层,对于每种指令,一般都会选择最优秀、效率最高的引擎来处理,常用的有InnoDB
和MyISAM
,其中InnoDB
支持transaction
(事务),这也是它常用的原因;- 最后一层就是
OS
中的文件系统。
3.2 查看存储引擎
- 存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
- 我们可以用指令
show engines
来查看MySQL
的引擎:
4. SQL语句分类
- DDL【data definition language】 数据定义语言,用来维护存储数据的结构代表指令:
create, drop, alter
(对数据库进行操作) - DML【data manipulation language】 数据操纵语言,用来对数据进行操作代表指令:
insert,delete,update
(对表进行操作)- DML中又单独分了一个DQL,数据查询语言,代表指令:
select
- DML中又单独分了一个DQL,数据查询语言,代表指令:
- DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务代表指令:
grant,revoke,commit