SELECT * FROM table t
SELECT t.* FROM table t
我尝试了它,它产生了相同的结果,但我想确保因为我正在重构一段使用第二个版本的代码,我很惊讶,因为它的编写时间更长,而且不那么简单。
这里有什么隐藏的东西吗?
MySQL 版本:5.5.29-0ubuntu0.12.04.2 (Ubuntu)
在您的情况下,这两种说法都是相同的。
如果您在一个查询中连接多个表,则不会。
select *
选择所有列。
select t.*
选择表 t 的所有列(或分配别名 t 的表)
SELECT * FROM table t and SELECT t.* FROM table t
返回整个表
SELECT t.* FROM table as t inner join table2 as t2
将仅返回“table”表中
SELECT * FROM table as t inner join table2 as t2
的字段,而将返回 table 和 table2 的字段
这两个语句将给出相同的结果,直到它与另一个表与某个表运算符组合为 Join,Apply 您需要从该表中唯一标识列(更具体地说是模棱两可的列)。
作为最佳实践,您应该使用列名而不是使用 select *,因为它使代码更具可读性,并且前端代码不会在表结构在任何时间点发生更改的情况下中断。
陈述是相同的。您所拥有的只是名为“t”的表“table”的别名。
SELECT *
将返回查询中所有表的所有列。SELECT t.*
将返回名为或别名为 的表中的所有列t
。在您的示例中也是如此,因为只涉及一个表。