目录
一、数据库概念
二、主流数据库
三、基本使用
3.1 连接服务器
3.2 服务器管理
3.3 使用案例
四、MySQL架构
五、SQL分类
六、存储引擎
6.1 查看存储引擎
6.2 存储引擎对比
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内、有组织的、可共享的、统一管理的大量数据的集合
虽然单纯的使用文件也可以存储数据,但会存在如下缺点:
为了解决上述问题,于是专家们设计出了更利于管理数据的数据库
客户端 && 服务器
数据库管理系统分为服务器和客户端,以MySQL为例,使用MySQL时会先通过 mysql命令 连接MySQL服务器
mysql命令就是MySQL客户端,而MySQL服务器可以通过 ps命令 进行查看
查看到的mysqld就是MySQL服务器,使用mysql命令实际就是在连接mysqld服务。通过netstat命令可以看到,MySQL服务器底层采用的是TCP6协议,目前服务器处于监听状态
MySQL本质是一套网络服务,使用mysql命令连接MySQL服务器时,本质就是MySQL客户端在向MySQL服务器发起连接请求,连接建立成功后MySQL客户端就会将用户输入的SQL语句发送给MySQL服务器,之后MySQL服务器就会根据SQL语句进行对应的操作
数据库存储介质
说明一下:
连接到MySQL服务器后,就可输入各种SQL语句让服务器执行,当要退出mysql时输入 quit 、exit或 \q 即可
停止服务器
通过 systemctl stop mysqld 命令或 service mysqld stop 命令可以停止MySQL服务器
启动服务器
通过 systemctl start mysqld 命令或 service mysqld start 命令可以启动MySQL服务器
重启服务器
通过 systemctl restart mysqld 命令或 service mysqld restart 命令可以重启MySQL服务器
数据存储路径
通过MySQL创建的数据库和各种表结构,最终会以文件的形式存储下来,通过查看MySQL的配置文件中的datadir可以得知数据文件的存储路径
比如博主的MySQL配置文件的绝对路径为/etc/my.cnf,配置文件中datadir对应的值为/var/lib/mysql
将来MySQL创建的数据库文件都会存储在该目录下,可以看到该目录下有很多MySQL相关的数据文件
创建数据库
连接MySQL服务器后,通过create语句创建一个名为helloworld的数据库
这时 /var/lib/mysql 目录下,就会多出一个名为helloworld的目录
目前helloworld目录下只有一个名为的db.opt的文件,该文件中指明了当前数据库的默认字符编码和字符校验规则
创建数据库时,本质就是在MySQL的数据存储路径下新建了一个目录,而当这个数据库删除后,这个目录也就不存在了
此时在MySQL的数据存储路径下的helloworld目录也就不存在了
使用数据库
使用数据库之前,可以先通过show语句查看当前都有哪些数据库,然后再通过use语句使用指定的数据库
使用数据库可以理解成,就是使用cd命令进入到该数据库对应的目录中
创建数据库表
可以通过create语句创建一个简单的student表
通过show语句可以查看创建的student表结构
由于student表采用的存储引擎是InnoDB,因此在MySQL的数据存储路径下的helloworld目录下,就会多出两个文件,分别是student.frm和student.ibd
其中student.frm是表结构文件,student.ibd是表数据和索引的文件
若创建数据库的本质是在数据存储路径下新建一个目录的话,那么创建表本质实际就是在特定的数据库目录下新建若干个文件(InnoDB存储引擎对应的是两个,MyISAM存储引擎对应的是三个),因此在创建表之前一定要先选择一个数据库
表中插入数据
通过desc语句可以查看对应的表结构
通过insert语句可以向表中插入数据
查询表中的数据
通过select语句可以查看表中的数据
数据的逻辑存储
表中的数据是以二维表格的形式进行呈现的,包括行和列
其中每一行被称为是一条记录,而每一列都代表一个属性(属性列)
数据库服务器,数据库,表关系
MySQL架构
MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性
MySQL客户端
MySQL服务器会收到MySQL客户端发来的SQL语句,并根据SQL语句执行对应的操作
mysql命令本质是一个可执行程序,通过file命令可以看到该可执行程序是采用动态链接的方式生成的,通过ldd命令可以看到该可执行程序依赖的C/C++库文件
mysql命令本身是C/C++编写的,因此在编写mysql程序时,一定需要调用MySQL提供给C/C++的语言接口客户端。MySQL不仅仅提供了C/C++对应的语言接口,像Python、Java、PHP等都有对应的MySQL接口
SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统
SQL语句可分为如下三类:
注意: DML中又单独分了一个DQL(Data Query Language)数据查询语言,比如select语句、from语句、where语句等
存储引擎就是数据库管理系统如何存储数据、如何为存储的数据建立索引、如何更新数据、如何查询数据等技术的实现方法,MySQL中的存储引擎是插件式的存储引擎,可以支持多种存储引擎
通过show语句可以查看MySQL支持的存储引擎
MySQL底层默认使用的存储引擎是InnoDB,该存储引擎支持事务、行级锁、外键等
注意:InnoDB存储引擎支持事务,而MyISAM存储引擎不支持