这两个SQL语句是否相同?
Statement 1: SELECT * FROM table1 AS t1 WHERE 1
Statement 2: SELECT * FROM table1 t1 WHERE 1
MySQL / MariaDB和SQL标准中的第二个语句是否正确?
答案 0 :(得分:2)
这在SQL-99标准中有所介绍:https://mariadb.com/kb/en/sql-99/select-statement/
相关名称是人们通常称之为"表别名的正确术语。"
<Table reference> ::=
[ ONLY ]{<Table name> | <query name>} [ [ AS ] <Correlation name> [ (<derived Column list>) ] ] |
<Table subquery> [ AS ] <Correlation name> [ (<derived Column list>) ] |
<joined Table> |
LATERAL (<query expression>) [ AS ] <Correlation name> [ (<derived Column list>) ]
请注意,关键字AS
在其自己的方括号内,表示它是可选的,即使您为表或子查询声明了相关名称。
这是SELECT的MySQL手册:
表格参考可以使用
进行别名tbl_name AS alias_name
或tbl_name alias_name
...
奇怪的琐事:由于某些原因我不知道Oracle不允许AS
关键字用于相关名称。去图。
这也适用于用于列别名的AS
。
您可以使用可选的AS name子句为Column表达式指定名称;它将用于标识整个SELECT语句的结果。选择列表所需的语法如下。
好的,AS
关键字是可选的并不完全清楚。但语法参考显示以下内容:
SELECT [ ALL | DISTINCT ] Column list
Column list ::=
expression [ [ AS ] <Column name> ] [ , ... ] |
*
再次,在SELECT的MySQL手册中:
使用标识符对
AS
进行别名化时,select_expr
关键字是可选的。
还有一些其他情况,SQL关键字是可选的。例如,LEFT JOIN
和LEFT OUTER JOIN
是相同的操作。
这是你用委员会设计的语言得到的。
答案 1 :(得分:-1)
是的,第二个陈述是正确的! 我已经在我的测试中进行了测试。但是,你应该使用第一个声明!
答案 2 :(得分:-2)
是的,他们的意思相同。两者都是正确的。