问题描述
我正在开发一个基于 Postgresql 的应用程序,并且很好奇是否有一个聪明的解决方案来拥有依赖于语言的列标题。
我当然知道,我可以使用“as”关键字为标题设置别名,但显然必须为每个选择一遍又一遍地这样做。
所以我有一个表格,用于将技术列名称转换为助记符,以显示给用户。
至少我可以将列标题设置为 table.column 吗?
解决方法
您可以使用“视图”。您可以将视图视为伪表,它可以使用从查询创建的单个或多个表来创建。例如,如果我有一个具有以下形状的表格
Table: Pets
Id | Name | OwnerId | AnimalType
1 | Frank| 1 | 1
2 | Jim | 1 | 2
3 | Bobo | 2 | 1
我可以创建一个“视图”,在不更改表格的情况下将名称字段更改为看起来像 PetName
CREATE VIEW PetView AS
SELECT Id,Name as PetName,OwnerId,AnimalType
FROM Pets
然后我可以像使用任何其他表一样使用视图
SELECT PetName
FROM PetView
WHERE AnimalType = 1
此外,我们还可以将另一个表合并到视图中。例如,如果我们将另一个表添加到我们的所有者数据库中,那么我们可以创建一个视图,在进行其他查询之前自动将这两个表连接在一起
Table: Owners
Id | Name
1 | Susan
2 | Ravi
CREATE VIEW PetsAndOwners AS
SELECT p.Id,p.Name as PetName,o.Name as OwnerName,p.AnimalType
FROM Pets p,Owners o
WHERE p.OwnerId = o.Id
现在我们可以像在任何其他表中一样再次使用新视图(用于查询,视图中不支持插入和删除)。
SELECT * FROM PetsAndOwners
WHERE OwnerName = 'Susan'