MariaDB SCHEMA() 函数的基础用法与实例
MariaDB SCHEMA()
函数用于返回当前数据库的默认数据库名或特定表所属的数据库名。
MariaDB SCHEMA()
函数用于返回当前数据库的默认数据库名或特定表所属的数据库名。它提供了一种在存储过程、函数或触发器中获取数据库名的简单方法。
语法
MariaDB SCHEMA()
函数的语法如下:
SCHEMA()
该函数不需要任何参数。如果用于表的上下文中,则返回该表所属的数据库名;否则返回会话中默认的数据库名。
实例
基本用法
此示例展示了使用 SCHEMA()
函数获取当前会话默认数据库名的方法。
SELECT SCHEMA();
以下是该语句的输出:
+----------+
| SCHEMA() |
+----------+
| test2 |
+----------+
如果当前会话的默认数据库是 test
。
获取表所属的数据库名
如果 SCHEMA()
出现在表的上下文中,将返回该表所属的数据库名。
DROP TABLE IF EXISTS mytable;
CREATE TABLE mytable (i INT);
SELECT CONCAT('Table ', TABLE_NAME, ' in ', SCHEMA(), ' database') AS Table_Info
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'mytable';
以下是该语句的输出:
+---------------------------------+
| Table_Info |
+---------------------------------+
| Table mytable in test2 database |
+---------------------------------+
该查询从 INFORMATION_SCHEMA
中获取当前数据库的表信息,并使用 SCHEMA()
打印出数据库名。
检查默认数据库
您可以使用 SCHEMA()
检查当前缺省数据库是否存在。
SELECT IF(SCHEMA() IS NULL, 'No default database', SCHEMA()) AS Default_DB;
以下是该语句的输出:
+------------+
| Default_DB |
+------------+
| test2 |
+------------+
如果当前会话中没有设置默认数据库,则 SCHEMA()
将返回 NULL。
在存储过程中使用
SCHEMA()
常用于存储过程、函数和触发器内部。
DROP PROCEDURE IF EXISTS my_proc;
DELIMITER //
CREATE PROCEDURE my_proc(IN tbl_name VARCHAR(50))
BEGIN
SET @sql = CONCAT('SELECT count(*) FROM ', SCHEMA(), '.', tbl_name);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
CALL my_proc('mytable');
以下是该语句的输出:
+----------+
| count(*) |
+----------+
| 0 |
+----------+
该存储过程使用 SCHEMA()
来构建针对指定表的 SELECT
查询语句。
从视图中获取数据库名
SCHEMA()
也可用于从视图中获取其基表所属的数据库名。
DROP VIEW IF EXISTS myview;
CREATE VIEW myview AS
SELECT SCHEMA() AS db, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
SELECT * FROM myview LIMIT 2;
以下是该语句的输出:
+-------+------------+
| db | TABLE_NAME |
+-------+------------+
| test2 | sales_data |
| test2 | user_logs |
+-------+------------+
该视图从 INFORMATION_SCHEMA
获取所有基表信息,并使用 SCHEMA()
获取其所属数据库名。
相关函数
以下是几个与 MariaDB SCHEMA()
相关的函数:
- MariaDB
DATABASE()
函数返回当前数据库名,其行为与SCHEMA()
相同 - MariaDB
FOUND_ROWS()
函数返回最后一个 SELECT 查询返回的所有行数 - MariaDB
LAST_INSERT_ID()
函数返回最后一次自增长 ID
结论
MariaDB SCHEMA()
函数提供了一种在代码中动态获取当前数据库名的便捷方法。它可以用于存储过程、函数、触发器以及普通查询中。通过检查数据库名,可以编写更加通用、可移植的代码。该函数的语法很简单,使用也非常直观。除非您事先完全知道当前数据库名,否则在编写依赖于数据库名的代码时,使用 SCHEMA()
会更加安全可靠。总的来说,这是一个非常实用且强大的元数据函数。