繁体   English   中英

以下sql语句有什么区别?

[英]Are there any differences in the following sql statements?

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仅返回“表”表中的字段,而SELECT * FROM table as t inner join table2 as t2将返回table和table2的字段

这两个语句将给出相同的结果,直到将其与具有表运算符的另一个表合并为Join,Apply为止,在这里您需要从该表中唯一标识列(尤其是歧义列)。

最佳做法是使用列名,而不要使用select *,因为这样可以使代码更具可读性,并且在任何时候更改表结构的情况下,前端代码都不会中断。

这些陈述是相同的。 您所拥有的只是表“ table”的别名“ t”。

SELECT *将返回查询中所有表的所有列。 SELECT t.*将返回名为t或别名为t的表中的所有列。 您的示例中也是如此,因为只涉及一个表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM