全部产品
云市场

SQL语法

更新时间:2019-12-30 16:03:18

1、ALTER TABLE

1.1 语法

  1. ALTER TABLE { ONLY table_ident | table_ident }
  2. { SET ( parameter = value [ , ... ] )
  3. | RESET ( parameter [ , ... ] )
  4. | ADD [ COLUMN ] column_name data_type [ column_constraint [ ... ] ]
  5. | RENAME TO table_ident
  6. }

1.2 说明

Alter table用于修改已有表的定义。

1.3 参数

SET/RESET

用于改变表的参数,RESET会复位表的参数为默认值。支持的参数列表,参看:这里

ADD COLUMN

用于给表添加列。

  1. ALTER TABLE test ADD col2 bigint;

RENAME TO

用于修改表名,操作执行过程中,shard可能暂时不可用。

  1. ALTER TABLE test RENAME TO newname

2、ALTER USER

2.1 语法

  1. ALTER USER username
  2. SET ( user_parameter = value [, ...] )

2.2 说明

ALTER USER用于修改已有用户。只有已存在的高权限账号或用户自身才具有修改权限。

2.3 参数

username

数据库已有的用户名

SET

用于修改用户相关参数,比如password以明文方式修改用户密码

  1. ALTER USER rds SET (password='123456')

3、CREATE TABLE

3.1 语法

  1. CREATE TABLE [ IF NOT EXISTS ] table_ident ( [
  2. {
  3. base_column_definition
  4. | column_constraint
  5. }
  6. [, ... ] ]
  7. )
  8. [ CLUSTERED [ BY (routing_column) ] INTO num_shards SHARDS ]

其中,column_constraint指

  1. { PRIMARY KEY |
  2. NOT NULL |
  3. INDEX { OFF | USING { PLAIN }
  4. }

3.2 说明:

CREATE TABLE用于创建空表。约束包括列约束和表的约束,列constraint是列定义的一部分;表的constraint不局限在固定的列,可以是多列。

3.3 参数:

IF NOT EXISTS

可选项,当表存在时,不做任何事情。

CLUSTERED

可选项,clustered指定了表分布方式。num_shards:指定表分为多少个shard,如果不指定,默认按照公式 num_shards = max(4, num_data_nodes * 2)创建shard。routing_column: 指定按照那一列进行shard。如果不指定,有primary key的话,按照primary key进行shard。否则,默认会按照文档id均匀分区。

  1. CREATE TABLE IF NOT EXISTS test (
  2. "label" TEXT,
  3. "adcode" TEXT,
  4. "trl_reason_no" BIGINT
  5. )
  6. CLUSTERED INTO 10 SHARDS

4、CREATE USER

4.1 语法

  1. CREATE USER username
  2. [ WITH ( user_parameter = value [, ...]) ]

4.2 说明

为数据库集群创建用户,创建过程允许指定密码。

4.3 参数

username

指定唯一的用户名

WITH

user_parameter支持的user参数;password以明文方式定义用户密码

  1. CREATE USER rds WITH(password='123456');

5、DELETE

5.1 语法

  1. DELETE FROM table_ident [ [AS] table_alias ] [ WHERE condition ]

5.2 说明

删除满足where条件的记录

5.3 参数

table_ident

要删除记录的表名

table_alias

表的别名

condition

可以是表达式,用于指定满足哪些条件的记录被删掉

  1. DELETE FROM test where col='201709';

6、DROP TABLE

6.1 语法

  1. DROP TABLE [IF EXISTS] table_ident

6.2 说明

DROP TABLE 用于从集群中删除一张表,使用IF EXISTS当表不存在时,也不会报错

6.3 参数

table_ident需要被删除的表的名字

7、DROP USER

7.1 语法

  1. DROP USER [ IF EXISTS ] username;

7.2 说明

DROP USER用于删除已存在的数据库用户

7.3 参数

  • IF EXISTS:用户不存在时,不会报错
  • username:数据库用户名

    8、INSERT

    8.1 语法

    1. INSERT INTO table_ident
    2. [ ( column_ident [, ...] ) ]
    3. { VALUES ( expression [, ...] ) [, ...] | ( query ) | query }
    4. [ ON CONFLICT (column_ident [, ...]) DO UPDATE SET { column_ident = expression [, ...] } |
    5. ON CONFLICT [ ( column_ident [, ...] ) ] DO NOTHING ]

    8.2 说明

    用于往表中插入数据。
  • ON CONFLICT DO UPDATE SET:用于当遇到冲突时,继续插入数据,例如,当col1是主键并且1存在时,更新col2为42
    1. INSERT INTO t (col1, col2) VALUES (1, 41)
    2. ON CONFLICT (col1) DO UPDATE SET col2 = excluded.col2 + 1
  • ON CONFLICT DO NOTHING:用于当遇到冲突时,不插入数据,例如:当col1是主键并且1存在,不做插入。
    1. INSERT INTO t (col1, col2) VALUES (1, 42)
    2. ON CONFLICT DO NOTHING

    8.3 参数

  • table_ident:已存在的表名
  • column_ident:表中的列名
  • expression:表达式或值,会赋值给对应的列
  • query:可以是select子句,指定要插入的数据

9、SELECT

9.1 语法

  1. SELECT [ ALL | DISTINCT ] * | expression [ [ AS ] output_name ] [, ...]
  2. [ OVER ( window_definition ) [, ...] ]
  3. [ FROM relation ]
  4. [ WHERE condition ]
  5. [ GROUP BY expression [, ...] [HAVING condition] ]
  6. [ UNION ALL query_specification ]
  7. [ WINDOW window_name AS ( window_definition ) [, ...] ]
  8. [ ORDER BY expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ]
  9. [ LIMIT num_results ]
  10. [ OFFSET start ]

9.2 说明

与postgres语法兼容,用于从表中查询获取数据。

9.3 参数

OVER

定义window窗口,例如:

  1. SELECT col1, ROW_NUMBER() OVER(ORDER BY col1) FROM unnest(['x','y','z']);

FROM

FROM relation 用于指定SELECT的源。

relation可以是如下对象:表名、表别名、视图,join语句、子查询等。

其中join关系:

  1. relation { , | join_type JOIN } relation [ ON join_condition ]

join_type包括:LEFT [OUTER], RIGHT [OUTER], FULL [OUTER], CROSS or INNER

WHERE

指定满足的条件GROUP BY分组,GROUP BY expression [, …],expression是聚合函数

UNION ALL

组合两个SELECT查询的结果。

ORDER BY

对结果进行排序,可以升序、降序等方式ORDER BY expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, …]

