文章目录
- 什么是数据库?
- 主流数据库
- 基本使用
- 安装MySQL
- 连接服务器
- 服务器、数据库、表关系
- 使用案例
- 数据逻辑存储
- MySQL架构
- SQL语句分类
- 什么叫存储引擎
什么是数据库?
数据库是指在磁盘和内存中存储特定结构组织的数据。数据库通常用于存储于某个系统、组织或应用相关的信息。和文件系统存储管理数据的方式不同,数据库以结构化的方式进行存储,比如按行列式(类似于表格)
等形式。除此之外,相比于文件系统,数据库保存数据还有以下优点:
- 数据更加安全
- 更有利于数据的查询和管理
- 有利于存储大量数据
- 控制数据方便
数据库存储的介质:磁盘和内存
主流数据库
- SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
- PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
- SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
- H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中
基本使用
安装MySQL
在安装MySQL之前建议先去查看当前linux系统的版本,版本越新的系统最好搭配越新的MySql。如果你是ubuntu系统,直接使用指令sudo apt install mysql-server
就可以安装了。这是因为ubuntu内置了最新版本的MySql。
- Centos安装Mysql,这里有安装教程。
连接服务器
当我们安装好MySql之后,一般都会默认启动MySql服务。可以使用指令ps ajx | grep mysql
观察mysql进程:
此时要想进入mysql,需要先登录。本地登录指令mysql -u root -p
-u
选项后面跟着登录的用户名
-p
选项后面跟密码
此外 -h
选项后面跟登陆的主机号 -P
后面接访问的端口号
默认没有密码,直接按回车就可以进去了。退出输入quit
服务器、数据库、表关系
值得注意的是,mysql是数据库服务的客户端,mysqld是数据库服务的服务端(后端)。
mysql
的本质是基于C(mysql,客户端)S(mysqld,服务端) 模式的一种网络服务。我们常说的mysql
其实只是指mysql
服务的客户端。数据库服务才是指mysqld
。
- 所谓的安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库。
- 数据库中一般会有多个表,表是数据库的基本单位,每张表存储具体的数据
数据库服务器、数据库、和表的关系如下:
DB是存储引擎。
使用案例
登录mysql,简单使用一下mysql指令,目前不用考虑指令的细节,观察结果即可。
- 创建数据库
create database helloworld;
在mysql创建的数据库一般会存放在/var/lib/mysql
目录下,并且我们可以看到,数据库本质是一个文件目录。
- 查看当前数据库
show databases;
- 使用数据库
use helloworld;
这条指令表示接下来的操作都是在helloworld
数据库中进行。比如新建一张表,该表就属于该数据库。
- 在数据库中创建表
create table student(id int,name varchar(32),gender varchar(2)
);
sudent是表的名字,括号里面的是表的属性,以键值对的形式描述,左边是属性名,右边是类型,()里面是字节大小。
- 在表中插入数据
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
查询并显示student表中所有信息
数据逻辑存储
数据库中的存储逻辑是指数据在数据库系统中组织和表示方式,主要关注数据的结构和关系,而不是物理存储的的具体实现。简单理解为,逻辑存储方式是用来描述人看到的数据的表现形式,而物理存储方式是数据具体在磁盘中存储形式。
mysql的逻辑存储方式就是行列式:
MySQL架构
MySQL是一个可移植的数据库服务程序,几乎能在当前所有操作系统上运行。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
MySQL的架构从上到下一般可以分为4个层次:
- 连接层:客户端通过连接层与 MySQL 服务器建立连接
- 服务层:解析SQL语句,优化查询,生成执行计划
- 存储引擎层:查询执行计划通过存储引擎 API 与相应的存储引擎交互,读取或写入数据
- 存储层:数据最终存储在文件系统中
这种分层结构使MySQL具有良好的可扩展性和灵活性,各个层次之间的职责分明,方便优化和扩展
SQL语句分类
mysql中的指令我们称为SQL语句。
- DDL(data definition language):数据定义语言,用来维护存储数据的结构,代表指令有:
create
(创建表)、drop
(删除表)、alter
(修改表)。 - DML(data manipulation language):数据操纵语言,对数据进行操作。代表指令有:
insert
(向表中插入数据)、delete
(向表中删除数据)、update
(修改表中数据) - DCL(data Control language):数据控制语言。主要负责权限和事务管理。代表指令有:
grant
(授予用户权限)、revoke
(撤销用户权限)、commit
(提交事务)
什么叫存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术
的实现方法。我们输入的sql指令最后都是由存储引擎来实现的。并且,MySQl针对不同的场景,提供了不同的存储引擎。这种插件式存储引擎使得MySQL更加灵活且高效。
我们在mysql种可以使用指令show engines;
来查看不同的引擎:
其中呢InnoDB
存储引擎是最常用的,其次是MyISAM
。这些引擎目前了解即可