一、查看数据库


查看数据库的语法格式为:


mysql> show databases [like '数据库名'];



实例1:查看所有的数据库


列出当前用户可查看的所有数据库:


mysql> show databases;




MySQL 数据库schema 查看 mysql查看数据库详细信息_mysql


安装 MySQL 时系统自动创建的,其各自功能如下:


        * information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息等。


       * mysql:MySQL 的核心数据库,类似于 SQL Server 中的 master 表,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。常用的比如在 mysql 数据库的 user 表中修改 root 用户密码。


       * performance_schema:主要用于收集数据库服务器性能参数。


       * sakila:MySQL 提供的样例数据库,该数据库共有 16 张表,这些数据表都是比较常见的,在设计数据库时,可以参照这些样例数据表来快速完成所需的数据表。


       * sys:MySQL 5.7 安装完成后会多一个 sys 数据库。sys 数据库主要提供了一些视图,数据都来自于 performation_schema,主要是让开发者和使用者更方便地查看性能问题。


       * world:world 数据库是 MySQL 自动创建的数据库,该数据库中只包括 3 张数据表,分别保存城市,国家和国家使用的语言等内容。



实例2:创建并查看数据库


先创建一个名为 test_db 的数据库:


mysql> create database test_db;



MySQL 数据库schema 查看 mysql查看数据库详细信息_MySQL_02

 



再使用 show databases 语句显示权限范围内的所有数据库名,如下所示:


mysql> show databases;




MySQL 数据库schema 查看 mysql查看数据库详细信息_mysql_03

 


实例3:使用 like从句


先创建三个数据库,名字分别为 test_db、db_test、db_test_db。



MySQL 数据库schema 查看 mysql查看数据库详细信息_mariadb_04



       1) 使用 LIKE 从句,查看与 test_db 完全匹配的数据库:


mysql> show databases like 'test_db';



MySQL 数据库schema 查看 mysql查看数据库详细信息_MySQL_05



       2) 使用 LIKE 从句,查看名字中包含 test 的数据库:


mysql> show databases like '%test%';



MySQL 数据库schema 查看 mysql查看数据库详细信息_mysql_06



       3) 使用 LIKE 从句,查看名字以 db 开头的数据库:


mysql> show databases like 'db%';



MySQL 数据库schema 查看 mysql查看数据库详细信息_MySQL 数据库schema 查看_07



       4) 使用 LIKE 从句,查看名字以 db 结尾的数据库:


mysql> show databases like '%db';



MySQL 数据库schema 查看 mysql查看数据库详细信息_mariadb_08



二、创建数据库


在 MySQL 中,可以使用create  database 语句创建数据库,语法格式如下:


1. create  database [if not exists] <数据库名>
 
2. [[default] character set <字符集名>]             默认字符集
 
3. [[default] collate <校对规则名>];            默认校对规则


[ ]中的内容是可选的。语法说明如下:


       * <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。


       * if not exists:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。


       * [default] character set:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。


       * [default] collate:指定字符集的默认校对规则。


       


MySQL 的字符集(character)和校对规则(collation)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。后面我们会单独讲解 MySQL 的字符集和校对规则。




实例1:最简单的创建 MySQL 数据库的语句


       在 MySQL 中创建一个名为 test_db 的数据库。在 MySQL 命令行客户端输入 SQL 语句create  database test_db;即可创建一个数据库,输入的 SQL 语句与执行结果如下。


mysql> create database test_db;



MySQL 数据库schema 查看 mysql查看数据库详细信息_数据库_09



     “Query OK, 1 row affected (0.12 sec);”提示中,“Query OK”表示上面的命令执行成功,“1 row affected”表示操作只影响了数据库中一行的记录,“0.12 sec”则记录了操作执行的时间


       若再次输入create  database test_db;语句,则系统会给出错误提示信息,如下所示:



       提示不能创建“test_db”数据库,数据库已存在。MySQL 不允许在同一系统下创建两个相同名称的数据库。


     可以加上if not exists从句,就可以避免类似错误,如下所示:


mysql> create  database if not exists test_db;




MySQL 数据库schema 查看 mysql查看数据库详细信息_MySQL_10


