一、数据库基础
1.1 什么是数据库
数据库的作用,就是将数据存储到里面并且管理数据。而常见存储数据的方式一般都是通过文件存储。
那么有了文件为什么还需要数据库?
文件保存数据有以下几个特点:
文件存储不利于存储大量数据
文件存储不利于数据查询和管理
文件存储数据在程序中控制不方便,例如:C/C++中文件IO接口一大堆,又臭又长
因此为了解决文件保存数据的缺点,数据库就诞生了。
站在协议层的角度,MySQL是工作在应用层的一款网络软件,即MySQL在软件上帮用户去对文件数据进行增,删,查,改等操作
所以对于数据库而言:
-
数据库也是用文件的方式对数据进行保存和管理的
-
数据库中存在许多存储引擎,来帮助数据库进行文件的管理操作
从网络服务器的角度,数据库则包含了:
-
[mysql]:数据库客户端
-
[mysqld]:数据库服务端
-
[数据库的库和表]:存储用户的数据
1.2 何为数据库和数据表
在/etc/my.cnf
目录下保存了许多配置,其中有一个datadir
datadir
有一个路径,该路径就是数据库所有库+表存储的路径,那么存储路径是什么意思?
登录数据库看一下,这个是数据库里面默认的库
在去刚才的datadir所属路径看一下
这个路径下面有很多文件,有几个名字是否有点相似?
在数据库创建一个新库,用于测试
在刚刚的路径下面看一下里面的文件。发现,里面出现了一个叫test_DB的文件夹
在刚才建立的测试数据库中新建一个表
返回刚才的路径,进入刚才的test_DB文件夹,看一下
可以看到,里面建立了两个文件,其中拥有者和所属组都是mysql,只有mysql有其读写权限
所以对于数据库和数据表:
数据库中建立一个库,本质上就是创建了一个文件夹
在特定数据库创建一张表,本质上就是创建了两个文件
1.3 SQL语句
SQL语句就是用于管理数据库里面的数据的方法,例如我们输入一个SQL语句,数据库会解析这个SQL,并按照这个SQL语句对应的操作去对数据库里面的数据进行修改。
SQL分为几大类:
[DDL] 数据定义语言 Data Definition Language,用来维护存储数据的结构,例如:create,drop,alter
[DML] 数据操纵语言 Data Manipulation Language,用来对数据操纵,例如:insert,delete,update
[DCL] 数据控制语言 Data Control Language,主要负责权限管理和事务,例如:grant,revoke,commit