LIMIT

指定限制返回的数据条数LIMIT num_results

OFFSET

指定偏移,从start初开始OFFSET start

SELECT 查询示例:

  1. SELECT dn.start_id, dn.end_id
  2. , COUNT(concat(dn.start_id, dn.end_id)) AS count
  3. FROM t1 dn
  4. INNER JOIN t2 td ON td.vhc_id = dn.vhc_id
  5. GROUP BY dn.start_id, dn.end_id

10、SHOW SCHEMAS

10.1 语法

  1. SHOW SCHEMAS [LIKE 'pattern' | WHERE expression]

10.2 说明

用于获取集群上shcema列表

10.3 参数

LIKE

用于模式匹配

WHERE

指定满足条件的返回

11、SHOW TABLES

11.1 语法

  1. SHOW TABLES [{FROM | IN} table_schema] [LIKE 'pattern' | WHERE expression]

11.2 说明

SHOW TABLES用于从集群中获取表名列表。table_schema指定从哪个schema中获取。

11.3 参数

LIKE

用于模式匹配

WHERE

指定满足条件的返回

12、SHOW CREATE TABLE

12.1 语法

  1. SHOW CREATE TABLE table_ident

12.2 说明

SHOW CREATE TABLE 用于dump已创建的表的schema信息。

12.3 参数

  • table_ident:表名

13、UPDATE

13.1 语法

  1. UPDATE table_ident [ [AS] table_alias ] SET
  2. { column_ident = expression } [, ...]
  3. [ WHERE condition ]

13.2 说明

UPDATE用于更新满足指定条件的表的数据。SET用于设置列更新的值。

13.3 参数

  • table_ident:表名或表的标识符
  • table_alias:表别名
  • column_ident:表中的列名
  • expression:表达式或值,赋值给对应的列
  • condition:指定的满足条件的row

14、GRANT

14.1 语法

  1. GRANT { { DQL | DML | DDL | AL [,...] } | ALL [ PRIVILEGES ] }
  2. [ON {SCHEMA | TABLE} identifier [, ...]]
  3. TO user_name [, ...];

14.2 说明

GRANT用于赋予指定用户对应的权限。权限包括四类:DQL 、 DML 、 DDL 、 AL。权限说明:

DQL:

  • SELECT
  • SHOW

    DML

  • INSERT
  • UPDATE
  • DELETE

    DDL:

  • CREATE TABLE
  • DROP TABLE
  • ALTER TABLE

    AL:

  • CREATE USER
  • DROP USER

14.3 参数

  • identifier:如果指定表名,需要设置全名(即包括shcema和表名称),否则只在当前schema查找表名。
  • user_name:用户名

15、REVOKE

15.1 语法

  1. REVOKE { { DQL | DML | DDL | AL [,...] } | ALL [ PRIVILEGES ] }
  2. [ON {SCHEMA | TABLE} identifier [, ...]]
  3. FROM user_name [, ...];

15.2 说明

REVOKE用于移除某个用户的权限

15.3 参数

  • identifier:如果指定表名,需要设置全名(即包括shcema和表名称),否则只在当前schema查找表名。
  • user_name:用户名

16、EXPLAIN

16.1 语法

  1. EXPLAIN [ ANALYZE ] statement

16.2 说明

EXPLAIN用于显示statement语句的执行计划;EXPLAIN ANALYZE用于分析不同执行阶段的耗时情况。

16.3 参数

  • statement:执行的SQL语句。