实例2:创建 MySQL 数据库时指定字符集和校对规则


       使用 MySQL 命令行工具创建一个测试数据库,命名为 test_db_char,指定其默认字符集为 utf8,默认校对规则为 utf8_general_ci,输入的 SQL 语句与执行结果如下所示:


mysql> create database if not exists test_db_char
 
        -> default character set utf8
 
        -> default collate utf8_general_ci;



MySQL 数据库schema 查看 mysql查看数据库详细信息_mariadb_11



show create database查看 test_db_char 数据库的定义声明,发现该数据库的指定字符集为 utf8,运行结果如下所示:


mysql> show create database test_db_char;



MySQL 数据库schema 查看 mysql查看数据库详细信息_mysql_12

 



  “1 row in set (0.00 sec)”表示集合中有 1 行信息处理时间为 0.00秒时间为 0.00 秒并不代表没有花费时间,而是时间非常短,小于 0.01 秒。




三、修改数据库


在 MySQL 中,可以使用alter database来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:


alter database [数据库名] {
 
     [default] character set <字符集名> |
 
     [default] collate <校对规则名>}


语法说明如下:


       * alter database 用于更改数据库的全局特性。


       * 使用alter database需要获得数据库alter权限。


       * 数据库名称可以忽略,此时语句对应于默认数据库。


       * character set 子句用于更改默认的数据库字符集。



实例1:查看 test_db 数据库的定义声明的执行结果如下所示:


mysql> show create database test_db;



MySQL 数据库schema 查看 mysql查看数据库详细信息_mysql_13



       使用命令行工具将数据库 test_db 的指定字符集修改为 gb2312,默认校对规则修改为 gb2312_unicode_ci,输入 SQL 语句与执行结果如下所示:


mysql> alter database test_db1
 
        -> default character set gb2312
 
        -> default collate gb2312_chinese_ci;
 
 
ERROR 1 (HY000): Can't create/write to file './test_db1/db.opt' (Errcode: 2 - No such file or directory)


出现错误的原因:数据库名称写错了test_db1改为test_db



mysql> alter database test_db
 
        -> default character set gb2312
 
        -> default collate gb2312_chinese_ci;
 
 
mysql> show create database test_db;




MySQL 数据库schema 查看 mysql查看数据库详细信息_mariadb_14

 


四、删除数据库


在 MySQL 中,当需要删除已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为:


1. drop database [ if  exists ] <数据库名>


语法说明如下:


       * <数据库名>:指定要删除的数据库名。


       * if  exists:用于防止当数据库不存在时发生错误。


       * drop database:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。



注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。



实例1:


       下面在 MySQL 中创建一个测试数据库 test_db_del


mysql> create database test_db_del;
 
mysql> show databases;



MySQL 数据库schema 查看 mysql查看数据库详细信息_MySQL 数据库schema 查看_15

 



        使用命令行工具将数据库 test_db_del 从数据库列表中删除,输入的 SQL 语句与执行结果如下所示:


mysql> drop database test_db_del;



MySQL 数据库schema 查看 mysql查看数据库详细信息_mariadb_16

 



      此时数据库 test_db_del 不存在。再次执行相同的命令,直接使用 drop database test_db_del,系统会报错,如下所示:



如果使用if exists从句,可以防止系统报此类错误,如下所示:


mysql> drop database if exists test_db_del;



MySQL 数据库schema 查看 mysql查看数据库详细信息_数据库_17

 


 使用 DROP DATABASE 命令时要非常谨慎,在执行该命令后,MySQL 不会给出任何提示确认信息。DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。因此最好在删除数据库之前先将数据库进行备份。



五、选择数据库


当用create database语句创建数据库之后,该数据库不会自动成为当前数据库,需要用 use来指定当前数据库。其语法格式为:


1. use <数据库名>


       该语句可以通知 MySQL 把<数据库名>所指示的数据库作为当前数据库。该数据库保持为默认数据库,直到语段的结尾,或者直到遇见一个不同的 use 语句。 只有使用use语句来指定某个数据库作为当前数据库之后,才能对该数据库及其存储的数据对象执行操作。



实例1:


      使用命令行工具将数据库 test_db 设置为默认数据库,输入的 SQL 语句与执行结果如下所示:


mysql> use test_db;



MySQL 数据库schema 查看 mysql查看数据库详细信息_MySQL_18



在执行选择数据库语句时,如果出现“Database changed”提示,则表示选择数据库成功。