假设您有一堆MySQL表,并且您希望最终用户能够使用PHP脚本生成包含该数据的报告。您可以在下拉列表中显示这些表中的字段名称,因此用户可以说“first_name
等于John”。大。但是,如果您希望这些字段名称更具可读性呢?例如,我希望用户能够选择“First Pet的名字”作为字段,而不是“first_pet_name
”。我绝对不希望将这些信息存储在标记中,因为我们可能会经常添加和删除表。什么是最简单的方法来解决这个问题?
答案 0 :(得分:1)
我会做一些简单的事情,例如用空格替换下划线,并在上面写上第一个字母。
答案 1 :(得分:1)
您可以创建表,将文本信息绑定到表+列对。假设您有一个表用户,并且您希望显示列名称'First Of First Pet'而不是 first_name 。
假设(表名 ColumnTextInformations ):
ParentTable | ParentColumn | Text
users | first_name | Name of First Pet
...
因此,您的列标签具有唯一标识符。
使用它很容易:
SELECT Text
FROM ColumnTextInformations
WHERE parentTable = ? AND parentColumn = ?
答案 2 :(得分:1)
我将它存储在数据库中。
CREATE TABLE human_labels (
schema varchar(64) not null,
table varchar(64) not null,
column varchar(64) not null,
label tinytext not null,
primary key (schema, table, column)
);
模式是你在mysql中通常称为“数据库”的模式(切换数据库时USE
之后的模式);而且表和列非常明显。
当然,每当更改架构时,您都必须确保DBA更新。
我相信MySQL允许对表进行评论,但不允许对列进行评论,或者您可以使用它。
编辑:将varchar更改为64,因为这是MySQL手册记录的最大大小。此外,如果您愿意,您可以对每一列进行评论 - 您可以从information_schema.columns中读取这些内容。但我仍然按照上面显示的方式进行操作,因为它更灵活(您可以轻松地在其中添加其他数据,例如“我应该显示此字段”标记)并且还允许将注释用于其预期目的。 / p>
答案 3 :(得分:0)
最简单的解决方案是使用分隔标识符。这允许您拼写包含空格,标点符号和特殊字符,SQL关键字等的表名和列名。
您必须在SQL查询中分隔表名和列名(包括用于定义它们的CREATE TABLE
语句)。
CREATE TABLE `User Facts` (
`User Name` VARCHAR(100)
...
`Name of First Pet` VARCHAR(100)
...
);
SELECT `Name of First Pet`
FROM `User Facts`
WHERE `User Name` = 'Bill';
默认情况下,MySQL使用反向标记(如上所示)作为分隔标识符。
有关详细信息,请参阅“Do different databases use different name quote”。
答案 4 :(得分:0)
我不是说这是一个好主意,但从技术上讲 - 技术上 - 如果你在整个代码中用反引号包围这些标识符,MySQL将允许你创建包含空格的表和列。例如:
mysql> create table `This is a Table` (`First Name` varchar(50),
`Name of First Pet` varchar(20));
Query OK, 0 rows affected (0.06 sec)
mysql> insert into `This is a Table` values ('Tom', 'Skippy');
Query OK, 1 row affected (0.01 sec)
mysql> select * from `This is a Table`;
+------------+-------------------+
| First Name | Name of First Pet |
+------------+-------------------+
| Tom | Skippy |
+------------+-------------------+
1 row in set (0.00 sec)
答案 5 :(得分:0)
从未听说过列别名?
选择
宠物AS Name of First Pet
,
user_name AS Name of User
来自用户
用户='比尔';