创建数据库
sql
create database [if not exits] 数据库名 [create_specification] [
create_specification] ...
create_specification:
[DEFAULT] character set charset_name / charset charset_name
[DEFAULT] collate collation_name
说明:
- [ ] 中的内容是可选项 ,
if not exists
表示如果数据库不存在,就创建该数据库 - character set / charset: 指定数据库采用的字符集
- collate: 指定数据库字符集的校验规则
字符集是一组字符的集合,每个字符都有一个唯一的编码。在数据库中,字符集决定了如何存储和检索字符数据。例如,UTF-8是一种广泛使用的字符集,它可以表示世界上几乎所有的字符,包括英文字母、数字、标点符号以及各种特殊字符。
校验集是用来比较和排序字符数据的规则。它定义了如何比较两个字符的大小,以及如何对字符数据进行排序。例如,utf8_general_ci
是一种校验集,它不区分大小写,适用于大多数欧洲语言。
字符集决定了如何存储和检索字符数据,即存储数据,而校验集决定了如何比较和排序字符数据,即读取数据。
查看系统支持的字符集:
sql
show character set;
show charset;
查看系统支持的校验集:
sql
show collation;
例如:
而当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集 utf8mb3 ,校验规则是utf8mb3_ general_ci。实际上utf8是utf8mb3的别名,二者无区别。
查看系统默认的字符集
sql
show variables like 'character_set_database';
查看系统默认的校验集
sql
show variables like 'collation_database';
查看所有数据库
sql
show databases;
如上例创建了test1数据库,可以通过show databases
查看。
实际上,一个数据库对操作系统而言,本质是一个目录,在Linux系统中,/var/lib/mysql
是MySQL的数据目录,它包含了MySQL数据库的所有文件,包括数据文件、配置文件和日志文件等。
我们可以查看 /var/lib/mysql 目录下的文件,发现也多出了一个 test1 数据库。
进入数据库
sql
use 数据库名;
查看当前位于哪一个数据库
cpp
select database();
如上例进入了test数据库,并通过select database()
查看当前位置。
查看哪些用户连接MySQL
sql
show processlist;
删除数据库
sql
drop database [if exists] 数据库名;
执行删除之后的结果 :
- 数据库内部看不到对应的数据库
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
修改数据库
修改数据库主要是指修改数据库使用的字符集和校验集。
sql
alter database 数据库名
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] character set charset_name / charset charset_name
[DEFAULT] collate collation_name
实例: 将 test1 数据库字符集改成 gbk,校验集改成 gbk_chinese_ci 。
拷贝数据库
bash
mysqldump [-P 端口名 -u 用户名 -p 密码] -B 数据库名 > 备份文件路径
注意:该指令要退出mysql连接在bash中执行,而不是数据库中。
例如,如果想备份名为 test1 的数据库到 ~/mysqltest 路径下,您可以使用以下命令:
bash
mysqldump -B test1 > ~/mysqltest/test1.sql
该命令就会在 ~/mysqltest 路径下创建 test1.sql 文件并将 test1 数据库拷贝到 ~/mysqltest/test1.sql 文件下,.sql后缀表明该文件是备份数据库,实际上可加也可不加,主要是方便表示文件类型,我们可以通过 vim ~/mysqltest/test1.sql 来查看 test1.sql 文件有什么内容。
可以发现 test1.sql 文件除了拷贝数据库,还保留了整个数据库的SQL语句。
如果我们在 mysql 中将 test1 数据库删除了,就可以通过以下命令还原,注意的是该命令在 mysql 中执行。
sql
source 备份数据库的路径;
示例