文章目录
SELECT 1 + 1
VALUES (1, 1)
SELECT * FROM (VALUES(1,1))
初学者接触 SQL 的时候,通常是从SELECT column FROM table开始,这也是我们通常所说的基础查询。但是,实际上还有更简单的查询语句:只有SELECT,没有FROM的语句;甚至连SELECT都不需要的查询语句。😎
按照惯例,先给出各种主流数据库的实现情况:
*参考下文中的详细讨论。
SELECT 1 + 1
除了 Oracle 之外,其他 4 个数据库都支持没有FROM子句的SELECT语句。例如:
SELECT 1 + 1;
2|
这种形式的查询语句可以当作计算器使用,或者用于快速查找信息。不过,需要注意的是这种语法并不属于 SQL 标准。
对于 Oracle,可以使用以下语句:
– Oracle、MySQL
SELECT 1 + 1 FROM dual;
1+1 |
---|
dual 是 Oracle 中的一个特殊表,只有一行一列;MySQL 也提供了 dual 表。
下面的示例通过两个系统函数返回当前时间和正弦值:
SELECT current_timestamp, sin(1.57);
current_timestamp | sin(1.57) |
---|---|
2020-04-15 04:23:22 | 0.9999996829318346 |
– Oracle、MySQL
SELECT current_timestamp, sin(1.57) FROM dual;
CURRENT_TIMESTAMP | SIN(1.57) |
---|---|
2020-04-15 04:25:13 | 0.9999996829318346202105299238233270001992 |
VALUES (1, 1)
VALUES子句通常被用于INSERT语句之后,提供插入的数据值。不过,单独使用的VALUES语句也可以用于实现类似于SELECT查询的功能。例如:
– MySQL
VALUES ROW(1,‘one’), ROW(2, ‘two’);
1|one |
2|two |
– PostgreSQL、SQLite
VALUES (1,‘one’), (2, ‘two’);