testbook

SQL查询:SELECT 语句

查询语言以SELECT开头,可以通过添加多种从句从Inceptor中的表中获得信息。
语法

SELECT [ALL | DISTINCT] select_expression, select_expression, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[CLUSTER BY col_list
  | [DISTRIBUTE BY col_list] [SORT BY col_list]
]
[LIMIT number];
说明

  • SELECT 子句指定查询结果中出现的列。SELECT子句中可以包含的select_expression有:
    • FROM子句指定的表中的列
    • Literals,比如数字或者字符串。
    • 表达式,如employee.salary+1000
    • 函数(包括Inceptor自带函数和用户自定义函数)的调用。比如count(*);
    • table_reference指定查询的来源,它可以是表、视图、JOIN构造或者一个子查询。
    • WHERE关键词提供对查询结果的过滤条件。
    • 表名和列名不区分大小写。
    • 举例
      下面查询获取表t1中所有行和所有列中的信息。

      [$host]transwarp> SELECT * FROM t1;
      1
      1
      2
      3
      3
      3
      
      也可以查询表中指定的列。下面查询获取表t1中的列a中的信息:

      [$host]transwarp> SELECT a FROM t1;
      1
      1
      2
      3
      3
      3
      
      如果不指定数据库,Inceptor默认从default数据库中寻找用户指定的查询来源。要指定数据库,可以用"."来表示表和数据库的从属关系,比如

      SELECT * FROM database_name.table_name;
      
      或者还可以在查询前使用USE语句来指定当前数据库:

      USE database_name;
      SELECT query_specifications;
      USE default;
      

      ALL和DISTINCT关键字
      ALL和DISTINCT告诉Inceptor是否要返回查询中出现的重复行。选择DISTINCT选项Inceptor会不返回重复行;选择ALL则返回所有行,无论重复与否。不选默认为选择ALL。
      举例

      [$host] transwarp> SELECT a FROM t1;
      1
      1
      2
      3
      3
      3
      
      [$host] transwarp> SELECT DISTINCT a FROM t1;
      2
      1
      3
      

      LIMIT关键字
      LIMIT限制返回的行数。Inceptor随机选择返回的行。下例随机返回t1表中的2行:

      [$host] transwarp> SELECT * FROM t1 LIMIT 5 ;
      1
      1
      2
      3
      3