如何在 MariaDB/MySQL 工作台中获取 SELECT 语句的输出,以“table.column”格式命名列,而不仅仅是“column”?

Posted

技术标签:

【中文标题】如何在 MariaDB/MySQL 工作台中获取 SELECT 语句的输出,以“table.column”格式命名列,而不仅仅是“column”?【英文标题】:How do I get the output of a SELECT statements in MariaDB/MySQL workbench to name columns in "table.column" format instead of just "column"? 【发布时间】:2021-03-23 09:29:24 【问题描述】:

我必须探索未记录的模式以提出满足某些业务需求的查询语句。

当我 SELECT * FROM foo JOIN bar ON foo.barid=bar.id;我得到一个列列表,我可以猜到一个表中的列在哪里结束,下一个从哪里开始。但是,如果它只在输出中使用列的全名,那将非常方便。即,每一列都将显示为 foo.columnname 或 bar.columnname。

是的,这比最优的要笨重,不,我永远不会在生产解决方案中使用它。但是对于探索性的戳戳和刺激,当我试图弄清楚为什么查询不能正常工作时,它会让事情变得更容易。 我如何默认打开它?

澄清:不。我不是在寻找“如何列出表/模式中的所有列。我想运行查询将表连接在一起,并查看结果,并明确而轻松地查看给定字段的表来自。

【问题讨论】:

没有这样的选项。在运行查询之前,您应该事先了解您的表架构。例如,您可以使用show table <mytable> 之类的命令来列出表格的列。 永远不要使用邪恶的SELECT *。只需选择(限定和别名)您实际想要返回的列 @Strawberry - 要“探索”一张桌子,SELECT * 很好。 【参考方案1】:

您可以查询数据库 information_schema 以帮助您了解数据库中的内容。运行以下命令将使您接近:

select table_name, column_name from information_schema.columns

https://dev.mysql.com/doc/refman/8.0/en/information-schema-columns-table.html

【讨论】:

“探索”通常也包括查看数据。【参考方案2】:

如果您必须使用 *,例如,您可以按表格进行限定

select foo.*,'//',bar.*

将首先显示 foo 中的所有列,然后是分隔符,然后是 bar 中的所有列,在 foo 中,从左到右显示表示 foo 中列的序号位置。如果显示列左对齐,则列数据类型是某种描述的字符串(varchar、char、text 等),如果右对齐,则为某种类型的数字(int、decimal、float 等)。如果数字左对齐,则基础数据类型为字符串。 mysql 中的日期数据类型采用 yyyy-mm-dd 格式,因此如果您看到这一点,那么基础数据类型很可能是日期。同样的日期时间

要了解实际数据类型并查找表上的索引、约束和外键,然后显示 create table tablename 。如果您希望所有表定义使用工作台导出或 mysqldump 实用程序。

还请阅读 information_schema https://dev.mysql.com/doc/refman/8.0/en/information-schema.html 可以为您做什么,并考虑在 Workbench 中对您的数据库进行逆向工程。

【讨论】:

这个答案解决了问题的“探索”部分。

以上是关于如何在 MariaDB/MySQL 工作台中获取 SELECT 语句的输出,以“table.column”格式命名列,而不仅仅是“column”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mariadb 或 mysql 中创建临时表?

Homebrew Mariadb Mysql 安装 root 访问被拒绝

如何在CSV导入(MariaDB / MySQL)上生成连锁主键?

Docker MariaDB/Mysql 转储

Asp.Net Core 轻松学-使用MariaDB/MySql/PostgreSQL和支持多个上下文对象

mariadb/mysql:如何将 BLOB 的/UNPACK 部分转换为整数或双精度等