Php 在使用MySQL/PDO时,表名是否应该以数据库名和句点作为前缀?

Php 在使用MySQL/PDO时,表名是否应该以数据库名和句点作为前缀?,php,mysql,pdo,Php,Mysql,Pdo,我看到的绝大多数查询都是在数据库名后面加上一个句点,然后再加上表名。例如: SELECT * FROM mydatabase.mytable; 然而,这似乎同样有效: SELECT * FROM mytable; 是否有理由将mydatabase.放在每个表名之前 我在PHP中通过PDO使用MySQL 是否有理由拥有mydatabase。在每个表名之前 是,如果您正在执行跨数据库查询;您实际上是在从不同的数据库访问和连接表。下面的示例中,db1和db2是不同的数据库 select t1.*,

我看到的绝大多数查询都是在数据库名后面加上一个句点,然后再加上表名。例如:

SELECT * FROM mydatabase.mytable;
然而,这似乎同样有效:

SELECT * FROM mytable;
是否有理由将
mydatabase.
放在每个表名之前

我在PHP中通过PDO使用MySQL

是否有理由拥有mydatabase。在每个表名之前

是,如果您正在执行
跨数据库查询
;您实际上是在从不同的数据库访问和连接表。下面的示例中,
db1
db2
是不同的数据库

select t1.*,t2.some_column
from db1.table1 t1  
inner join db2.table2 t2 on t1.some_id_column = t2.some_id_column;
但是,如果您是从同一数据库的表访问并对该数据库运行查询,则无需指定完全限定名(
DB\u name.SCHEMA\u name.TABLE\u name

是否有理由拥有mydatabase。在每个表名之前

是,如果您正在执行
跨数据库查询
;您实际上是在从不同的数据库访问和连接表。下面的示例中,
db1
db2
是不同的数据库

select t1.*,t2.some_column
from db1.table1 t1  
inner join db2.table2 t2 on t1.some_id_column = t2.some_id_column;

但是,如果您是从同一数据库的表访问并对该数据库运行查询,则无需指定完全限定名(
DB\u name.SCHEMA\u name.TABLE\u name

如果您只打算使用一个数据库,则无需在每个查询中定义它。使用mydatabase.mytable的唯一原因是如果您连接到多个数据库。

如果您只打算使用一个数据库,则无需在每个查询中定义它。使用mydatabase.mytable的唯一原因是您正在连接多个数据库。

我认为文档可以回答这个问题,不是吗?@arkascha我不知道。我做了一些搜索,但可能我没有使用正确的术语或查找正确的位置。首先在google中点击“mysql documentation prefix table with database name”(数据库名称的mysql文档前缀表):在介绍之后需要限定表名时,该文本清楚地说明了所需的格式:“您不需要为语句中的列引用指定tbl_名称或db_name.tbl_名称前缀,除非引用不明确。“别误会我的意思!我不想成为一个混蛋。我只是想指出,阅读文档总是值得的。@arkascha谢谢你的链接。我认为文档回答了这个问题,不是吗?@arkascha我不知道。我做了一些搜索,但可能我没有使用正确的术语或寻找正确的位置。首先点击google for“mysql documentation prefix table with database name”:当您需要在介绍之后限定表名时,该文本清楚地说明了所需的格式:“您不需要在语句中为列引用指定tbl_name或db_name.tbl_name前缀,除非引用不明确。“别误会我的意思!我不是想当混蛋。我只是想指出,阅读文档总是值得的。@arkascha谢谢你的链接。”。
select t1.*,t2.some_column
from db1.table1 t1  
inner join db2.table2 t2 on t1.some_id_column = t2.some_id_column;