一列,两个名字,mysql

一列,两个名字,mysql,mysql,sql,alias,Mysql,Sql,Alias,我正在尝试标准化mysql数据库中的列命名。在转换期间,我需要能够使用新列名和旧列名访问给定表的列。 具体来说,这两个查询需要返回相同的结果 SELECT `old` FROM `table`; SELECT `new` FROM `table`; 此外,插入到新列名中的任何新数据都应通过旧列名可用;还有维切维萨。我想你是在找风景。可以将视图定义为: create view v_table as select t.*, `old` as `new` from `table` t

我正在尝试标准化mysql数据库中的列命名。在转换期间,我需要能够使用新列名和旧列名访问给定表的列。 具体来说,这两个查询需要返回相同的结果

SELECT `old` FROM `table`;
SELECT `new` FROM `table`;

此外,插入到新列名中的任何新数据都应通过旧列名可用;还有维切维萨。

我想你是在找风景。可以将视图定义为:

create view v_table as
    select t.*, `old` as `new`
    from `table` t;
假设没有命名冲突,这将给你们两个

现在,你可能想更进一步。您可以重命名旧表,并使视图采用旧表的名称:

rename table `table` to `old_table`;
create view t as
    select t.*, `old` as `new`
    from `old_table` t;

这样,引用
表的所有内容都将开始使用具有新列名的视图。

为什么不将它们都迁移到同一列名?两个不同的应用程序将访问同一个表。较新的应用程序使用标准的命名约定。旧的应用程序仍然需要能够使用旧的列名访问数据,直到我去掉它;但是,我想创建一些类似于视图的东西,但是在列级别,而不是像您建议的那样在表级别。新列名将只是旧列名的永久别名。@DrG。有些数据库支持“计算列”,您可以在其中将该定义放入表中。MySQL不是这些数据库中的一个,因此view方法可能是最好的方法。感谢您的澄清。我将创建一个视图,将旧列重命名为新列。这将迫使我的新应用程序使用一个新的表(或我的视图)名称来访问数据,但这应该是可行的。谢谢