一、基本理解
存储数据用文件就可以了,为什么还要弄个数据库呢?
文件保存数据有以下几个缺点:
① 文件的安全性问题。
② 文件不利于数据查询和管理。
③ 文件不利于存储海量数据。
④ 文件在程序中控制不方便。
为了解决上述问题,专家们设计出了一种更加利于管理数据的东西——数据库,它能更有效地管理数据。
数据库的本质,就是一个在用户和文件之间的软件层。
数据库属于应用层的软件,需要用户自己安装,其底层一定是直接或间接地访问 OS 的文件接口。
以前需要用户自己直接维护文件,但是有了数据库之后,就不需要了。
用户只要把请求告诉给数据库,数据库会帮用户来维护。用户和数据库交互,用的就是 SQL 语句。
数据库和文件交互,是需要存储引擎的。
MySQL 基于 CS 模式。
- mysqld:服务器。
- mysql:客户端。
① 安装 MySQL,其实就是在安装服务器和客户端。
② 安装完后启动服务器,就是在启动 mysqld 。
③ 连接服务器,就是用 mysql 来连接 mysqld 。
数据库,本质上就是一个网络服务器。
我们在使用 MySQL 数据库前,需要使用 MySQL 客户端来连接 MySQL 服务器。
用户通过数据库的客户端向服务端发出 SQL 请求,服务端收到请求后,根据请求对数据进行增删查改。
二、基本使用
1.连接服务器
访问数据库,本质就是用 MySQL 客户端来连接 MySQL 服务器。
使用命令mysql -h IP地址 -P 端口号 -u 用户名 -p
,即可使用 mysql 来连接 mysqld 。
注:
① -h:要连接服务器的 IP 地址(若没有写-h 127.0.0.1
,则默认是连接本地)。
② -P:要连接服务器的端口号(若没有写-P 3306
,则默认是连接 3306 端口号)。
③ -u:表示用户名。
④ -p:表示用户名对应的密码。
如果要连接的是本地的 MySQL 服务器,那么在连接时可以省略掉 -h 和 -P 选项,只需要指明用户名及其密码即可:
2.服务器、数据库和表的关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
DB(database)表示的是数据库,而每一个 DB 下会包含多张表(table)。
查看 MySQL 相关的配置,可以查看/etc/my.cnf
配置文件。
Linux:
MySQL:
创建数据库,本质就是在 Linux 下创建一个目录。
MySQL:
Linux:
目前该目录下只有一个 .opt 文件,该文件指明了当前数据库的默认字符编码和字符校验规则。
连接上 MySQL 后,必须使用use 数据库名称;
选择要访问的数据库。可以认为就是 Linux 上的cd 数据库名称
进入目录。
创建数据库表,本质就是在特定目录下创建特定的文件(文件的个数与存储引擎有关)。
MySQL:
Linux:
由于该表采用的存储引擎是 InnoDB,所以在当前数据库目录下就会创建两个文件,分别是 .frm 文件和 .ibd 文件( .frm 是表结构文件,.ibd 是表数据和索引的文件)。
总结:
- 创建数据库就是创建目录。
- 使用数据库就是进入这个目录。
- 创建一个表结构就是在这个目录里面创建几个文件(文件的个数与存储引擎有关)。
3.使用案例
// 创建数据库
create database test_db;
// 使用数据库
use test_db;
// 创建数据库表
create table if not exists student(
id int not null,
name varchar(32) not null,
gender varchar(2) not null
);
// 表中插入数据
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;
4.数据逻辑存储
一个数据库,本质就是一堆的表结构。每一个表结构就是行列式的数据。
三、MySQL 架构
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris 。虽然各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
四、SQL 分类
- DDL(Data Definition Language):数据定义语言,用来维护存储数据的结构。
代表指令:create
、drop
、alter
。 - DML(Data Manipulation Language):数据操纵语言,用来对数据进行操作。
代表指令:insert
、delete
、update
。
DML 中又单独分了一个 DQL(Data Query Language,数据查询语言),代表指令:select
。 - DCL(Data Control Language):数据控制语言,主要负责权限管理和事务。
代表指令:grant
、revoke
、commit
。
五、存储引擎
1.基本理解
存储引擎:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL 的核心,就是插件式存储引擎,支持多种存储引擎。
2.查看存储引擎
使用show engines;
可查看存储引擎。