SCHEMA 和 DATABASE 返回默认(当前)数据库名称

在 MySQL 中,SCHEMA() 函数和 DATABASE() 函数作用是一致的,它们均将使用 utf8 字符集返回默认(当前)数据库名称。如果没有默认数据库,DATABASE() 和 SCHEMA() 将返回 NULL。

注意:在存储的例程中,默认数据库是例程关联的数据库,它不一定与调用上下文中的默认数据库相同。

示例用法

(1)使用 DATABASE()、SCHEMA() 函数获取当前数据库名称,如下:

mysql> select DATABASE(), SCHEMA();
+------------+----------+
| DATABASE() | SCHEMA() |
+------------+----------+
| tmp        | tmp      |
+------------+----------+
1 row in set (0.02 sec)

由运行结果可知,DATABASE() 和 SCHEMA() 函数均返回的当前数据库名为 tmp。

(2)如果我们使用 mysql -u -p 连接到 MySQL 服务器后,并没有使用 use 语句选择数据库。那么,此时使用 DATABASE() 和 SCHEMA() 函数获取当前数据库名称,如下: 

C:\Users\Administrator>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select DATABASE(),SCHEMA();
+------------+----------+
| DATABASE() | SCHEMA() |
+------------+----------+
| NULL       | NULL     |
+------------+----------+
1 row in set (0.00 sec)

mysql> use mysql;
Database changed

mysql> select DATABASE(),SCHEMA();
+------------+----------+
| DATABASE() | SCHEMA() |
+------------+----------+
| mysql      | mysql    |
+------------+----------+
1 row in set (0.00 sec)

由运行结果可知,在没有选择数据库时,DATABASE() 和 SCHEMA() 函数均返回NULL。如果我们使用 use 语句切换了 mysql 数据库。再次使用 DATABASE() 和 SCHEMA() 函数则返回数据库名为 mysql。

关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号