SELECT select_list FROM table_expression [ WHERE boolean_expression ]
table_expression 引用任何数据源。它可以是现有表、视图或 VALUES 子句、多个现有表的联接结果或子查询。假设该表在目录中可用,以下代码将从 Orders 中读取所有行。
SELECT * FROM Orders
select_list 规范 * 表示查询将解析所有列。但是,在生产中不鼓励使用 *,因为它会使查询对目录更改的鲁棒性降低。相反,select_list 可以指定可用列的子集或使用所述列进行计算。例如,如果 Orders 具有名为 order_id、price 和 Tax 的列,您可以编写以下查询:
SELECT order_id, price + tax FROM Orders
查询还可以使用 VALUES 子句使用内联数据。每个元组对应于一行,并且可以提供别名来为每一列分配名称。
SELECT order_id, price FROM (VALUES (1, 2.0), (2, 3.1)) AS t (order_id, price)
可以基于 WHERE 子句过滤行。
SELECT price + tax FROM Orders WHERE id = 10
此外,可以在单行的列上调用内置和用户定义的标量函数。用户定义的函数在使用前必须注册到目录中。
SELECT PRETTY_PRINT(order_id) FROM Orders
如果指定 SELECT DISTINCT,则将从结果集中删除所有重复行(每组重复项中保留一行)。
SELECT DISTINCT id FROM Orders
对于流查询,计算查询结果所需的状态可能会无限增长。状态大小取决于不同行的数量。您可以为查询配置提供适当的状态生存时间 (TTL),以防止状态大小过大。请注意,这可能会影响查询结果的正确性。