MySQL的安装请看如下文章:
Linux 安装Mysql(图文教程)
2021MySql-8.0.26安装详细教程(保姆级)
一、数据库基础
1.1. 什么是数据库
存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:
- 文件的安全性问题。
- 文件不利于数据查询和管理。
- 文件不利于存储海量数据。
- 文件在程序中控制不方便。
数据库存储介质:
- 磁盘。
- 内存。
为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。
MySQL是一个守护进程:
1.2. 服务器,数据库,表关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,
- 一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
二、SQL分类
- DDL【data definition language】 数据定义语言,用来维护存储数据的结构。代表指令: create, drop, alter 。
- DML【data manipulation language】 数据操纵语言,用来对数据进行操作。代表指令: insert,delete,update。
- DML中又单独分了一个DQL,数据查询语言,代表指令: select 。
- DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务。代表指令: grant,revoke,commit。
三、数据库的基本操作
3.1. 连接MySQL
mysql -u [用户名] --h [连接的ip地址] -P[端口号] -p [密码];
如果没有写 -h默认是连接本地。
如果没有写 -P默认是连接3306端口号
退出只需要输入quit
或者exit
即可。
3.2. 查看数据库
show databases;
3.3. 使用具体的数据库、查看数据表
use [数据库名];
3.4. 创建数据库
create database (if not exists) [数据库名](create_specification);
()为可选项。
create_specification:
[DEFAULT] character set charset_name
[DEFAULT] collate collation_name
如果系统没有test3的数据库,则创建一个使用utf8字符集,并附带校验规则的test3数据库,如果有则不创建。
创建数据库以后,就会在对应的目录下创建对应的数据库目录,之后创建的表都会保存在这个目录下。
3.5. 删除数据库
drop database (if exists) [数据库名];
执行删除之后的结果:
- 数据库内部看不到对应的数据库。
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。
3.6. 查看当前所在的数据库
select database();
3.7. 查看已经创建好的数据库的创建语句
show create database [数据库名];
4.1以上的版本默认字符集为latin1,如果想修改默认字符集,可以修改/etc/my.cnf
的配置文件:
[mysqld]
#不需要密码直接登录
skip-grant-tables
port=3306
#运行最大连接数
max_connections=200
#运行连接失败的次数。这也是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#服务端使用的字符集默认为utf-8
character-set-server=utf8
[mysql]
#客户端使用的字符集默认为utf8
default-character-set=utf8
[client]
#客户端默认端口号为3306
port=3306
3.8. 查看当前字符集
show variables like '%character%';
创建数据库的时候,尽量将数据的字符集设置成utf8。
3.9. 修改数据库
对数据库的修改主要指的是修改数据库的字符集,校验规则。
alter database [数据库名称] (alter_spacification)
alter_spacification:
[DEFAULT] character set charset_name
[DEFAULT] collate collation_nam
3.10. 字符集不匹配导致乱码
四、校验规则对数据库的影响
4.1. 查看数据库支持的字符集校验规则
show collation
校验规则影响了用户对数据查询的排序以及是否对大小写敏感。
不同字符集有不同的校对规则
每一个字符集都有一个默认的校对规则 ,比如:uft8默认为utf8_general_ci。
_后缀为_bin:区分大小写
_后缀为_ ci:不区分大小写
五、对数据表的操作
5.1. 查看表
show tables;
5.2. 创建表
create table [表的名称] (列的名称 列的类型,.....,) character set 字符集 collate 校验规则 engine 存储引擎;
5.3. 查看表字段
desc [表名称]
- Field:字段名称。
- Type:字段类型。
- Null:value是否可以为NULL。
- Key:索引类型。
- Default:默认值。
- Extra:额外属性。
5.4. 删除表和表的列
drop table [表名称];
删除整张表。
alter table [表名称] drop[字段的名称];
,删除表的某一列,该列的数据也随之删除。
5.5. 新增列
alter table [表名称] add[新增列的名称] [字段的类型] after [字段名称(在谁后面新增);]
5.6. 修改列的类型
alter table [表名称] modify[字段名称][字段的类型]
5.7. 表的重命名
alter table [表名称] rename to [重命名后的名字]
5.8. 列的重命名
alter table [表名称] change [字段名] [修改后的名称] [字段属性]
5.9. 插入数据
增加数据:
1.全列增加 insert into [表名称] values(表字段对应的值)
2.指定列进行插入 insert into[表名称] (表中列的名称,...) values(指定表字段对应的值...)
3.一次性插入多行数据
insert into[表名称] (表中列的名称,...) values(指定表字段对应的值...),(指定表字段对应的值...)
insert into [表名称] values(表字段对应的值),(表字段对应的值)
六、数据库备份
6.1. 数据库的备份
mysqldump -p[端口(3306)] -u[用户] -p[密码] -B[数据库名称(可以有多个)] > [文件]
将数据库重新备份,重定向到某个文件之中。
把我们整个创建数据库,建表,导入数据的语句都装载temp.sql这个文件中。
还原这个数据库,只需要source 文件名;
即可。
6.2. 数据表的备份
如果只是一个数据库中的若干个表,可以用下面的命令:
mysqldump -u[用户] -p[密码] 数据库名称 表名称1 表名称2 > [文件]
恢复也是同样的操作。