是否可以将表(或表引用)存储在另一个表中,也许作为 BLOB 类型?
我有四个表:科目、学生、学生年龄和工作人员。我想创建一个主表,其中列出了表,以及一些其他详细信息,例如表名称(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 菜单,允许用户进行过滤,例如对于 Student_age = 11 或 Staff_id=10078。
当前,当您将鼠标悬停在“添加过滤器”上时,菜单显示如下:
Add filter > Pupils
-----------> Staff
-----------> Subject
将鼠标悬停在学生上会显示另外两个选项,然后当您将鼠标悬停在学生年龄上时会显示值:
Add filter > Pupils > Pupil name
--------------------> Pupil age > 11
--------------------------------> 12
--------------------------------> 13
-----------> Staff
-----------> Subject
在此示例中,学生是包含姓名的表,而学生年龄是包含值 11、12、13 的表。
我想从表本身驱动服务器端的这个菜单。我正在使用 MySQL,但我的问题是这是否可以在任何数据库中实现。
我最新的想法是表是否可以包含被识别为表的对象(例如表名称),而不是存储为文本。
非常感谢任何帮助
艾玛
最佳答案
不,MySQL 中没有特殊的数据类型来存储“table_name”、“column_name”等。
要回答您似乎要问的问题,是否可以在单个查询中从列返回值,然后在 SQL 查询中使用这些值作为标识符(table_name、column_name)...答案那是不。不在一个声明中。
回答标题中的问题,是的,可以将 table_name 存储在列中。 (注意
MySQL 在名为 information_schema
的数据库中提供架构信息。 information_schema.tables
和 information_schema.columns
表中列的数据类型将是数据类型的适当选择如果您需要在自己的表中存储架构信息。
如果您了解 DBMS 如何执行 SQL 语句,即处理 SQL 文本的实际步骤顺序...即语法检查(识别关键字、识别标识符、按适当的顺序等),语义检查(标识符引用有效的数据库对象,执行语句的用户具有适当的权限),准备执行计划(可用索引,可能的连接排列),然后执行准备好的计划...
然后就会明白为什么从语句执行返回的列值(或作为绑定(bind)参数提供的值)不能在语句中引用为标识符。
关于MySQL |我可以将表名存储在不同的表中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25975590/