认识数据库
什么是数据库?
从整体思路来看:
- 数据库系统: 整个数据存储和管理的体系
- 数据库服务器: 运行MySQL服务的机器
- 数据库: 可以类比成Linux文件系统下的目录,数据库服务器中有多个数据库
- 表: 可以类比成Linux文件系统下的文件,数据库中有多个表
- 记录/字段:
- 记录:表中的一行
- 字段:表中的一列
数据库是逻辑上的数据集合

什么是SQL?
结构化查询语言,分为:
- DDL:数据定义语言,定义数据库对象结构
- DML:数据操作语言,对数据增删改
- DQL:数据查询语言,查数据
- DCL:数据控制语言,权限控制和权限控制
MySQL的架构

注:图源网络:一文搞懂MySQL体系架构!! - 冰河团队 - 博客园
库的操作
数据库的CRUD
C 创建数据库
mysql
create database db_name charset=编码规则 collate=校验规则;
R 查看数据库
查看所有数据库:
sql
show databases;
查看数据库创建语句(可以看到字符集和校验集)
sql
show create database db_name \G; # \G是更清晰的显示
查看数据库支持的字符集和校验集:
sql
show charset;
show collation;
查看当前数据库:
sql
select database();
注意:
- 字符集决定字符怎么存储,用什么格式存储
- 校验集决定字符怎么比较,怎么排序
- 必须统一字符集和校验集的统一性
U 修改数据库
数据库本身的更新通常是修改字符集、校验集等属性:
sql
alter database db_name character set 新的字符集; # alter database db_name charset=新的字符集;
alter database db_name collate 新的校验集;
D 删除数据库
sql
drop database db_name;
执行删除之后:
- 删除整个数据库及内部所有表数据,相当于
rm -rf dir
这是个高危操作,一般不建议
切换数据库
每次使用指定数据库前都需要:
sql
use db_name;
表示后续操作都在db_name下进行

数据库的备份和恢复
数据库备份的是数据和有效操作语言
sql
mysqldump -u 用户名 -p old_name > new_dir/file.sql
-u 用户名:用户名-p:输入密码old_name:要备份的数据库new_dir/file.sql.:备份到什么路径下的什么文件
备份多个数据库:
sql
mysqldump -u root -p --databases db_name1 db_name2 > multi.sql
备份所有数据库:
sql
mysqldump -u root -p --all-databases > all.sql
只备份某张表:
sql
mysqldump -u root -p db_name table_name1 table_name2 > students.sql
恢复数据库:
-
如果已经有库了,这样恢复:
-pmysql -u root new_db < copy.sql -
如果到处的文件里包含,
create database和use,也可以直接:sqlmysql -u root -p < copy.sql
表的操作
表的CRUD
C 创建表
sql
create table 表名(
字段名 数据类型 [约束],
字段名 数据类型 [约束],
...
) charset=字符集 collate=校验集 engine=存储引擎;
字段名表示列名

创建一张新表,同时观察新的变化
R 查看表
查看所有表:
sql
show tables;
查看表结构:
sql
desc table_name;
查看完整建表语句:
sql
show create table table_name;
U 修改表结构
添加字段:
sql
alter table table_name add column 字段名 数据类型;
修改字段类型:
sql
alter table table_name modify column 字段名 新数据类型;
修改字段名:
sql
alter table table_name change column 旧字段名 新字段名 数据类型;
删除字段:
sql
alter table table_name drop column 字段名;
重命名表:
sql
rename table old_table_name to new_table_name
注意:修改操作一次只能改一个,不能同时改多个
D 删除表
sql
drop table table_name;
done~