diff --git a/docs/zh/openmldb_sql/data_types/numeric_types.md b/docs/zh/openmldb_sql/data_types/numeric_types.md index 9aaabd272bc..bcd0f56b9c1 100644 --- a/docs/zh/openmldb_sql/data_types/numeric_types.md +++ b/docs/zh/openmldb_sql/data_types/numeric_types.md @@ -1,6 +1,6 @@ # 数值类型 -OpenMLDB支持布尔类型: +OpenMLDB 支持布尔类型: | 类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 | | :--- | :----- | :------------- | :------------- | :------- | diff --git a/docs/zh/openmldb_sql/language_structure/index.rst b/docs/zh/openmldb_sql/language_structure/index.rst index 06c98d202b1..818e745ae7a 100644 --- a/docs/zh/openmldb_sql/language_structure/index.rst +++ b/docs/zh/openmldb_sql/language_structure/index.rst @@ -6,8 +6,7 @@ .. toctree:: :maxdepth: 1 - keywords - object_names_identifiers + keywords_and_identifier literals_value case_sensitive comment diff --git a/docs/zh/openmldb_sql/language_structure/keywords.md b/docs/zh/openmldb_sql/language_structure/keywords.md deleted file mode 100644 index 6533e9f62df..00000000000 --- a/docs/zh/openmldb_sql/language_structure/keywords.md +++ /dev/null @@ -1,351 +0,0 @@ -# 关键字 - -## 保留关键字和非保留关键字 - -本文介绍 OpenMLDB的关键字,并对保留关键字和非保留关键字作出区分,并汇总所有的关键字以供查询使用。 - -关键字是 SQL 语句中具有特殊含义的单词,例如 `SELECT`,`UPDATE`,`DELETE` 等等。关键字都是大小写不敏感的。 - -关键字包括保留字和非保留字: - -- **非保留关键字**:能够直接作为标识符,被称为**非保留关键字**(简称**非保留字**)。 -- **保留关键字**:需要经过特殊处理——使用``符合括起才能作为标识符的字,被称为**保留关键字**(简称**保留字**)。 - -对于保留字,必须使用反引号``包裹,才能作为标识符被使用。例如:**JOIN**是OpenMLDB定义的保留字,以下语句无法成功运行: - -```sql -CREATE TABLE JOIN (a INT); -``` - -```bash -Syntax error: Unexpected keyword JOIN [at 1:14] -CREATE TABLE JOIN (a INT); - ^ -``` - -需要使用反引号包裹成``` `JOIN` ```,**JOIN**才可以作为标识符: - -```sql -CREATE TABLE `JOIN` (a INT); -``` - -```bash -SUCCEED: Create successfully -``` - - - -对于而非保留字,则不需要特别处理也可以作为标识符。例如:**DATA**是非保留字,那么以下语句可以成功运行: - -```sql -CREATE TABLE DATA (a INT); -``` - -``` -SUCCEED: Create successfully -``` - -## 关键字汇总 - -下表列出了 OpenMLDB 中所有的关键字。其中保留字用 `(R)` 来标识。 - -[A](#a)|[B](#b)|[C](#c)|[D](#d)|[E](#e)|[F](#f)|[G](#G)|[H](#h)|[I](#i)|[J](#j)|[K](#k)|[L](#l)|[M](#m)|[N](#n)|[O](#o)|[P](#p)|[Q](#q)|[R](#r)|[S](#s)|[T](#t)|[U](#u)|[V](#v)|[W](#w)|[X](#x)|[Y](#y)|[Z](#z) - -### A -- ABORT -- ACCESS -- ACTION -- ADD -- AGGREGATE -- ALL(R) -- ALTER -- ANALYZE -- AND(R) -- ANONYMIZATION -- ANY(R) -- ARRAY(R) -- AS(R) -- ASC(R) -- ASSERT -- ASSERT_ROWS_MODIFIED(R) -- AT(R) -### B -- BATCH -- BEGIN -- BETWEEN(R) -- BIGDECIMAL -- BIGNUMERIC -- BREAK -- BY(R) -### C -- CALL -- CASCADE -- CASE(R) -- CAST(R) -- CHECK -- CLAMPED -- CLUSTER -- COLLATE(R) -- COLUMN -- COLUMNS -- COMMIT -- CONFIG(R) -- CONNECTION -- CONST -- CONSTANT -- CONSTRAINT -- CONTAINS(R) -- CONTINUE -- CLONE -- CREATE(R) -- CROSS(R) -- CUBE(R) -- CURRENT(R) -- CURRENT_TIME -### D -- DATA -- DATABASE -- DATE -- DATETIME -- DECIMAL -- DECLARE -- DEFAULT(R) -- DEFINE(R) -- DEFINER -- DELETE -- DEPLOY -- DEPLOYMENT -- DESC(R) -- DESCRIBE -- DESCRIPTOR -- DETERMINISTIC -- DISTINCT(R) -- DIV(R) -- DO -- DROP -### E -- ELSE(R) -- ELSEIF -- END(R) -- ENFORCED -- ENUM(R) -- ERROR -- ESCAPE(R) -- EXCEPT(R) -- EXCEPTION -- EXCLUDE(R) -- EXECUTE -- EXISTS(R) -- EXPLAIN -- EXPORT -- EXTERNAL -- EXTRACT(R) -### F -- FALSE(R) -- FETCH(R) -- FILTER -- FILTER_FIELDS -- FILL -- FIRST -- FOLLOWING(R) -- FOR(R) -- FOREIGN -- FORMAT -- FROM(R) -- FULL(R) -- FUNCTION -### G -- GENERATED -- GLOBAL -- GRANT -- GROUP(R) -- GROUP_ROWS -- GROUPING(R) -- GROUPS(R) -### H -- HASH(R) -- HAVING(R) -- HIDDEN -### I -- IF(R) -- IGNORE(R) -- IMMEDIATE -- IMMUTABLE -- IMPORT -- IN(R) -- INCLUDE -- INOUT -- INDEX(R) -- INFILE -- INNER(R) -- INSERT -- INSTANCE_NOT_IN_WINDOW(R) -- INTERSECT(R) -- INTERVAL(R) -- ITERATE -- INTO(R) -- INVOKER -- IS(R) -- ISOLATION -### J -- JOB -- JOIN(R) -- JSON -### K -- KEY -### L -- LANGUAGE -- LAST(R) -- LATERAL(R) -- LEAVE -- LEFT(R) -- LEVEL -- LIKE(R) -### I -- ILIKE(R) -### L -- LIMIT(R) -- LOAD -- LOOKUP(R) -- LOOP -### M -- MATCH -- MATCHED -- MATERIALIZED -- MAX -- MAXSIZE -- MESSAGE -- MIN -- MOD(R) -- MODEL -- MODULE -- MERGE(R) -### N -- NATURAL(R) -- NEW(R) -- NO(R) -- NOT(R) -- NULL(R) -- NULLS(R) -- NUMERIC -### O -- OF(R) -- OFFSET -- ON(R) -- ONLY -- OPEN(R) -- OPTIONS -- OR(R) -- ORDER(R) -- OUT -- OUTFILE -- OUTER(R) -- OVER(R) -### P -- PARTITION(R) -- PERCENT -- PIVOT -### U -- UNPIVOT -### P -- POLICIES -- POLICY -- PRIMARY -- PRECEDING(R) -- PROCEDURE -- PRIVATE -- PRIVILEGES -- PROTO(R) -- PUBLIC -### Q -- QUALIFY -### R -- RAISE -- RANGE(R) -- READ -- RECURSIVE(R) -- REFERENCES -- RENAME -- REPEAT -- REPEATABLE -- REPLACE -- REPLACE_FIELDS -- RESPECT(R) -- RESTRICT -- RETURN -- RETURNS -- REVOKE -- RIGHT(R) -- ROLLBACK -- ROLLUP(R) -- ROW -- ROWS(R) -- ROWS_RANGE(R) -- RUN -### S -- SAFE_CAST -- SCHEMA -- SEARCH -- SECURITY -- SELECT(R) -- SESSION -- SET(R) -- SHOW -- SIMPLE -- SOME(R) -- SOURCE -- STORING -- STOP -- SQL -- STABLE -- START -- STATUS -- STORED -- STRUCT(R) -- SYSTEM -- SYSTEM_TIME -### T -- TABLE -- TABLESAMPLE(R) -- TARGET -- TEMP -- TEMPORARY -- THEN(R) -- TIME -- TIMESTAMP -- TO(R) -- TRANSACTION -- TRANSFORM -- TREAT(R) -- TRUE(R) -- TRUNCATE -- TYPE -### U -- UNBOUNDED(R) -- UNION(R) -- UNNEST(R) -- UNIQUE -- UNTIL -- UPDATE -- USE -- USING(R) -### V -- VALUE -- VALUES -- VARIABLES -- VOLATILE -- VIEW -- VIEWS -### W -- WEIGHT -- WHEN(R) -- WHERE(R) -- WHILE -- WINDOW(R) -- WITH(R) -- WITHIN(R) -- WRITE -### X -- XOR(R) -### Z -- ZONE \ No newline at end of file diff --git a/docs/zh/openmldb_sql/language_structure/keywords_and_identifier.md b/docs/zh/openmldb_sql/language_structure/keywords_and_identifier.md new file mode 100644 index 00000000000..51d156da076 --- /dev/null +++ b/docs/zh/openmldb_sql/language_structure/keywords_and_identifier.md @@ -0,0 +1,426 @@ +# 关键字和标识符 + +SQL 语句有两个基本组成部分: + +- **关键字**:在 SQL 中具有特定含义的单词,例如 `CREATE`、`INDEX`、`SELECT` 和 `BOOL` 等。大小写不敏感。 +- **标识符**:为 OpenMLDB 对象——数据库、表或列等所起的名称。大小写不敏感。 + +## 关键字 + +关键字构成 SQL 的词汇表,在语句中具有特定的含义(OpenMLDB 中所有的关键字请参考[关键字汇总](#关键字汇总))。OpenMLDB 支持的 SQL 关键字分两类: + +- **保留关键字**:保留关键字具有固定含义,通常不允许用作标识符,需要经过特殊处理——使用``符号包裹起才能作为标识符。 +- **非保留关键字**:在某些上下文中具有特殊含义,可以用作标识符。 + +## 标识符 + +标识符最常用作数据库、表或列等对象的名称。 + +- 标识符可以被反引号包裹。反引号包裹保留关键字也可以成为标识符。 + + ```sql + SELECT * FROM t; + -- 可以写成 + SELECT * FROM `t`; + + CREATE TABLE `JOIN` (`select` INT); + + ``` + +- 不允许标识符中包含`字符。 + + ```sql + CREATE TABLE a`b (a int); + + Syntax error: Unclosed identifier literal [at 1:15] + CREATE TABLE a`b (a int); + ``` + +### 标识符规则 + +OpenMLDB SQL 语法中标识符设定规则:以 Unicode 字母或下划线 (_) 开头。后续字符可以是字母、下划线、数字(0-9) 或美元符号 ($)。 + +### 限定标识符/非限定标识符 + +OpenMLDB 中的对象名可以是限定的或者非限定的标识符。 + +**限定标识符** + +至少包含一个限定词来描述特定的上下文环境。 + +- 限定词和对象名使用用 `.` 隔开。如 `db_name.tbl_name`。 +- 当包含多个限定词时,限定词与限定词使用 `.` 符号隔开。如 `db_name.tbl_name.col_name`。 +- `.` 的左右两端可以出现空格,`tbl_name.col_name` 等于 `tbl_name . col_name`。 + +**示例:** + +已知系统中有两个数据库,分别为 `db0` 和 `db1`。`db1` 中有表 `t1`。当使用 `USE db0` 将系统的默认数据库设置为 `db0`,而要表示表 `t1` 时,就得使用 `db1.t1` 这个限定标识符。 +```sql + +USE db0; + +SELECT * FROM db1.t1; +``` + +**非限定标识符** + +非限定标识符不包含任何限定词的修饰,只包含标识符本身。在给定上下文时直接使用标识符不会引起混淆的情况下,可以使用非限定标识符来表示对象。 + +**示例:** + +`USE db1` 将系统的默认数据库设置为 `db1`。此时,可以直接使用非限定的对象名 `t1` 来代表默认数据库 `db1` 中的表 `t1`。 + +``` +USE db1; +SELECT * from t1; +``` + +## 关键字汇总 + +以下列出了 OpenMLDB 中所有的关键字。其中保留字用 `(R)` 来标识。 + +[A](#a)|[B](#b)|[C](#c)|[D](#d)|[E](#e)|[F](#f)|[G](#g)|[H](#h)|[I](#i)|[J](#j)|[K](#k)|[L](#l)|[M](#m)|[N](#n)|[O](#o)|[P](#p)|[Q](#q)|[R](#r)|[S](#s)|[T](#t)|[U](#u)|[V](#v)|[W](#w)|[X](#x)|[Z](#z) + +#### A + +- ABORT +- ACCESS +- ACTION +- ADD +- AGGREGATE +- ALL(R) +- ALTER +- ANALYZE +- AND(R) +- ANONYMIZATION +- ANY(R) +- ARRAY(R) +- AS(R) +- ASC(R) +- ASSERT +- ASSERT_ROWS_MODIFIED(R) +- AT(R) + +#### B + +- BATCH +- BEGIN +- BETWEEN(R) +- BIGDECIMAL +- BIGNUMERIC +- BREAK +- BY(R) + +#### C + +- CALL +- CASCADE +- CASE(R) +- CAST(R) +- CHECK +- CLAMPED +- CLUSTER +- COLLATE(R) +- COLUMN +- COLUMNS +- COMMIT +- CONFIG(R) +- CONNECTION +- CONST +- CONSTANT +- CONSTRAINT +- CONTAINS(R) +- CONTINUE +- CLONE +- CREATE(R) +- CROSS(R) +- CUBE(R) +- CURRENT(R) +- CURRENT_TIME + +#### D + +- DATA +- DATABASE +- DATE +- DATETIME +- DECIMAL +- DECLARE +- DEFAULT(R) +- DEFINE(R) +- DEFINER +- DELETE +- DEPLOY +- DEPLOYMENT +- DESC(R) +- DESCRIBE +- DESCRIPTOR +- DETERMINISTIC +- DISTINCT(R) +- DIV(R) +- DO +- DROP + +#### E + +- ELSE(R) +- ELSEIF +- END(R) +- ENFORCED +- ENUM(R) +- ERROR +- ESCAPE(R) +- EXCEPT(R) +- EXCEPTION +- EXCLUDE(R) +- EXECUTE +- EXISTS(R) +- EXPLAIN +- EXPORT +- EXTERNAL +- EXTRACT(R) + +#### F + +- FALSE(R) +- FETCH(R) +- FILTER +- FILTER_FIELDS +- FILL +- FIRST +- FOLLOWING(R) +- FOR(R) +- FOREIGN +- FORMAT +- FROM(R) +- FULL(R) +- FUNCTION + +#### G + +- GENERATED +- GLOBAL +- GRANT +- GROUP(R) +- GROUP_ROWS +- GROUPING(R) +- GROUPS(R) + +#### H + +- HASH(R) +- HAVING(R) +- HIDDEN + +#### I + +- IF(R) +- IGNORE(R) +- IMMEDIATE +- IMMUTABLE +- IMPORT +- IN(R) +- INCLUDE +- INOUT +- INDEX(R) +- INFILE +- INNER(R) +- INSERT +- INSTANCE_NOT_IN_WINDOW(R) +- INTERSECT(R) +- INTERVAL(R) +- ITERATE +- INTO(R) +- INVOKER +- IS(R) +- ISOLATION +- ILIKE(R) + +#### J + +- JOB +- JOIN(R) +- JSON + +#### K + +- KEY + +#### L + +- LANGUAGE +- LAST(R) +- LATERAL(R) +- LEAVE +- LEFT(R) +- LEVEL +- LIKE(R) +- LIMIT(R) +- LOAD +- LOOKUP(R) +- LOOP + +#### M + +- MATCH +- MATCHED +- MATERIALIZED +- MAX +- MAXSIZE +- MESSAGE +- MIN +- MOD(R) +- MODEL +- MODULE +- MERGE(R) + +#### N + +- NATURAL(R) +- NEW(R) +- NO(R) +- NOT(R) +- NULL(R) +- NULLS(R) +- NUMERIC + +#### O + +- OF(R) +- OFFSET +- ON(R) +- ONLY +- OPEN(R) +- OPTIONS +- OR(R) +- ORDER(R) +- OUT +- OUTFILE +- OUTER(R) +- OVER(R) + +#### P + +- PARTITION(R) +- PERCENT +- PIVOT +- POLICIES +- POLICY +- PRIMARY +- PRECEDING(R) +- PROCEDURE +- PRIVATE +- PRIVILEGES +- PROTO(R) +- PUBLIC + +#### Q + +- QUALIFY + +#### R + +- RAISE +- RANGE(R) +- READ +- RECURSIVE(R) +- REFERENCES +- RENAME +- REPEAT +- REPEATABLE +- REPLACE +- REPLACE_FIELDS +- RESPECT(R) +- RESTRICT +- RETURN +- RETURNS +- REVOKE +- RIGHT(R) +- ROLLBACK +- ROLLUP(R) +- ROW +- ROWS(R) +- ROWS_RANGE(R) +- RUN + +#### S + +- SAFE_CAST +- SCHEMA +- SEARCH +- SECURITY +- SELECT(R) +- SESSION +- SET(R) +- SHOW +- SIMPLE +- SOME(R) +- SOURCE +- STORING +- STOP +- SQL +- STABLE +- START +- STATUS +- STORED +- STRUCT(R) +- SYSTEM +- SYSTEM_TIME + +#### T + +- TABLE +- TABLESAMPLE(R) +- TARGET +- TEMP +- TEMPORARY +- THEN(R) +- TIME +- TIMESTAMP +- TO(R) +- TRANSACTION +- TRANSFORM +- TREAT(R) +- TRUE(R) +- TRUNCATE +- TYPE + +#### U + +- UNBOUNDED(R) +- UNION(R) +- UNNEST(R) +- UNIQUE +- UNTIL +- UPDATE +- USE +- USING(R) +- UNPIVOT + +#### V + +- VALUE +- VALUES +- VARIABLES +- VOLATILE +- VIEW +- VIEWS + +#### W + +- WEIGHT +- WHEN(R) +- WHERE(R) +- WHILE +- WINDOW(R) +- WITH(R) +- WITHIN(R) +- WRITE + +#### X + +- XOR(R) + +#### Z + +- ZONE diff --git a/docs/zh/openmldb_sql/language_structure/object_names_identifiers.md b/docs/zh/openmldb_sql/language_structure/object_names_identifiers.md deleted file mode 100644 index ed7d2671c55..00000000000 --- a/docs/zh/openmldb_sql/language_structure/object_names_identifiers.md +++ /dev/null @@ -1,59 +0,0 @@ -# SQL 对象名 - -本文介绍 OpenMLDB SQL 语句中的对象名。 - -对象名用于命名OpenMLDB中所有的对象,包括 database、table、column、index、function、deployment 等等。在 SQL 语句中,可以通过标识符 (identifier) 来引用这些对象。 - -## 标识符 - -标识符可以被反引号包裹,即 `SELECT * FROM t` 也可以写成 `SELECT * FROM `t``。但如果标识符中存在至少一个特殊符号,或者它是一个保留关键字,那就必须使用反引号包裹来引用它所代表的模式对象。 - -```sql -CREATE TABLE `JOIN` (`select` INT); -``` - -不允许标识符中包含`字符。 - -```sql -CREATE TABLE a`b (a int); -``` - -``` -Syntax error: Unclosed identifier literal [at 1:15] -CREATE TABLE a`b (a int); -``` - - - -## 限定标识符 - - - -OpenMLDB中的对象名可以是限定的或者非限定的标识符。 - -### 限定的对象名: - -限定的对象名至少包含一个限定词来描述特定的上下文环境。 - -- 限定词和对象名使用用`.`隔开。如`db_name.tbl_name`。 -- 当包含多个限定词时,限定词与限定词使用`.`符号隔开。如`db_name.tbl_name.col_name`。 -- `.` 的左右两端可以出现空格,`tbl_name.col_name` 等于 `tbl_name . col_name`。 - -例如,已知系统中有两个数据库,分别为`db0`和`db1`。`db1`中有表t1。当我们使用`USE db0`将系统的默认数据库设置为`db0`。当使用`db1.t1`这个限定标识符来表示一张表时,表`t1`所在的上下文是在数据库`db1`。 - -```sql -USE db0; -SELECT * FROM db1.t1; -``` - -### 非限定的对象名: - -非限定的对象名不包含任何限定词的修饰,只包含对象标识符本身 - -如果在给定上下文下,直接使用标识符不会引起混淆,那么就可以非限定的使用标识符来表示对象。例如,我们使用`USE db1`将系统的默认数据库设置为`db1`。此时,可以直接使用非限定的对象名`t1`来代表默认数据库`db0`中的表`t1` - -``` -USE db1; -SELECT * from t1; -``` - diff --git a/docs/zh/quickstart/concepts/modes.md b/docs/zh/quickstart/concepts/modes.md index a1ac8640786..f163532bada 100644 --- a/docs/zh/quickstart/concepts/modes.md +++ b/docs/zh/quickstart/concepts/modes.md @@ -41,10 +41,10 @@ OpenMLDB CLI 启动以后的**默认模式为离线模式**。离线数据导入 - 异步执行的 SQL 由内部的 TaskManager 进行管理,可以通过 `SHOW JOBS`、`SHOW JOB`、`STOP JOB` 命令进行查看和管理。 :::{tip} -和很多关系型数据库系统不同,`SELECT` 命令在离线模式下默认为异步执行,如需设置为同步执行,参考[设置离线模式下命令的同步执行](../openmldb_sql/ddl/SET_STATEMENT.md#id4)。在离线特征开发阶段,如果使用异步执行,强烈建议使用 `SELECT INTO` 语句进行开发调试,可以将结果导出到文件,方便查看。 +和很多关系型数据库系统不同,`SELECT` 命令在离线模式下默认为异步执行,如需设置为同步执行,参考[设置离线模式下命令的同步执行](https://openmldb.ai/docs/zh/main/openmldb_sql/ddl/SET_STATEMENT.html#id4)。在离线特征开发阶段,如果使用异步执行,强烈建议使用 `SELECT INTO` 语句进行开发调试,可以将结果导出到文件,方便查看。 ::: -用于特征方案部署的命令 `DEPLOY` 也在离线模式下执行。其规范可以参阅 [OpenMLDB SQL 上线规范和要求](../openmldb_sql/deployment_manage/ONLINE_REQUEST_REQUIREMENTS.md)。 +用于特征方案部署的命令 `DEPLOY` 也在离线模式下执行。其规范可以参阅 [OpenMLDB SQL 上线规范和要求](https://openmldb.ai/docs/zh/main/openmldb_sql/deployment_manage/ONLINE_REQUEST_REQUIREMENTS.html)。 离线模式设置命令 (OpenMLDB CLI):`SET @@execute_mode='offline'`