gpt4 book ai didi

mysql - 在 MySQL 的表名中使用点是一种好习惯吗

转载 作者:行者123 更新时间:2023-11-29 01:36:26 25 4
gpt4 key购买 nike

如果我错了请纠正我,但我的理解是,在 MSSQL 中,可以使用对象表示法来引用数据库的子结构,例如 View 、模式和表,例如:

数据库.Schema.Table.Column

我相信这些对象中的每一个都有自己的属性。

我需要在 MySQL 中复制 MSSQL 数据库的结构,但我不确定什么是最佳实践。

我正在考虑使用以下命名约定在 MySQL 中创建表:

Database
|---SubStructureX.Table
| |---Column_A
| |---Column_B
|---SubStructureY.Table
| |---Column_C
| |---Column_D
|
|

因此 MySQL 查询可能如下所示:

SELECT Column_A, Column_B FROM SubStructureX.Table

简而言之,“SubstructureX.Table”只是一个包含点的表名。我这样做是为了在复制 MSSQL 结构时方便使用。我不关心点前后的东西是不是MySQL中的对象。

这是 MySQL 的良好做法吗?

最佳答案

在 MySQL 中?不,我认为在表名中使用句点根本不是好习惯。我认为这是非常糟糕的做法。点是 SQL 中的引用运算符。这意味着如果您想使用完全限定的符号来引用列,您可以这样做:

SELECT Table.Column_A ...

或者,使用反引号:

SELECT `Table`.`Column_A` ...

现在,假设您的表名为 StructureX.Table。就像空格一样,你必须引用它来转义它,因为你不希望 MySQL 认为点是一个操作符。这意味着您的 SQL 必须如下所示:

SELECT `StructureX.Table`.Column_A ...

或者,使用反引号:

SELECT `StructureX.Table`.`Column_A` ...

你不觉得这是语法错误吗?就像它应该是这样的:

SELECT `StructureX`.`Table`.`Column_A` ...

这将是维护的噩梦,作为系统分析师,我会讨厌任何将这个命名法强加给我的应用程序或开发人员。这让我想挖出我的眼睛。

Microsoft SQL Server 不同,因为它支持单个数据库中的多个模式,而 MySQL 将模式视为数据库的同义词。在 MS SQL Server 中,schemas是对象的集合,您可以使用它们来组织表,或将安全性作为一个组应用于表。默认模式是 dbo,这就是为什么您经常看到它被列出的原因。在 MS SQL Server 语法中,这:

SELECT [StructureX].[Table].[Column_A] ...

表示在当前数据库中,架构名为StructureX,表名为Table,列名为Column_A。 MS SQL Server 实际上支持 four part name ,第四部分是数据库:

SELECT [MyDatabase].[StructureX].[Table].[Column_A] ...

这里,MyDatabase是数据库名。

相同的风格在 MySQL 中也适用,只是您必须记住模式和数据库是同义词。所以,这个:

SELECT `StructureX`.`Table`.`Column_A` ...

表示数据库 StructureX、表 Table 和列 Column_A

关于mysql - 在 MySQL 的表名中使用点是一种好习惯吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com