MySQL |我可以将表名存储在不同的表中吗?

时间:2014-09-22 13:40:24

标签: mysql

是否可以将表(或表引用)存储在另一个表中,可能是BLOB类型?

我有四张桌子:subject,pupil,pupil_age&员工。我想创建一个列出表的主表,以及一些其他详细信息,例如表名(table_desc)供用户查看。

例如:

table_id--|--table_name--|--table_desc
----------|--------------|------------
-------0--|--subject-----|--Subjects--
-------1--|--pupil-------|--Pupils----
-------2--|--pupil_age---|--Pupil age-
-------3--|--staff-------|--Staff-----

我不希望将table_name存储为文本,而是将其作为允许我对其执行操作的数据类型。

我有一个javascipt菜单,允许用户过滤,例如对于pupil_age = 11或staff_id = 10078。

当您将鼠标悬停在“添加过滤器”上时,菜单显示如下:

Add filter > Pupils
-----------> Staff
-----------> Subject

将鼠标悬停在Pupils上会显示另外两个选项,然后当您将鼠标悬停在Pupil年龄时,这些值会显示:

Add filter > Pupils > Pupil name 
--------------------> Pupil age > 11
--------------------------------> 12
--------------------------------> 13
-----------> Staff
-----------> Subject

在此示例中,pupil是包含名称的表,而pupil_age是包含值11,12,13的表。

我想从表格本身驱动这个菜单,服务器端。我正在使用MySQL,但我的问题是这是否可以在任何数据库中使用。

我最近的想法是一个表是否可以包含被识别为表的表名等对象,而不是存储为文本。

任何帮助都非常感激

艾玛

1 个答案:

答案 0 :(得分:2)

不,MySQL中没有用于存储" table_name"," column_name"等的特殊数据类型。

要回答您似乎要问的问题,在单个查询中是否可以从列返回值,然后在SQL查询中将这些值用作标识符(table_name,column_name)。 ..答案是否定的。不在一个声明中。

要回答标题中的问题,是的,可以将table_name存储在列中。 (注意 MySQL在名为 information_schema 的数据库中提供架构信息。如果您需要在自己的模式中存储架构信息,那么 information_schema.tables information_schema.columns 表中列的数据类型将是数据类型的合适选择表。


如果您了解DBMS如何执行SQL语句,即处理SQL文本的实际步骤顺序...即语法检查(识别关键字,识别标识符,以适当的顺序等),语义检查(标识符指有效数据库对象,执行语句的用户具有适当的权限),准备执行计划(可用索引,可能的连接排列),然后执行准备好的计划......

然后,很明显为什么从语句执行返回的列值(或作为绑定参数提供的值)不能在语句中称为标识符。