一、什么是数据库
mysql本质 :基于C(mysql)S(mysqld)模式的一种网络服务。

mysql :数据库服务的客户端。
mysqld :数据库服务的服务器端。

数据库默认的端口号 :3306
什么是mysql数据库呢?
mysql是一套给我们提供数据存取的服务的网络程序。一般指的是,在磁盘或者内存中存储的特定结构组织的数据。
数据库分为关系型数据库与非关系型数据库,而mysql属于关系型数据库,是将数据存储在磁盘上的。
那么,现在我们先来简单见识一下mysql的操作。

可以看到,所谓的创建数据库,本质是linux下的一个目录。

在数据库内建立表 ,本质是在linux下创建对应的文件。
那么,这些操作都是谁来做的呢?
mysqld服务帮我们做的。
数据库本质其实也是文件!只不过这些文件并不由程序员直接操作,而是由数据库服务帮我们进行操作。
现在,我们用一张图来理解数据库是怎么进行工作的。

mysql客户端将执行的操作交给mysqld(mysql服务器端),执行命令,最后将结果返回给mysql客户端。
二、SQL分类
DDL【data definition language】数据定义语言,用来维护存储数据的结构。(如create,drop,alter)
DML【data manipulation language】数据操纵语言,用来对数据进行操作。(如insert,delete,update)
DCL【Data Control Language】数据控制语言,主要负责权限管理与事务。(如grant,revoke,commit)
三、存储引擎

一般常见的存储引擎就是InnoDB和MyISAM。
存储引擎 :数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
mysql的核心就是插件式存储引擎,mysql支持多种存储引擎。
四、库的操作
4.1 数据库的操作
. 创建数据库
create database [if not exists] db_name;

if not exists代表该数据库不存在则创建,存在则警告。
我们可以看一下创建的这个数据库,它的编码格式以及校验方式是什么?

这是系统默认的编码格式与校验方式。我们也可以在创建数据库的时候手动指定编码与校验方式。
create database db_name character set utf16 collate utf16_general_ci;
create database db_name charset=gbk collate=gbk_chinese_ci;


. 删除数据库
drop database db_name;

. 修改数据库
alter database db_name;

如果想查看当前处在哪一个数据库下,可以使用 select database() 命令。

show databases命令可以查看都有哪些数据库。

show tables 可以查看当前所处数据库都有哪些表。

4.2 数据库的备份与恢复
//备份操作
mysqldump -P(port)端口号 -u(user)用户 -p(password)密码 -B(database)数据库名 > 数据库备份存储的文件路径
//恢复操作
source 文件路径

备份文件里的内容。

如果备份一个数据库时,没有带上-B参数 ,在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
show processlist命令可以用来查看当前都有哪些连接使用数据库。
五、表的操作
5.1 创建表
create table table_name();

现在我们已经成功创建了一张表,那么该如何查看表结构的信息呢?
可以使用desc table_name命令。

5.2 表中插入数据
现在,我们先向该表内插入一些数据,在查看表里面的内容。
insert into table_name (column1,column2...) values (value1, value2...);

5.3 修改表
//添加一列
alter table table_name add (column datatype);
//修改列的属性
alter table table_name modify (column datatype);
//删除一列
alter table table_name drop (column);
//修改列(包括列名称与列属性)
alter table table_name change column datatype;
添加列

修改列属性

删除列

如果我们需要修改表名,应该如何修改呢?可以使用alter table table_name rename to newtable_name命令。

那我们如何修改列呢?

5.4 删除表
drop table table_name;
