

目录
在上一篇文章 [MySQL#0] 详解如何在 Linux 上安装 MySQL | 常见登录问题 ,我们安装好了环境,接下来就来一起学习操作吧~
mysql -h 127.0.0.1 -P 3306 -u root -p
注意:

1.目前我们是免密码登录的,后面必须设置密码
2.密码输入的时候,是不会回显的
服务器角度理解数据库
在
连接数据库时,我们使用的是
mysql
,启动数据库服务时使用的是
mysqld
。
这两个分别代表什么呢?

mysql
是数据库服务的
客户端。mysqld
是数据库服务的
服务器端。说明:
- 凡是可执行程序 带有
d的,通常称为守护进程。- MySQL本质:一个基于C/S(Client/Server)模式的网络服务
mysqld就是网络服务的后端- 通常我们提到MySQL,其实指的是MySQL的客户端
mysql。
这就是我们对数据库的第一层理解。
yum
安装
mysqldmysql
进行连接,因为它是一个网络服务。
MySQL服务是什么?
数据库通常指的是, 在磁盘或内存中存储的特定结构化的数据 。
我们可以区分如下几点:
mysqldmysql数据库的本质仍然是存储在磁盘中的某种结构化数据,虽然我们可能对它的具体形式还不完全理解。文件是我们熟悉的存储形式
虽然文件提供了数据存储的基本功能,但它 没有提供对数据内容的管理能力。
127
开头的IP地址个数。数据库的意义: 它是一种 数据存储的解决方案 。程序员只需提出查询需求,数据库就会根据需求分析并返回结果。 相当于是将数据管理起来了,使数据查询更加方便
例如
,如果将10万个IP地址
存储到数据库中,查询以
127
开头的IP地址时,
数据库会进行内部处理,
最终返回统计结果
,而程序员无需自己编写复杂的代码。
总结数据库的作用
数据库本质上是一套对外提供数据存储和管理的解决方案。它包括:
mysql
)mysqld
)数据库的作用是让客户端提出需求后, 服务器从数据库文件中进行操作,最终将结果返回客户端,展示给用户。
理解

最后的结论——什么是数据库?
局部理解:
数据库是存储在
磁盘中的结构化数据文件
,这些文件能够被
mysqld
服务进程进行增删查改。
宏观理解:
数据库是一整套数据存储的解决方案。
文件保存数据的缺点:
数据库的存储介质:
为了解决文件存储的这些问题,专家们设计了数据库,能够更有效地管理数据。 数据库的使用和管理是衡量程序员水平的重要指标。
见一见数据库
- 建立数据库,本质就是Linux下的一个目录
- 在数据库内建立表,本质就是在Linux下创建对应的文件即可!
- 数据库本质其实也是文件!!只不过这些 文件并不由程序员直接操作,而是由数据库服务帮我们进行操作
使用 MySQL 建立一个数据库,建立一张表结构,插入一些数据,最后对比 MySQL 在 Linux 中的表现
show databases;
此时可以查看当前所有存在的数据库。
vim /etc/my.cnf

在配置文件中,可以看到
datadir
字段,它指明了 MySQL 服务数据存放的路径。
切换到这个路径下,可以看到数据目录中存放的数据内容,包含普通文件和目录。
细心观察,您可能已经发现了一些有趣的现象,我们下面讲讨论
mysqld
服务端发出创建数据库的请求:create database helloworld;
创建数据库后,原本数据目录中没有
helloworld
这个目录,现在会多出一个名为
helloworld
的目录。
进入该目录后,可以发现除了一个配置文件外,并没有其他文件。

所谓
建立数据库,实际上是在 Linux 系统下创建了一个目录。

当客户端发出
create database
的 SQL 指令后,
mysqld
进程识别指令并在磁盘上创建一个目录。
这就是数据库在系统层面的表现。
use helloworld;
就像在文件系统中选择了一个具体的目录一样,
use helloworld
代表接下来所有的操作都将在该数据库下进行。
student
的表结构:create table student(
name varchar(32),
age int,
gender varchar(2)
);
表的字段定义了数据的属性列及其类型。建立了表之后,在数据库目录中会生成两个与该表相关的文件。

- 在数据库内建立表,本质就是在Linux下创建对应的文件即可!
- 数据库本质其实也是文件!!只不过这些文件并不是由程序员直接操作,而是由数据库服务帮(mysqld)我们进行 操作。
student
表中插入一些数据:insert into student (name, age, gender) values ('张三', 23, '男');
insert into student (name, age, gender) values ('李四', 24, '女');
insert into student (name, age, gender) values ('王五', 25, '男');
在
name
、
age
、
gender
三列中插入相应的数据。
values
后跟的是要插入的具体值。
select * from student;

这会返回表中的所有记录。
总结
数据
库 的创建本质 :在 Linux 系统下创建一个 目录。
表 的创建本质 :创建相应的 文件。
数据存储的本质 :将 数据以结构化的方式存储到这些文件中。
程序员不需要直接操作文件系统,而是通过 SQL 语句与 MySQL 服务交互 ,服务负责在磁盘上执行具体的操作。
操作总结
show
creat
use
creat table //创建一张表
insert //插入数据
注意:
以下是根据您的要求整理的内容格式:
MySQL:
SQLite:
SQL Server:
Oracle:
PostgreSQL:
H2 Database:

数据逻辑存储 在表中插入数据后,这些数据在 逻辑上是以行列式的结构存储的。

数据库内的数据在 物理上并 不是直接存储为表的形式,而是通过 MySQL 特定的协议和格式进行存储和管理。
MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行
最上面是MySQL客户端,现在我们在Linux下是以命令行方式使用数据库,后面还会以C/C++,图像化界面使用数据库。
整体对于一个MySQL Server来讲主要功能由三层构成:

怎么会有这么多存储引擎呢?
总结一下MySQL Server有三层 :
最终总结一下 ,MySQL依旧是一个文件系统,只不过处于OS提供的文件系统之上的一套存储解决方案。
最后一点 ,MySQL提供这么多的解决方案,它是支持热插拔的可以理解成 插件一样 。我们想 选择哪一个就把哪一个存储引擎加载到MySQL里。
(结合系统层理解
DDL [data definition language] 数据 定义语言 ,用来维护存储数据的结构
DML [data manipulation language] 数据 操纵语言 ,用来对数据进行操作
DML中又单独分了一个DQL,数据查询语言
DCL [Data Control Language] 数据控制语言,主要负责权限管理和事务
也可以类似于数据结构来理解:
存储引擎 :数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法
MySQL的
核心 :插件式存储引擎,支持多种
存储引擎(解释 SQL 语句
查看存储引擎:
show engines;

每一种存储引擎都有自己对应的一大堆功能。大部分情况下MySQL常用的存储引擎是MyISAM,InnoDB。其中更常用的是 InnoDB。

之后会再具体的讲到~下篇文章见
