数据库是一个以特定方式存储数据库对象的容器。简而言之,数据库就是一个存储数据的地方,可以将其想象成一个档案馆,而数据库对象则是存放在档案馆中的各种文件,并且是按照特定规律和格式存放的,这样可以方便管理和处理。数据库的操作包括创建数据库和删除数据库等,这些操作都是数据库管理的基础。
MySQL服务器在安装和配置完成之后,就已经包含一些必要的系统库了,可以使用SHOW语句进行查看,语法格式如下。
SQL语句示例如下。
可以看到,数据库列表中包含了4个数据库。
· mysql:MySQL服务器的核心数据库,存储了MySQL服务器正常运行所需的各种信息,包含关于数据库对象元数据(metadata)的数据字典表和系统表。
· information_schema:提供了访问数据库元数据的各种视图,包括数据库的名、数据库的表、访问权限、数据库表字段的数据类型,数据库索引的信息等。
· performance_schema:主要用于收集数据库服务器的性能参数,为MySQL服务器的运行时状态提供了一个底层的监控功能。
· sys:包含一系列方便DBA和开发人员利用performance_schema性能数据库进行性能调优和诊断的视图。其目标是把performance_schema的复杂度降低,让DBA能更好地阅读这个库中的内容,更快地了解DB的运行情况。
第3.1.1节列出的4个系统库,是用于保证MySQL服务器运行和管理功能的基本库,这些数据库不是给用户存储自己的数据用的。所以,用户需要创建新的数据库来存储自己的数据。创建数据库是在系统磁盘上划分一块区域用于数据的存储和管理。
在MySQL中创建数据库的基本SQL语法格式如下。
注意,新创建的数据库不能与已有的数据库重名。
例如,创建“atguigu_chapter3”数据库,SQL语句示例如下。
在数据库建好后,可以使用SHOW语句进行查看。
可以看到,数据库列表中多了一个新建的“atguigu_chapter3”数据库。
我们还可以使用另一个SHOW语句查看数据库的定义,语法格式如下。
例如,查看“atguigu_chapter3”数据库的定义,SQL语句示例如下。
说明:“\G”和“;”是在“命令行客户端”中用于结束SQL语句的。而“\G”的作用是将查找到的内容结构旋转90度,变成纵向结构。
从上面数据库的定义信息中发现,数据库的定义不仅只是数据库名称,还有字符集和字符集校对规则。如果在创建数据库时没有指定字符集和字符集校对规则,就会使用系统默认的。我们也可以在创建数据库时指定数据库的字符集,关于字符集和校对规则请看3.4.2节。
在MySQL中创建数据库时指定字符集和字符集校对规则的基本SQL语法格式如下。
例如,创建“atguigu_chapter3_two”数据库时指定字符集为“utf8mb4”,校对规则为“utf8mb4_0900_ai_ci”,SQL语句示例如下。
关于数据库的信息修改,主要就是字符集和校对规则的修改,不能修改数据库的名称。可以使用ALTER语句修改数据库的字符集和校对规则,语法格式如下。
例如,将“atguigu_chapter3_two”数据库的字符集修改为“utf8”,校对规则修改为“utf8_general_ci”,SQL语句示例如下。
修改后使用SHOW CREATE DATABASE语句查看“atguigu_chapter3_two”数据库的定义。
删除数据库是将已经存在的数据库从磁盘空间上清除,清除后数据库中所有数据将一起被删除。
删除数据库的语法格式如下。
例如,删除“atguigu_chapter3_two”数据库,SQL语句示例如下。
在数据库删除后,可以使用SHOW DATABASES语句进行查看。
注意,使用DROP DATABASE语句时要非常谨慎,因为在执行该语句时,MySQL不会给出任何提醒确认信息,用DROP DATABASE语句删除数据库后,数据库中存储的所有数据表和数据也将一起被删除,而且不能恢复,或者说只能恢复到之前的某个备份。
创建完数据库后,就可以在数据库中创建表、视图、函数、存储过程等数据库对象了,但是通常需要先通过USE语句指定针对哪个数据库进行操作,否则会报“No database selected”的错误,或者在创建和使用数据库对象时必须加上“数据库名.”的前缀,这样比较麻烦。使用USE语句的语法格式如下。
SQL语句示例如下。
注意,要使用的数据库必须存在,否则会报“Unknown database数据库名”的错误。