Move the docs folder
This commit is contained in:
committed by
LINxiansheng
parent
7c6dcc6712
commit
d42f317422
@ -0,0 +1,329 @@
|
||||
通用语法
|
||||
=========================
|
||||
|
||||
|
||||
|
||||
常量
|
||||
-----------
|
||||
|
||||
* `INT_VALUE`:匹配整数类型常量,如`123`。
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
* `DECIMAL_VALUE`:匹配定点类型常量,如`123.456`。
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
* `STR_VALUE`:匹配字符串常量,如`abc`。
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
* `NULL`:匹配NULL常量。
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
* `STORAGE_SIZE`:匹配存储长度常量,整数形式默认单位为字节,字符串形式可指定单位为M或G,如`1024`或`'500M'`。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
const_value:
|
||||
INT_VALUE
|
||||
| DECIMAL_VALUE
|
||||
| STR_VALUE
|
||||
| NULL
|
||||
| STORAGE_SIZE
|
||||
|
||||
STORAGE_SIZE:
|
||||
INT_VALUE
|
||||
| 'INT_VALUE[M|G]'
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
字符集
|
||||
------------
|
||||
|
||||
```javascript
|
||||
charset:
|
||||
default_charset
|
||||
| column_charset
|
||||
|
||||
default_charset:
|
||||
[DEFAULT] {CHARSET | CHARACTER SET} [=] {UTF8 | UTF8MB4 | BINARY}
|
||||
|
||||
column_charset:
|
||||
{CHARSET | CHARACTER SET} {UTF8 | UTF8MB4 | BINARY}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
排序规则
|
||||
-------------
|
||||
|
||||
```javascript
|
||||
collate:
|
||||
default_collate
|
||||
| column_collate
|
||||
|
||||
default_collate:
|
||||
[DEFAULT] COLLATE [=] {UTF8MB4_GENERAL_CI | UTF8MB4_BIN | BINARY}
|
||||
|
||||
column_collate:
|
||||
COLLATE {UTF8MB4_GENERAL_CI | UTF8MB4_BIN | BINARY}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
数据类型
|
||||
-------------
|
||||
|
||||
```javascript
|
||||
data_type:
|
||||
TINYINT[(precision)] [UNSIGNED] [ZEROFILL]
|
||||
| SMALLINT[(precision)] [UNSIGNED] [ZEROFILL]
|
||||
| MEDIUMINT[(precision)] [UNSIGNED] [ZEROFILL]
|
||||
| INT[(precision)] [UNSIGNED] [ZEROFILL]
|
||||
| INTEGER[(precision)] [UNSIGNED] [ZEROFILL]
|
||||
| BIGINT[(precision)] [UNSIGNED] [ZEROFILL]
|
||||
| FLOAT[(precision, scale)] [UNSIGNED] [ZEROFILL]
|
||||
| DOUBLE[(precision, scale)] [UNSIGNED] [ZEROFILL]
|
||||
| DECIMAL[(precision [, scale])] [UNSIGNED] [ZEROFILL]
|
||||
| NUMERIC[(precision [, scale])] [UNSIGNED] [ZEROFILL]
|
||||
| DATETIME[(scale)]
|
||||
| TIMESTAMP[(scale)]
|
||||
| DATE
|
||||
| TIME[(scale)]
|
||||
| YEAR
|
||||
| VARCHAR(length) column_charset column_collate
|
||||
| VARBINARY(length)
|
||||
| CHAR[(length)] column_charset column_collate
|
||||
| BINARY[(length)]
|
||||
| TINYTEXT column_charset column_collate
|
||||
| TINYLOB
|
||||
| TEXT[(length)] column_charset column_collate
|
||||
| BLOB[(length)]
|
||||
| MEDIUMTEXT column_charset column_collate
|
||||
| MEDIUMBLOB
|
||||
| LONGTEXT column_charset column_collate
|
||||
| LONGBLOB
|
||||
|
||||
precision | scale | length:
|
||||
INT_VALUE
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SQL属性
|
||||
--------------
|
||||
|
||||
* 对象名
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
tenant_name | pool_name | unit_name | zone_name | region_name:
|
||||
STR_VALUE
|
||||
|
||||
database_name | table_name | table_alias_name | column_name| column_alias_name | partition_name | subpartition_name:
|
||||
STR_VALUE
|
||||
|
||||
index_name | view_name | object_name | constraint_name | tablegroup_name:
|
||||
STR_VALUE
|
||||
|
||||
outline_name | user_name:
|
||||
STR_VALUE
|
||||
|
||||
table_factor:
|
||||
[[database_name].] table_name
|
||||
|
||||
column_factor:
|
||||
[table_factor.] column_name
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* 表达式
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
expression:
|
||||
const_value
|
||||
| column_factor
|
||||
| operator_expression
|
||||
| function_expression
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* 注释
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
comment:
|
||||
COMMENT 'comment_text'
|
||||
|
||||
comment_text:
|
||||
STR_VALUE
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
分布式属性
|
||||
--------------
|
||||
|
||||
|
||||
|
||||
* `PRIMARY_ZONE`:指定数据的主副本分布策略。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
primary_zone:
|
||||
PRIMARY_ZONE [=] zone_name
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* `ZONE_LIST`:指定租户的资源分布策略。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
zone_list:
|
||||
ZONE_LIST [=] (zone_name [, zone_name ...])
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* `REPLICA_NUM`:指定数据的副本份数。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
replica_num:
|
||||
REPLICA_NUM [=] INT_VALUE
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* `TABLEGROUP`:指定多份数据的主副本分布策略。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
tablegroup:
|
||||
default_tablegroup
|
||||
| table_tablegroup
|
||||
|
||||
default_tablegroup:
|
||||
DEFAULT TABLEGROUP [=] {tablegroup_name | NULL}
|
||||
|
||||
table_tablegroup:
|
||||
TABLEGROUP [=] {tablegroup_name | NULL}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
存储属性
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
* `BLOCK_SIZE`:指定对象存储的微块长度。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
block_size:
|
||||
BLOCK_SIZE [=] INT_VALUE
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* `COMPRESSION`:指定对象存储的压缩算法。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
compression:
|
||||
COMPRESSION [=] {NONE | LZ4_1.0 | LZ0_1.0 | SNAPPY_1.0 | ZLIB_1.0}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* `PCTFREE`:指定对象存储的宏块预留百分比。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
pctfree:
|
||||
PCTFREE [=] INT_VALUE
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* `TABLET_SIZE`:指定并行合并时单个任务的最小分片。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
tablet_size:
|
||||
TABLET_SIZE [=] INT_VALUE
|
||||
```
|
||||
|
||||
|
||||
109
docs/docs-cn/10.sql-reference/5.sql-statement/10.alter-user.md
Normal file
109
docs/docs-cn/10.sql-reference/5.sql-statement/10.alter-user.md
Normal file
@ -0,0 +1,109 @@
|
||||
ALTER USER
|
||||
===============================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句主要用于执行以下操作:
|
||||
|
||||
* 修改 OceanBase 用户的密码。
|
||||
|
||||
* 锁定或者解锁用户,且被锁定的用户不允许登录。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
必须拥有全局 UPDATE USER 的权限,才可以执行本命令。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
* 修改用户密码
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER USER 'username' IDENTIFIED BY 'password';
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 锁定用户
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER USER user [lock_option]
|
||||
|
||||
lock_option:{
|
||||
ACCOUNT LOCK
|
||||
| ACCOUNT UNLOCK}
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|----------------|--------|
|
||||
| ACCOUNT UNLOCK | 锁定用户。 |
|
||||
| ACCOUNT UNLOCK | 解锁用户。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 修改密码
|
||||
|
||||
|
||||
|
||||
|
||||
执行以下命令将用户 sqluser01 的密码修改为 abc123。
|
||||
|
||||
```javascript
|
||||
ALTER USER 'sqluser01' IDENTIFIED BY 'abc123';
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 锁定用户
|
||||
|
||||
|
||||
|
||||
|
||||
锁定用户 obsqluser01。
|
||||
|
||||
```javascript
|
||||
ALTER USER 'obsqluser01' ACCOUNT LOCK;
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 解锁用户
|
||||
|
||||
|
||||
|
||||
|
||||
解锁用户 obsqluser01。
|
||||
|
||||
```javascript
|
||||
ALTER USER 'obsqluser01' ACCOUNT UNLOCK;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,73 @@
|
||||
CREATE DATABASE
|
||||
====================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------------------
|
||||
|
||||
该语句用于创建数据库,并可以指定数据库的默认属性(如数据库默认字符集,校验规则等)。
|
||||
|
||||
`CREATE DATABASE` 与 `CREATE SCHEMA` 是等价的。
|
||||
|
||||
语法
|
||||
-----------------------
|
||||
|
||||
```javascript
|
||||
create_database_stmt:
|
||||
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] database_name [database_option_list]
|
||||
|
||||
database_option_list:
|
||||
database_option [database_option ...]
|
||||
|
||||
database_option:
|
||||
[DEFAULT] {CHARACTER SET | CHARSET} [=] charset_name
|
||||
| [DEFAULT] COLLATE [=] collation_name
|
||||
| REPLICA_NUM [=] int_num
|
||||
| PRIMARY_ZONE [=] zone_name
|
||||
| {READ ONLY | READ WRITE}
|
||||
| DEFAULT TABLEGROUP [=] {NULL | table_group_name}
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-----------------------------------------------------|-----------------------------------------------------|
|
||||
| database_name | 指定要修改属性的数据库名称。 |
|
||||
| \[DEFAULT\] {CHARACTER SET \| CHARSET} charset_name | 指定要修改的字符集。 `DEFAULT` 关键字是可选的,不影响语义。 |
|
||||
| \[DEFAULT\] COLLATE collation_name | 指定校对规则。 `DEFAULT` 关键字是可选的,不影响语义。 |
|
||||
| REPLICA_NUM int_num | 指定副本数。 |
|
||||
| PRIMARY_ZONE zone_name | 指定数据库的 Primary Zone。 |
|
||||
| READ ONLY \| READ WRITE | 设置数据库级只读或读写属性。 |
|
||||
| DEFAULT TABLEGROUP table_group_name | 设置数据库默认表组信息,`NULL` 表示取消数据库默认表组。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------------------
|
||||
|
||||
* 创建数据库 `test2`,并指定字符集为 `UTF8`。
|
||||
|
||||
```javascript
|
||||
obclient> CREATE DATABASE test2 DEFAULT CHARACTER SET UTF8;
|
||||
Query OK, 1 row affected (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建读写属性的数据库 `test3`。
|
||||
|
||||
```javascript
|
||||
obclient> CREATE DATABASE test3 READ WRITE;
|
||||
Query OK, 1 row affected (0.03 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
102
docs/docs-cn/10.sql-reference/5.sql-statement/12.create-index.md
Normal file
102
docs/docs-cn/10.sql-reference/5.sql-statement/12.create-index.md
Normal file
@ -0,0 +1,102 @@
|
||||
CREATE INDEX
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来创建索引。索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构。其作用主要在于提高查询的速度,降低数据库系统的性能开销。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
CREATE [UNIQUE] INDEX indexname
|
||||
ON tblname (index_col_name,...)
|
||||
[index_type] [index_options]
|
||||
index_type:
|
||||
USING BTREE
|
||||
|
||||
index_options:
|
||||
index_option [index_option...]
|
||||
|
||||
index_option:
|
||||
GLOBAL | LOCAL
|
||||
| COMMENT 'string'
|
||||
| COMPRESSION [=] {NONE | LZ4_1.0 | LZO_1.0 | SNAPPY_1.0 | ZLIB_1.0}
|
||||
| BLOCK_SIZE [=] size
|
||||
| STORING(columname_list)
|
||||
| VISIBLE | INVISIBLE
|
||||
|
||||
index_col_name:
|
||||
colname [(length)] [ASC | DESC]
|
||||
|
||||
columname_list:
|
||||
colname [, colname...]
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-----------------|---------------------------------------------------------------------------------------------------------------------------|
|
||||
| indexname | 指定要创建的索引名称。 |
|
||||
| tblname | 指过索引所属的表名。 |
|
||||
| index_col_name | 指定索引的列名,每个列名后都支持ASC(升序),不支持DESC(降序)。默认为升序。 建立索引的排序方式为:首先以index_col_name中第一个列的值排序;该列值相同的记录,按下一列名的值排序;以此类推。 |
|
||||
| index_type | 索引类型,只支持USING BTREE,以B树为索引。 |
|
||||
| UNIQUE | 指定为唯一索引。 |
|
||||
| index_option | 指定索引选项,多个index_option以空格分隔。 |
|
||||
| GLOBAL \| LOCAL | 指定该索引是全局索引或局部索引,默认是GLOBAL。 |
|
||||
| COMMENT | 指定注释。 |
|
||||
| COMPRESSION | 指定压缩算法。 |
|
||||
| BLOCK_SIZE | 指定微块大小。 |
|
||||
| STORING | 表示索引表中冗余存储某些列,以提高系统查询性能。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
1. 执行以下命令,创建表test。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE TABLE test (c1 int primary key, c2 VARCHAR(10));
|
||||
```
|
||||
|
||||
|
||||
|
||||
2. 执行以下命令,创建表test的索引。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE INDEX test_index ON test (c1, c2 DESC);
|
||||
```
|
||||
|
||||
|
||||
|
||||
3. 执行以下命令,查看表test的索引。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SHOW INDEX FROM test;
|
||||
```
|
||||
|
||||
|
||||
@ -0,0 +1,92 @@
|
||||
CREATE OUTLINE
|
||||
===================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来创建 OUTLINE。可以通过两种方式创建,一种是通过 SQL_TEXT(用户执行的带参数的原始语句),另一种是通过 SQL_ID 创建。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
创建 OUTLINE 需要进入对应的 DataBase 下执行。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
* **使用** **SQL_TEXT 创建** **OUTLINE**
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE [OR REPLACE] OUTLINE outline_name ON stmt [ TO target_stmt ]
|
||||
```
|
||||
|
||||
|
||||
|
||||
* **使用** **SQL_ID 创建** **OUTLINE**
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE OUTLINE outline_name ON sql_id USING HINT hint;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| outline_name | 指定要创建的 OUTLINE 名称。 |
|
||||
| OR REPLACE | 指定 OR REPLACE 后,如果要创建的 OUTLINE 已存在,则会替换原有的 OUTLINE。 |
|
||||
| stmt | 一般为一个带有 hint 和原始参数的 DML 语句。 |
|
||||
| TO target_stmt | 如果不指定 TO target_stmt, 则表示如果数据库接受的SQL参数化后与stmt去掉hint参数化文本相同,则将该SQL绑定stmt中hint生成执行计划;如果期望对含有hint的语句进行固定计划,则需要 TO target_stmt 来指明原始的SQL。 **注意** 在使用target_stmt时,严格要求stmt与target_stmt在去掉hint后完全匹配。 |
|
||||
| sql_id | 如果sql_id对应的SQL语句已经有hint,则创建OUTLINE指定的hint会覆盖原始语句中所有hint。 |
|
||||
| hint | 格式为 /\*+ xxx \*/ 。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 使用 SQL_TEXT 创建 OUTLINE
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE OUTLINE otl_idx_c2
|
||||
ON SELECT/*+ index(t1 idx_c2)*/ * FROM t1 WHERE c2 = 1;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* 使用 SQL_ID 创建 OUTLINE
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE OUTLINE otl_idx_c2
|
||||
ON "ED570339F2C856BA96008A29EDF04C74"
|
||||
USING HINT /*+ index(t1 idx_c2)*/ ;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
使用 SQL_TEXT 方式创建的 OUTLINE 会覆盖 SQL_ID 方式创建的 OUTLINE,SQL_TEXT 方式创建的优先级高。
|
||||
@ -0,0 +1,50 @@
|
||||
CREATE RESOURCE POOL
|
||||
=========================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------------------
|
||||
|
||||
该语句用来创建资源池,用于描述可以分配给租户的资源单元集合。
|
||||
|
||||
格式
|
||||
-----------------------
|
||||
|
||||
```javascript
|
||||
CREATE RESOURCE POOL poolname
|
||||
UNIT [=] unitname,
|
||||
UNIT_NUM [=] unitnum,
|
||||
ZONE_LIST [=] ('zone' [, 'zone' ...]);
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-----------|---------------------------------------------------|
|
||||
| poolname | 指定要创建的资源池的名称。 |
|
||||
| UNIT | 指定资源单元的名称。 |
|
||||
| UNIT_NUM | 指定要创建的单个 Zone 下的单元个数,取值要小于单个 Zone 中的 OBServer 个数。 |
|
||||
| ZONE_LIST | 指定要创建的资源池所属的集群。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------------------
|
||||
|
||||
* 创建资源池 `pool1`,属于集群 `zone1`。
|
||||
|
||||
```javascript
|
||||
obclient> CREATE RESOURCE POOL pool1 UNIT='unit1', UNIT_NUM=1, ZONE_LIST=('zone1');
|
||||
Query OK, 0 rows affected (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,72 @@
|
||||
CREATE RESOURCE UNIT
|
||||
=========================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来创建资源单元配置,描述了分配硬件资源的规格,用于给租户分配硬件资源。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
CREATE RESOURCE UNIT unitname
|
||||
MAX_CPU [=] cpunum,
|
||||
MAX_MEMORY [=] memsize,
|
||||
MAX_IOPS [=] iopsnum,
|
||||
MAX_DISK_SIZE [=] disksize,
|
||||
MAX_SESSION_NUM [=] sessionnum,
|
||||
[MIN_CPU [=] cpunum,]
|
||||
[MIN_MEMORY [=] memsize,]
|
||||
[MIN_IOPS [=] iopsnum] ;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-----------------|---------------------------------------------------|
|
||||
| MAX_CPU | 指定要修改的 CPU 最多数量 |
|
||||
| MAX_MEMORY | 指定要修改的最大内存容量,取值范围为\[1073741824, +∞) 单位为字节,即最小值为1G |
|
||||
| MAX_IOPS | 指定要修改的 IOPS 最多数量,取值范围为\[128,+∞) |
|
||||
| MAX_DISK_SIZE | 指定要修改的最大硬盘容量,取值范围为[536870912,+∞]单位为字节,即最小值为512M |
|
||||
| MAX_SESSION_NUM | 指定要修改的 session 最多数量,取值范围为\[64,+∞) |
|
||||
| MIN_CPU | 指定要修改的 CPU 最少数量 |
|
||||
| MIN_MEMORY | 指定要修改的最小内存容量 |
|
||||
| MIN_IOPS | 指定要修改的 IOPS 最少数量 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 创建资源单元 unit1 配置为1 个 CPU,1G 内存,128 个 IOPS,10G 硬盘容量,运行64个 session。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> CREATE RESOURCE UNIT unit1 max_cpu 1, max_memory '1G', max_iops 128,max_disk_size '10G', max_session_num 64, MIN_CPU=1, MIN_MEMORY= '1G', MIN_IOPS=128;
|
||||
Query OK, 0 rows affected (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建资源单元 unit1 配置为1 个 CPU,1G 内存,128个 IOPS,10G 硬盘容量,运行64个 session。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> CREATE RESOURCE UNIT unit1 max_cpu 1, max_memory 1073741824, max_iops 128, max_disk_size 10737418240, max_session_num 64, MIN_CPU=1, MIN_MEMORY=1073741824, MIN_IOPS=128;
|
||||
Query OK, 0 rows affected (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,52 @@
|
||||
CREATE RESTORE POINT
|
||||
=========================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------------------
|
||||
|
||||
该语句用来创建还原点(Restore Point)。使用该功能可以保留当前时刻的数据快照,并在之后指定在这个数据快照上进行查询。目前还不支持将数据回滚到该还原点。
|
||||
|
||||
创建还原点后,可以在 V$RESTORE_POINT 视图中查询到该还原点的 SNAPSHOT 值,然后通过 `SELECT * FROM table_name AS OF SNAPSHOT snapshot;` 查询数据快照中的值。
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
系统租户不支持创建还原点。
|
||||
|
||||
格式
|
||||
-----------------------
|
||||
|
||||
```unknow
|
||||
CREATE RESTORE POINT restore_point;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------------------
|
||||
|
||||
|
||||
|
||||
| 参数 | 描述 |
|
||||
|---------------|----------|
|
||||
| restore_point | 指定还原点名称。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------------------
|
||||
|
||||
* 创建一个还原点 rp1。
|
||||
|
||||
```unknow
|
||||
obclient> CREATE RESTORE POINT rp1;
|
||||
Query OK, 0 rows affected (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,134 @@
|
||||
CREATE SYNONYM
|
||||
===================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来创建一个同义词。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
CREATE [ OR REPLACE ] [ PUBLIC ]
|
||||
SYNONYM [ DATABASE. ]synonym
|
||||
FOR [ DATABASE. ]object;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
参数说明
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| OR REPLACE | 表示如果要创建的同义词名称已存在,则使用新的定义重新创建同义词。 |
|
||||
| PUBLIC | 指定PUBLIC来创建公共同义词,所有用户都可以使用。用户必须对基础对象具有相应的权限才能使用该同义词。 在解析对象的引用时,仅当对象没有指定DataBase时,才会使用公共同义词。 如果不指定PUBLIC,则同义词是私有的,只能当前DataBase访问,并且同义词名称在当前DataBase中必须唯一。 |
|
||||
| \[ DataBase. \]synonym | DataBase指定当前同义词属于哪个DataBase,如果指定了PUBLIC,则对同义词不需要指定DataBase;synonym表示同义词的名称。 |
|
||||
| \[ DataBase. \]object | 表示同义词对应对象的名称。 |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
举例
|
||||
-----------
|
||||
|
||||
* 创建一个同义词。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>create table t1(c1 int);
|
||||
Query OK, 0 rows affected (0.18 sec)
|
||||
|
||||
OceanBase(admin@test)>create synonym s1 for t1;
|
||||
Query OK, 0 rows affected (0.05 sec)
|
||||
|
||||
OceanBase(admin@test)>insert into s1 values(1);
|
||||
Query OK, 1 row affected (0.02 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from s1;
|
||||
+------+
|
||||
| c1 |
|
||||
+------+
|
||||
| 1 |
|
||||
+------+
|
||||
1 row in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建一个PUBLIC同义词
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>create public synonym syn_pub for t1;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from syn_pub;
|
||||
+------+
|
||||
| c1 |
|
||||
+------+
|
||||
| 1 |
|
||||
+------+
|
||||
1 row in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
创建同义词时,需要满足如下权限要求:
|
||||
|
||||
* 在当前的DataBase下创建私有的synonym,需要CREATE SYNONYM权限
|
||||
|
||||
* 在非当前DataBase下创建私有的synonym,需要CREATE ANY SYNONYM权限
|
||||
|
||||
* 创建PUBLIC的synonym,需要CREATE PUBLIC SYNONYM权限
|
||||
|
||||
* 对于需要创建synonym的对象不需要存在,也不需要具有访问权限
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
连接sys用户:
|
||||
OceanBase(ADMIN@TEST)>CREATE USER syn_user IDENTIFIED BY syn_user;
|
||||
Query OK, 0 rows affected (0.06 sec)
|
||||
|
||||
OceanBase(ADMIN@TEST)>grant CREATE on syn_user.* to syn_user;
|
||||
Query OK, 0 rows affected (0.02 sec)
|
||||
|
||||
OceanBase(ADMIN@TEST)>grant SELECT on syn_user.* to syn_user;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
|
||||
|
||||
连接syn_user
|
||||
//创建同义词失败
|
||||
OceanBase(SYN_USER@(none))>create synonym syn_1 for t1;
|
||||
ERROR-00600: internal error code, arguments: -5036, Access denied; you need (at least one of) the CREATE SYNONYM privilege(s) for this operation
|
||||
|
||||
连接sys用户,给定CREATE SYNONYM权限
|
||||
OceanBase(ADMIN@TEST)>grant CREATE SYNONYM on *.* to syn_user;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
|
||||
连接syn_user
|
||||
OceanBase(SYN_USER@(none))>create synonym syn_1 for t1;
|
||||
Query OK, 0 rows affected (0.05 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
289
docs/docs-cn/10.sql-reference/5.sql-statement/18.create-table.md
Normal file
289
docs/docs-cn/10.sql-reference/5.sql-statement/18.create-table.md
Normal file
@ -0,0 +1,289 @@
|
||||
CREATE TABLE
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来在数据库中创建一张新表。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name
|
||||
(table_definition_list) [table_option_list] [partition_option] [AS] select;
|
||||
|
||||
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name
|
||||
LIKE table_name;
|
||||
|
||||
table_definition_list:
|
||||
table_definition [, table_definition ...]
|
||||
|
||||
table_definition:
|
||||
column_definition
|
||||
| [CONSTRAINT [constraint_name]] PRIMARY KEY index_desc
|
||||
| [CONSTRAINT [constraint_name]] UNIQUE {INDEX | KEY} [index_name] index_desc
|
||||
| {INDEX | KEY} [index_name] index_desc
|
||||
| FULLTEXT [INDEX | KEY] [index_name] fulltext_index_desc
|
||||
|
||||
column_definition_list:
|
||||
column_definition [, column_definition ...]
|
||||
|
||||
column_definition:
|
||||
column_name data_type
|
||||
[DEFAULT const_value] [AUTO_INCREMENT]
|
||||
[NULL | NOT NULL] [[PRIMARY] KEY] [UNIQUE [KEY]] comment
|
||||
|
||||
index_desc:
|
||||
(column_desc_list) [index_type] [index_option_list]
|
||||
|
||||
fulltext_index_desc:
|
||||
(column_desc_list) CTXCAT(column_desc_list) [index_option_list]
|
||||
|
||||
column_desc_list:
|
||||
column_desc [, column_desc ...]
|
||||
|
||||
column_desc:
|
||||
column_name [(length)] [ASC | DESC]
|
||||
|
||||
index_type:
|
||||
USING BTREE
|
||||
|
||||
index_option_list:
|
||||
index_option [ index_option ...]
|
||||
|
||||
index_option:
|
||||
[GLOBAL | LOCAL]
|
||||
| block_size
|
||||
| compression
|
||||
| STORING(column_name_list)
|
||||
| comment
|
||||
|
||||
table_option_list:
|
||||
table_option [ table_option ...]
|
||||
|
||||
table_option:
|
||||
[DEFAULT] {CHARSET | CHARACTER SET} [=] charset_name
|
||||
| [DEFAULT] COLLATE [=] collation_name
|
||||
| primary_zone
|
||||
| replica_num
|
||||
| table_tablegroup
|
||||
| block_size
|
||||
| compression
|
||||
| AUTO_INCREMENT [=] INT_VALUE
|
||||
| comment
|
||||
| DUPLICATE_SCOPE [=] "none|cluster"
|
||||
| LOCALITY [=] "locality description"
|
||||
| ROW_FORMAT [=] REDUNDANT|COMPACT|DYNAMIC|COMPRESSED|DEFAULT
|
||||
| PCTFREE [=] num
|
||||
| parallel_clause
|
||||
|
||||
parallel_clause:
|
||||
{NOPARALLEL | PARALLEL integer}
|
||||
|
||||
partition_option:
|
||||
PARTITION BY HASH(expression)
|
||||
[subpartition_option] PARTITIONS partition_count
|
||||
| PARTITION BY KEY([column_name_list])
|
||||
[subpartition_option] PARTITIONS partition_count
|
||||
| PARTITION BY RANGE {(expression) | COLUMNS (column_name_list)}
|
||||
[subpartition_option] (range_partition_list)
|
||||
| PARTITION BY LIST {(expression) | COLUMNS (column_name_list)}
|
||||
[subpartition_option] PARTITIONS partition_count
|
||||
|
||||
subpartition_option:
|
||||
SUBPARTITION BY HASH(expression)
|
||||
SUBPARTITIONS subpartition_count
|
||||
| SUBPARTITION BY KEY(column_name_list)
|
||||
SUBPARTITIONS subpartition_count
|
||||
| SUBPARTITION BY RANGE {(expression) | COLUMNS (column_name_list)}
|
||||
(range_subpartition_list)
|
||||
| SUBPARTITION BY LIST(expression)
|
||||
|
||||
range_partition_list:
|
||||
range_partition [, range_partition ...]
|
||||
|
||||
range_partition:
|
||||
PARTITION partition_name
|
||||
VALUES LESS THAN {(expression_list) | MAXVALUE}
|
||||
|
||||
range_subpartition_list:
|
||||
range_subpartition [, range_subpartition ...]
|
||||
|
||||
range_subpartition:
|
||||
SUBPARTITION subpartition_name
|
||||
VALUES LESS THAN {(expression_list) | MAXVALUE}
|
||||
|
||||
expression_list:
|
||||
expression [, expression ...]
|
||||
|
||||
column_name_list:
|
||||
column_name [, column_name ...]
|
||||
|
||||
partition_name_list:
|
||||
partition_name [, partition_name ...]
|
||||
|
||||
partition_count | subpartition_count:
|
||||
INT_VALUE
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数说明
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| DUPLICATE_SCOPE | 用来指定复制表属性,取值如下: * none:表示该表是一个普通表 * zone:表示该表是一个复制表,leader需要将事务复制到本zone的所有F副本及R副本 * region:表示该表是一个复制表,leader需要将事务复制到本region的所有F副本及R副本 * cluster:表示该表是一个复制表,leader需要将事务复掉到cluster的所有F副本及R副本 不指定DUPLICATE_SCOPE的情况下,默认值为none。 |
|
||||
| ROW_FORMAT | 指定表是否开启encoding存储格式 * redundant <!-- --> <!-- --> * compact <!-- --> <!-- --> * dynamic <!-- --> <!-- --> * compressed <!-- --> <!-- --> * default <!-- --> |
|
||||
| BLOCK_SIZE | 指定表的微块大小 |
|
||||
| COMPRESSION | 指定表的压缩算法,取值如下: 1. none:不使用压缩算法 2. lz4_1.0: 使用lz4压缩算法 3. zstd_1.0: 使用zstd压缩算法 4. snappy_1.0: 使用snappy压缩算法 |
|
||||
| CHARSET \| CHARACTER SET | 指定表中列的默认字符集,可使用:utf8, utf8mb4, gbk, utf16, gb18030 |
|
||||
| COLLATE | 指定表中列的默认比较规则,可使用: utf8_bin, utf8_general_ci, utf8_unicode_ci, gbk_bin, gbk_chinese_ci, utf8mb4_general_ci, utf8mb4__general_cs, utf8mb4_bin, utf8mb4_unicode_ci, utf16_general_ci, utf16_bin, utf16_unicode_ci, gb18030_chinese_ci, gb18030_bin |
|
||||
| primary_zone | 指定主Zone(副本Leader所在 Zone)。 |
|
||||
| replica_num | 指定副本数。 |
|
||||
| table_tablegroup | 指定表所属的talegroup。 |
|
||||
| AUTO_INCREMENT | 指定表中自增列的初始值。 |
|
||||
| comment | 注释。 |
|
||||
| LOCALITY | 描述副本在Zone间的分布情况,如:F@z1,F@z2,F@z3,R@z4 表示z1, z2, z3为全功能副本,z4为只读副本。 |
|
||||
| PCTFREE | 指定宏块保留空间百分比。 |
|
||||
| parallel_clause | 指定表级别的并行度: * NOPARALLEL:并行度为1,默认配置 * PARALLEL integer:指定并行度,integer 取值大于等于 1。 |
|
||||
|
||||
|
||||
|
||||
举例
|
||||
-----------
|
||||
|
||||
* 创建数据库表。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE TABLE test (c1 int primary key, c2 VARCHAR(50)) REPLICA_NUM = 3, PRIMARY_ZONE = 'zone1';
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建表,并指定垂直分区。其中第一个分区只有列 c3,第二个分区包含列 c1、c2,没有列出的 c4、c5 列为第三个分区。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE TABLE t1(c1 int,
|
||||
c2 int,
|
||||
c3 int,
|
||||
c4 int,
|
||||
c5 int)
|
||||
PARTITION BY CLOUMN ( c3, (c1, c2));
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建一个复制表。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE TABLE item() locality = 'F,R{all_server}@hz1, F,R{all_server}@hz2,
|
||||
F,R{all_server}@hz3' DUPLICATE_SCOPE="cluster"
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建带索引的表。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
create table t1 (c1 int primary key, c2 int, c3 int, index i1 (c2));
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建 hash 分区,分区数为 8 的表。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
create table t1 (c1 int primary key, c2 int) partition by hash(c1) partitions 8;
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建一级分区为 range 分区,二级分区为 key 分区的表。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
create table t1 (c1 int, c2 int, c3 int)
|
||||
partition by range(c1) subpartition by key(c2, c3) subpartitions 5
|
||||
(partition p0 values less than(0), partition p1 values less than(100));
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建一列为 gbk, 一列为 utf8 的表。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
create table t1 (c1 varchar(10),
|
||||
c2 varchar(10) charset gbk collate gbk_bin)
|
||||
default charset utf8 collate utf8mb4_general_ci;
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 开启 encoding 并使用 zstd 压缩,宏块保留空间为 5%。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
create table t1 (c1 int, c2 int, c3 varchar(64))
|
||||
compression 'zstd_1.0'
|
||||
ROW_FORMAT dynamic
|
||||
pctfree 5;
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建表 t1,并设置并行度为 3。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```unknow
|
||||
create table t1(c1 int primary key, c2 int) parallel 3;
|
||||
```
|
||||
|
||||
|
||||
@ -0,0 +1,101 @@
|
||||
CREATE TABLEGROUP
|
||||
======================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来创建表组。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
只有租户下的管理员权限才可以创建表组。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
CREATE TABLEGROUP [IF NOT EXISTS] tablegroupname [opt_tablegroup_option_list] [opt_tg_partition_option]
|
||||
|
||||
opt_tablegroup_option_list:
|
||||
tablegroup_option [tablegroup_option]
|
||||
|
||||
tablegroup_option:
|
||||
LOCALITY [=] locality_name
|
||||
| PRIMARY_ZONE [=] primary_zone_name
|
||||
|
||||
opt_tg_partition_option:
|
||||
PARTITION BY
|
||||
KEY COLUMN_NUM [tg_subpartition_option] PARTITIONS INTNUM
|
||||
| HASH [tg_subpartition_option] PARTITIONS INTNUM
|
||||
| RANGE [tg_subpartition_option] {PARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
|
||||
| RANGE COLUMNS COLUMN_NUM [tg_subpartition_option] {PARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
|
||||
| LIST [tg_subpartition_option] {PARTITION partition_name VALUES in list_partition_expr, ...}
|
||||
| LIST COLUMNS COLUMN_NUM [tg_subpartition_option] {PARTITION partition_name VALUES in list_partition_expr, ...}
|
||||
|
||||
tg_subpartition_option:
|
||||
SUBPARTITION BY
|
||||
RANGE SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
|
||||
| RANGE COLUMNS COLUMN_NUM SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
|
||||
| HASH [SUBPARTITIONS INTNUM]
|
||||
| KEY COLUMN_NUM [SUBPARTITIONS INTNUM]
|
||||
| LIST SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES in list_partition_expr, ...}
|
||||
| LIST COLUMNS COLUMN_NUM SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES in list_partition_expr, ...}
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| tablegroupname | 表组名称,最长64个字符,字符只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能OceanBase的关键字。 如果要创建的表组名称已存在,并且没有指定IF NOT EXISTS,则会出现错误。 |
|
||||
| opt_tablegroup_option_list | 表组的分区方式、locality、primary zone必须和组内的表完全一致。 组内的表信息不能独立变更某一项,只可以通过操作表组进行批量操作。 相同的locality:副本类型、个数、位置要完全一致 相同的primary zone:leader位置及其优先级要完全一致 相同的分区方式: * 分区类型相同(例如,都是hash+range分区)。 * 如果是key分区,要求引用的列数相同,且分区个数相同。 * 如果是hash分区,要求分区个数相同。 * 如果是range columns分区,要求引用的列数相同,且分区数相同,且range分割点相同。 * 如果是range分区,且分区数相同,且range分割点相同。 * 对于二级分区,根据分区类型,要求和1)\~4)一致 |
|
||||
| opt_tg_partition_option | 表组的分区规则定义,与CREATE TABLE使用同样的分区方式。 表组没有具体的列定义,所以KEY、RANGE COLUMNS、LIST COLUMNS不需要写出具体的列,只需要指定列个数(COLUMN_NUM)。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 创建名为 myTableGroup1 的表组。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> CREATE TABLEGROUP myTableGroup1;
|
||||
Query OK, 0 rows affected (0.07 sec)
|
||||
|
||||
OceanBase(admin@test)> create table myt1 (c1 int, c2 int ) tablegroup = myTableGroup1;
|
||||
Query OK, 0 rows affected (0.28 sec)
|
||||
|
||||
OceanBase(admin@test)> create table myt2 (c1 int, c2 int ) tablegroup = myTableGroup1;
|
||||
Query OK, 0 rows affected (0.26 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建 hash 分区的表组 tgh,同时创建 hash 分区的表ttgh,且分区个数相同。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> create tablegroup tgh locality='F,R{ALL_SERVER}@z1' partition by hash partitions 10;
|
||||
Query OK, 0 rows affected (0.09 sec)
|
||||
|
||||
OceanBase(admin@test)> create table ttgh(c1 int, c2 int) locality='F,R{ALL_SERVER}@z1' partition by hash(c1) partitions 10;
|
||||
Query OK, 0 rows affected (0.55 sec)
|
||||
|
||||
OceanBase(admin@test)> create table ttgh2(c1 int, c2 int) locality='F,R{ALL_SERVER}@z1' partition by hash(c2) partitions 10;
|
||||
Query OK, 0 rows affected (0.39 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,69 @@
|
||||
ALTER DATABASE
|
||||
===================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来修改 DataBase 的属性。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
alter_database_stmt:
|
||||
ALTER DATABASE [database_name] [SET] alter_specification_list;
|
||||
|
||||
alter_specification_list:
|
||||
alter_specification [alter_specification ...]
|
||||
|
||||
alter_specification:
|
||||
[DEFAULT] {CHARACTER SET | CHARSET} [=] charset_name
|
||||
| [DEFAULT] COLLATE [=] collation_name
|
||||
| REPLICA_NUM [=] int_num
|
||||
| PRIMARY_ZONE [=] zone_name
|
||||
| {READ ONLY | READ WRITE}
|
||||
| DEFAULT TABLEGROUP [=] {NULL | table_group_name}
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-------------------------------------|------------------------------------|
|
||||
| database_name | 指定要修改属性的数据库名称。如果不指定,会对当前默认数据库进行修改。 |
|
||||
| CHARSET charset_name | 指定要修改的字符集。 |
|
||||
| COLLATE collation_name | 指定校对规则。 |
|
||||
| REPLICA_NUM int_num | 指定副本数。 |
|
||||
| PRIMARY_ZONE zone_name | 指定主 Zone。 |
|
||||
| READ ONLY \| READ WRITE | 设置数据库级只读或读写属性。 |
|
||||
| DEFAULT TABLEGROUP table_group_name | 设置数据库默认表组信息,NULL 表示取消数据库默认表组。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 修改数据库 test2 的字符集为 UTF8MB4,校对规则为 UTF8MB4_BIN,且为读写属性。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>alter database test2 DEFAULT CHARACTER SET UTF8MB4;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
|
||||
OceanBase(admin@test)>alter database test2 DEFAULT COLLATE UTF8MB4_BIN;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
|
||||
OceanBase(admin@test)>alter database test2 READ WRITE;
|
||||
Query OK, 0 rows affected (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,92 @@
|
||||
CREATE TENANT
|
||||
==================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来创建租户。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
CREATE TENANT [IF NOT EXISTS] tenantname
|
||||
[tenant_characteristic_list] [opt_set_sys_var]
|
||||
|
||||
tenant_characteristic_list:
|
||||
tenant_characteristic [, tenant_characteristic...]
|
||||
|
||||
tenant_characteristic:
|
||||
COMMENT 'string'
|
||||
|{CHARACTER SET | CHARSET} [=] charsetname
|
||||
|COLLATE [=] collationname
|
||||
|REPLICA_NUM [=] num
|
||||
|ZONE_LIST [=] (zone [, zone...])
|
||||
|PRIMARY_ZONE [=] zone
|
||||
|DEFAULT TABLEGROUP [=] {NULL | tablegroup}
|
||||
|RESOURCE_POOL_LIST [=](poolname [, poolname...])
|
||||
|LOGONLY_REPLICA_NUM [=] num
|
||||
|LOCALITY [=] 'locality description'
|
||||
|
||||
opt_set_sys_var:
|
||||
{ SET | SET VARIABLES | VARIABLES } system_var_name = expr [,system_var_name = expr] ...
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|--------------------------|----------------------------------------------------------------------------------------------------------------------|
|
||||
| tenant_name | 指定租户名。最长64个字节,只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能是OceanBase的关键字。 |
|
||||
| IF NOT EXISTS | 如果要创建的租户名已存在,并且没有指定IF NOT EXISTS,则会报错。 |
|
||||
| RESOURCE_POOL_LIST | 资源池列表,为创建租户时的必填项,暂时只支持一个 RESOURCE POOL。 |
|
||||
| DEFAULT TABLEGROUP | 设置租户默认表组信息,NULL 表示取消默认表组。如果不指定,默认为 NULL。 |
|
||||
| COMMENT | 修改注释。 |
|
||||
| CHARACTER SET \| CHARSET | 修改租户的字符集。 |
|
||||
| COLLATE | 指定校对规则。 |
|
||||
| REPLICA_NUM | 指定副本数。 |
|
||||
| ZONE_LIST | 指定要修改的Zone列表。 |
|
||||
| PRIMARY_ZONE | 指定主Zone。 |
|
||||
| LOGONLY_REPLICA_NUM | 指定日志副本数。 |
|
||||
| LOCALITY | 描述副本在Zone间的分布情况,如:F@z1,F@z2,F@z3,R@z4 表示z1, z2, z3为全功能副本,z4为只读副本。 |
|
||||
| system_var_name | 指定租户系统变量值。其中 ob_compatibility_mode 系统变量用于指定租户的兼容模式(MySQL/Oracle),只能在创建时指定;如果不指定 ob_compatibility_mode ,默认兼容模式为MySQL。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 创建租户。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE TENANT IF NOT EXISTS t1 charset='utf8mb4', replica_num=1, zone_list=('zone1'), primary_zone='zone1', resource_pool_list=('pool1');
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建oracle兼容模式租户
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE TENANT IF NOT EXISTS t1 zone_list=('zone1'), primary_zone='zone1', resource_pool_list=('pool1') SET ob_compatibility_mode='oracle';
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
只有用root用户连接到根租户(root@ROOT)才能执行 CREATE TENANT 去创建租户。
|
||||
@ -0,0 +1,114 @@
|
||||
CREATE USER
|
||||
================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于创建新的 OceanBase 用户。创建新用户后,可以使用该用户连接 OceanBase。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
必须拥有全局的CREATE USER权限,才可以使用CREATE USER命令。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
create_user_stmt:
|
||||
CREATE USER [IF NOT EXISTS] user_name [IDENTIFIED BY 'password'];
|
||||
|
||||
alter_user_stmt:
|
||||
ALTER USER user_name ACCOUNT {LOCK | UNLOCK};
|
||||
| ALTER USER user_name IDENTIFIED BY 'password';
|
||||
| SET PASSWORD [FOR user_name] = PASSWORD('password');
|
||||
| RENAME USER rename_user_action_list;
|
||||
|
||||
drop_user_stmt:
|
||||
DROP USER user_name_list;
|
||||
|
||||
rename_user_action_list:
|
||||
rename_user_action [, rename_user_action ...]
|
||||
|
||||
rename_user_action:
|
||||
user_name TO user_name
|
||||
|
||||
user_name_list:
|
||||
user_name [, user_name ...]
|
||||
|
||||
password:
|
||||
STR_VALUE
|
||||
|
||||
CREATE USER [IF NOT EXISTS] user_specification_list;
|
||||
|
||||
user_specification_list:
|
||||
user_specification [, user_specification ...]
|
||||
|
||||
user_specification:
|
||||
user IDENTIFIED BY 'authstring'
|
||||
| user IDENTIFIED BY PASSWORD 'hashstring'
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|------------------------------------------|----------------------------------------------------|
|
||||
| user_name | 用户名,新建用户后,"mysql.user"表会新增一行该用户的表项。如果同名用户已经存在,则报错。 |
|
||||
| IDENTIFIED BY | 使用自选的 IDENTIFIED BY 子句,可以为账户给定一个密码。 |
|
||||
| user_name \[, user_name ...\] | 同时创建多个用户时,用","隔开。 |
|
||||
| user IDENTIFIED BY 'authstring' | 此处密码为明文,存入"mysql.user"表后,服务器端会变为密文存储下来。 |
|
||||
| user IDENTIFIED BY PASSWORD 'hashstring' | 此处密码为密文。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
1. 执行以下命令创建名为 sqluser01 和 sqluser02 的用户,密码均为 123456。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
CREATE USER 'sqluser01' IDENTIFIED BY '123456', 'sqluser02' IDENTIFIED BY '123456';
|
||||
```
|
||||
|
||||
|
||||
|
||||
2. 执行以下命令查看创建的用户。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT user FROM mysql.user;
|
||||
```
|
||||
|
||||
|
||||
|
||||
执行结果如下所示。
|
||||
|
||||
```javascript
|
||||
mysql> CREATE USER 'sqluser01' IDENTIFIED BY '123456', 'sqluser02' IDENTIFIED BY '123456';
|
||||
Query OK, 0 rows affected (0.12 sec)
|
||||
mysql> select user from mysql.user;
|
||||
+-----------+
|
||||
| user |
|
||||
+-----------+
|
||||
| root |
|
||||
| admin |
|
||||
| sqluser01 |
|
||||
| sqluser02 |
|
||||
+-----------+
|
||||
4 rows in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
CREATE VIEW
|
||||
================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于创建视图语句,如果指定了 OR REPLACE 子句,该语句能够替换已有的视图。
|
||||
|
||||
视图在数据库中实际上并不是以表的形式存在,每次使用时他们就会派生。视图是作为在 CREATE VIEW 语句中指定的 SELECT 语句的结果而派生出来的。
|
||||
|
||||
OceanBase 2.2.50 支持可更新视图。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
create_view_stmt:
|
||||
CREATE [OR REPLACE] VIEW view_name [(column_name_list)] AS select_stmt;
|
||||
|
||||
column_name_list:
|
||||
column_name [, column_name ...]
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| OR REPLACE | 表示如果要创建的同义词名称已存在,则使用新的定义重新创建同义词。 |
|
||||
| view_name | 视图名。 |
|
||||
| select_stmt | 是一种 SELECT 语句。它给出了视图的定义。该语句可以从基表或其他视图进行选择。 |
|
||||
| column_name_list | 视图必须具有唯一的列名,不得有重复,就像基表那样。默认情况下,由 SELECT 语句检索的列名将用作视图列名。 要想为视图列定义明确的名称,可使用可选的 column_name_list 子句,列出由逗号隔开的 ID。column_name_list 中的名称数目必须等于SELECT语句检索的列数。 SELECT 语句检索的列可以是对表列的简单引用。也可以是使用函数、常量值、操作符等的表达式。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
选择表 t 中的 c1、c2 列来创建视图 v。
|
||||
|
||||
```javascript
|
||||
create or replace view v(vc1, vc2) as select c1, c2 from t;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
267
docs/docs-cn/10.sql-reference/5.sql-statement/23.DELETE.md
Normal file
267
docs/docs-cn/10.sql-reference/5.sql-statement/23.DELETE.md
Normal file
@ -0,0 +1,267 @@
|
||||
DELETE
|
||||
===========================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来删除表中符合条件的行,包括单表删除及多表删除两种方式。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
Single-Table-Delete Syntax:
|
||||
DELETE [hint_options] FROM tbl_name
|
||||
[PARTITION (partition_name,...)]
|
||||
[WHERE where_condition]
|
||||
[ORDER BY order_expression_list]
|
||||
[LIMIT row_count]
|
||||
|
||||
Multiple-Table-Delete Syntax:
|
||||
DELETE [hint_options] tbl_name[.*] [, tbl_name[.*]] ...
|
||||
FROM table_references
|
||||
[WHERE where_condition]
|
||||
Or:
|
||||
DELETE [hint_options] FROM tbl_name[.*] [, tbl_name[.*]] ...
|
||||
USING table_references
|
||||
[WHERE where_condition]
|
||||
|
||||
where_condition:
|
||||
expression
|
||||
|
||||
order_expression_list:
|
||||
order_expression [, order_expression ...]
|
||||
|
||||
order_expression:
|
||||
expression [ASC | DESC]
|
||||
|
||||
limit_row_count:
|
||||
INT_VALUE
|
||||
|
||||
table_references:
|
||||
{tbl_name | joined_table | table_subquery | select_with_parens} [, ...]
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-----------------------|----------------------|
|
||||
| hint_options | 指定hint选项。 |
|
||||
| tbl_name | 指定需要删除的表名。 |
|
||||
| partition_name | 需要删除表的对应分区名。 |
|
||||
| where_condition | 删除的表需要满足的过滤条件。 |
|
||||
| order_expression_list | 删除的表的排序键列表。 |
|
||||
| row_count | 删除的表的行数指定,指定的值只能为整数。 |
|
||||
| table_references | 多表删除时指定的待选择的表序列。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
示例表及数据基于以下定义:
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>create table t1(c1 int primary key, c2 int);
|
||||
Query OK, 0 rows affected (0.16 sec)
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
4 rows in set (0.06 sec)
|
||||
|
||||
OceanBase(admin@test)>create table t2(c1 int primary key, c2 int) partition by key(c1) partitions 4;
|
||||
Query OK, 0 rows affected (0.19 sec)
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 5 | 5 |
|
||||
| 1 | 1 |
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
+----+------+
|
||||
4 rows in set (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 单表删除:删除 "c1=2" 的行,其中 c1 列为表 t1 中的 Primary Key。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>DELETE FROM t1 WHERE c1 = 2;
|
||||
Query OK, 1 row affected (0.02 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
3 rows in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 单表删除:删除表 t2 的按照 c2 列排序之后的第一行数据。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>DELETE FROM t1 ORDER BY c2 LIMIT 1;
|
||||
Query OK, 1 row affected (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
3 rows in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 单表删除:执行删除表 t2 的 p2 分区的数据。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>DELETE FROM t2 PARTITION(p2);
|
||||
Query OK, 3 rows affected (0.02 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 5 | 5 |
|
||||
+----+------+
|
||||
1 row in set (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 多表删除:删除 t1,t2 表中 "t1.c1 = t2.c1" 的数据。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>DELETE t1, t2 FROM t1, t2 WHERE t1.c1 = t2.c1;
|
||||
Query OK, 3 rows affected (0.02 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
1 row in set (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 5 | 5 |
|
||||
+----+------+
|
||||
1 row in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 多表删除:删除 t1,t2 表中 "t1.c1 = t2.c1" 的数据。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>DELETE FROM t1, t2 USING t1, t2 WHERE t1.c1 = t2.c1;
|
||||
Query OK, 4 rows affected (0.02 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
1 row in set (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
Empty set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 多表删除:删除 t2 表中的 p2 分区中和 t1 表中 "t1.c1 = t2.c1" 的数据。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>DELETE t2 FROM t1,t2 PARTITION(p2) WHERE t1.c1 = t2.c1;
|
||||
Query OK, 3 rows affected (0.02 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 5 | 5 |
|
||||
+----+------+
|
||||
1 row in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 对可更新视图v进行删除操作
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>create view v as select * from t1;
|
||||
Query OK, 0 rows affected (0.07 sec)
|
||||
|
||||
OceanBase(admin@test)>delete from v where v.c1 = 1;
|
||||
Query OK, 1 row affected (0.02 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from v;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
3 rows in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
不管是多表删除还是单表删除都不支持直接对子查询进行删除操作,比如:
|
||||
|
||||
`delete from (select * from t1);`
|
||||
@ -0,0 +1,70 @@
|
||||
DROP DATABASE
|
||||
==================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
DROP DATABASE 用于删除数据库。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
drop_database_stmt:
|
||||
DROP DATABASE [IF EXISTS] database_name;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|---------------|-------------------|
|
||||
| IF EXISTS | 用于防止当数据库不存在时发生错误。 |
|
||||
| database_name | 指定待删除的数据库名。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除数据库 test2。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>drop database test2;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 删除不存在的数据库 notest。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>drop database notest;
|
||||
ERROR 1008 (HY000): Can't drop database 'notest'; database doesn't exist
|
||||
|
||||
OceanBase(admin@test)>drop database if exists notest;
|
||||
Query OK, 0 rows affected, 1 warning (0.00 sec)
|
||||
|
||||
OceanBase(admin@test)>show warnings;
|
||||
+-------+------+------------------------------------------------------+
|
||||
| Level | Code | Message |
|
||||
+-------+------+------------------------------------------------------+
|
||||
| Note | 1008 | Can't drop database 'notest'; database doesn't exist |
|
||||
+-------+------+------------------------------------------------------+
|
||||
1 row in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,48 @@
|
||||
DROP INDEX
|
||||
===============================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来删除索引。当索引过多时,维护开销增大,因此,需要删除不必要的索引。
|
||||
|
||||
删除索引的时候需要等待一段时间才能完全删除。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
DROP INDEX indexname
|
||||
ON tblname;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-----------|---------|
|
||||
| indexname | 指定索引名称。 |
|
||||
| tblname | 指定表名。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除索引test_index。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
DROP INDEX test_index ON test;
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
DROP OUTLINE
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于删除 OceanBase 数据库中的 OUTLINE。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
DROP OUTLINE outline_name;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|--------------|--------------------|
|
||||
| outline_name | 指定要删除的 OUTLINE 名称。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除 OUTLINE ol_1
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
DROP OUTLINE ol_1;
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
DROP RESOURCE POOL
|
||||
=======================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来删除资源池。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
DROP RESOURCE POOL poolname;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|----------|-----------|
|
||||
| poolname | 要删除的资源池名称 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除资源池 pool1。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> DROP RESOURCE POOL pool1;
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,47 @@
|
||||
DROP RESOURCE UNIT
|
||||
=======================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来删除资源单元配置。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
DROP RESOURCE UNIT unitname
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|----------|---------------|
|
||||
| unitname | 要删除的资源单元配置的名称 |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除资源单元配置unit1。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> DROP RESOURCE UNIT unit1;
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
DROP RESTORE POINT
|
||||
=======================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------------------
|
||||
|
||||
该语句用来删除还原点(Restore Point)。
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
系统租户不支持删除还原点。
|
||||
|
||||
格式
|
||||
-----------------------
|
||||
|
||||
```unknow
|
||||
DROP RESTORE POINT restore_point;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------------------
|
||||
|
||||
|
||||
|
||||
| 参数 | 描述 |
|
||||
|---------------|----------|
|
||||
| restore_point | 指定还原点名称。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------------------
|
||||
|
||||
* 删除一个还原点 rp1。
|
||||
|
||||
```unknow
|
||||
obclient> DROP RESTORE POINT rp1;
|
||||
Query OK, 0 rows affected (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,70 @@
|
||||
ALTER OUTLINE
|
||||
==================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句仅支持使用SQL_TEXT创建的 OUTLINE,可用于添加绑定OUTLINE和限流规则。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
ALTER OUTLINE outline_name ADD stmt [ TO target_stmt ]
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| outline_name | 指定要创建的 OUTLINE 名称。 |
|
||||
| stmt | 一般为一个带有 hint 和原始参数的 DML 语句。 |
|
||||
| TO target_stmt | 如果不指定 TO target_stmt, 则表示如果数据库接受的SQL参数化后与stmt去掉hint参数化文本相同,则将该SQL绑定stmt中hint生成执行计划;如果期望对含有hint的语句进行固定计划,则需要 TO target_stmt 来指明原始的SQL。 **注意** 在使用target_stmt时,严格要求stmt与target_stmt在去掉hint后完全匹配。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 通过ALTER OUTLINE来添加限流规则。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = 1 and c2 = ?;
|
||||
OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = ? and c2 = 1;
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 通过ALTER OUTLINE来添加执行计划。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase (root@oceanbase)> create outline ol_2 on select /*+max_concurrent(1)*/ * from t1,t2 where t1.c1 = 1;
|
||||
OceanBase (root@oceanbase)> alter outline ol_2 add select /*+use_nl(t2)*/ * from t1,t2 where t1.c1 = 1;
|
||||
```
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
* 同一个outline_name 只能指定一个执行计划。如果通过create outline语句指定了执行计划,则无法通过执行alter outline时再添加。
|
||||
|
||||
* 同create outline类似,在alter outline时不能同时指定限流规则和执行计划。
|
||||
|
||||
* 执行alter outline时,需要outline_name和signature同时匹配。
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
DROP TABLE
|
||||
===============================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于删除 OceanBase 数据库中的表。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
DROP [TEMPORARY] {TABLE | TABLES} [IF EXISTS]
|
||||
table_name [,table_name]...
|
||||
[RESTRICT | CASCADE]
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|---------------------|--------------------------------------------|
|
||||
| table_name | 指定要删除的表名,同时删除多个表时,用","隔开。 |
|
||||
| IF EXISTS | 如果指定IF EXISTS,即使要删除的表不存在,也不会报错;如果不指定,则会报错。 |
|
||||
| TEMPORARY | 删除临时表。 |
|
||||
| RESTRICT \| CASCADE | 用于其它数据库迁移至OceanBase的场景。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除表 test
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
DROP TABLE IF EXISTS test;
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
DROP TABLEGROUP
|
||||
====================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来删除表组。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
DROP TABLEGROUP [IF EXISTS] tablegroupname
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|----------------|--------------------------------------------|
|
||||
| tablegroupname | 表组名称。如果要删除的表组名称不存在,并且没有指定IF EXISTS,则会出现错误。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
删除名为 myTableGroup1 的表组。
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> DROP TABLEGROUP myTableGroup1;
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
DROP TENANT
|
||||
================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于删除一个 OceanBase 租户。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
drop_tenant_stmt:
|
||||
DROP TENANT [IF EXISTS] tenant_name;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-------------|---------------------------------------------------------------------|
|
||||
| tenant_name | 指定要删除的租户名。 只能删除处于"锁定"状态下的租户,对非锁定状态下的租户执行 DROP 时会报错。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除租户 TENANT1:
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
DROP TENANT TENANT1;
|
||||
```
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
只有用root用户连接到根租户(root@ROOT)才能执行 DROP TENANT 去删除租户。
|
||||
100
docs/docs-cn/10.sql-reference/5.sql-statement/33.drop-synonym.md
Normal file
100
docs/docs-cn/10.sql-reference/5.sql-statement/33.drop-synonym.md
Normal file
@ -0,0 +1,100 @@
|
||||
DROP SYNONYM
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来删除一个同义词。
|
||||
|
||||
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
DROP [PUBLIC] SYNONYM [ DATABASE. ]synonym;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
参数说明
|
||||
-------------
|
||||
|
||||
* PUBLIC
|
||||
|
||||
指定PUBLIC来删除公共同义词;如果不指定PUBLIC,则删除私有同义词。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
* \[ DATABASE. \]synonym
|
||||
|
||||
DATABASE指定当前同义词属于哪个DataBase,如果指定了PUBLIC,则对同义词不需要指定DataBase;synonym表示同义词的名称。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
举例
|
||||
-----------
|
||||
|
||||
* 删除一个同义词。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>drop synonym test.s1;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 删除一个PUBLIC同义词
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>drop public synonym syn_pub;
|
||||
Query OK, 0 rows affected (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 注意事项
|
||||
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
* 删除私有同义词时,需要满足要删除的synonym在对应DataBase下并要有DROP ANY SYNONYM权限。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
* 删除公共同义词时,需要有DROP PUBLIC SYNONYM权限 。
|
||||
|
||||
|
||||
|
||||
* 删除public synonym时,必须指定PUBLIC关键字,且不能指定DataBase。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,60 @@
|
||||
DROP USER
|
||||
==============================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于删除一个或多个OceanBase用户。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
* 必须拥有全局的 CREATE USER 权限,才可以使用 DROP USER 命令。
|
||||
|
||||
|
||||
|
||||
* 不能对 mysql.user 表通过 DELETE 方式进行权限管理。
|
||||
|
||||
|
||||
|
||||
* 成功删除用户后,该用户的所有权限也会被一同删除。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
DROP USER username [, username...];
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| 参数 | 描述 |
|
||||
|----------|-----------------------|
|
||||
| username | 用户名。同时删除多个用户时,用","隔开。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
执行以下命令,删除名为 sqluser02 的用户。
|
||||
|
||||
```javascript
|
||||
oceanBase(admin@TEST)>drop user sqluser02;
|
||||
Query OK, 0 rows affected (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,60 @@
|
||||
DROP VIEW
|
||||
==============================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于删除一个或多个视图。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
当前用户必须在每个视图上有 DROP 权限。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
drop_view_stmt:
|
||||
DROP VIEW [IF EXISTS] view_name_list [CASCADE | RESTRICT];
|
||||
|
||||
view_name_list:
|
||||
view_name [, view_name_list]
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|------------------|-------------------------------------------------------------------------|
|
||||
| IF EXISTS | 使用IF EXISTS关键字可以防止因不存在的视图而出错。 |
|
||||
| view_name_list | 如果view_name_list中包含一部分存在和一部分不存在的视图,执行可能报错但是存在的视图依然会被删除。 |
|
||||
| CASCADE、RESTRICT | CASCADE 和 RESTRICT 会被解析和忽略。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
分别执行以下命令,删除 v1 和 v2 两个视图。如果 v1或 v2 至少有一个视图不存在,则第一条命令会报错。
|
||||
|
||||
```javascript
|
||||
drop view v1, v2;
|
||||
|
||||
drop view if exists v1, v2;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
195
docs/docs-cn/10.sql-reference/5.sql-statement/36.EXPLAIN.md
Normal file
195
docs/docs-cn/10.sql-reference/5.sql-statement/36.EXPLAIN.md
Normal file
@ -0,0 +1,195 @@
|
||||
EXPLAIN
|
||||
============================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于解释 SQL 语句的执行计划,可以是SELECT、DELETE、INSERT、REPLACE或UPDATE语句。提供正则过滤功能,通过session变量explain_regex对输出行/JSON进行过滤。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
获取表或列的信息:
|
||||
{EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild]
|
||||
|
||||
获取SQL计划信息:
|
||||
{EXPLAIN | DESCRIBE | DESC}
|
||||
[BASIC | OUTLINE | EXTENDED | EXTENDED_NOADDR | PARTITIONS | FORMAT = {TRADITIONAL| JSON}]
|
||||
{SELECT statement | DELETE statement | INSERT statement | REPLACE statement| UPDATE statement}
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| tbl_name | 指定表名。 |
|
||||
| col_name | 指定表的列名。 |
|
||||
| BASIC | 指定输出计划的基础信息,如算子ID、算子名称、所引用的表名。 |
|
||||
| OUTLINE | 指定输出的计划信息包含outline信息。 |
|
||||
| EXTENDED | EXPLAIN产生附加信息,包括:每个算子的输入列和输出列,访问表的分区信息,当前使用的filter信息,如果当前算子使用了索引,显示所使用的索引列及抽取的query range。 |
|
||||
| EXTENDED_NOADDR | 以简约的方式展示附加信息。 |
|
||||
| PARTITIONS | 显示分区相关信息。 |
|
||||
| FORMAT = {TRADITIONAL\| JSON} | 指定EXPALIN的输出格式: * TRADITIONAL:表格输出格式 * JSON:KEY:VALUE输出格式, JSON显示为JSON字符串,包括EXTENDED和PARTITIONS信息。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* **省略explain_type**
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>explain select * from t1,t2 where t1.c2=t2.c2 and t2.c1 > 4\G
|
||||
*************************** 1. row ***************************
|
||||
Query Plan: =======================================
|
||||
|ID|OPERATOR |NAME|EST. ROWS|COST |
|
||||
---------------------------------------
|
||||
|0 |HASH JOIN | |9801000 |5933109|
|
||||
|1 | TABLE SCAN|t2 |10000 |6219 |
|
||||
|2 | TABLE SCAN|t1 |100000 |68478 |
|
||||
=======================================
|
||||
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil),
|
||||
equal_conds([t1.c2 = t2.c2]), other_conds(nil)
|
||||
1 - output([t2.c2], [t2.c1]), filter(nil),
|
||||
access([t2.c2], [t2.c1]), partitions(p0)
|
||||
2 - output([t1.c2], [t1.c1]), filter(nil),
|
||||
access([t1.c2], [t1.c1]), partitions(p0)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* **EXTENDED**
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>explain extended_noaddr select * from t1,t2 where t1.c2=t2.c2 and t2.c1 > 4\G
|
||||
*************************** 1. row ***************************
|
||||
Query Plan: =======================================
|
||||
|ID|OPERATOR |NAME|EST. ROWS|COST |
|
||||
---------------------------------------
|
||||
|0 |HASH JOIN | |9801000 |5933109|
|
||||
|1 | TABLE SCAN|t2 |10000 |6219 |
|
||||
|2 | TABLE SCAN|t1 |100000 |68478 |
|
||||
=======================================
|
||||
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil),
|
||||
equal_conds([t1.c2 = t2.c2]), other_conds(nil)
|
||||
1 - output([t2.c2], [t2.c1]), filter(nil),
|
||||
access([t2.c2], [t2.c1]), partitions(p0),
|
||||
is_index_back=false,
|
||||
range_key([t2.c1]), range(4 ; MAX),
|
||||
range_cond([t2.c1 > 4])
|
||||
2 - output([t1.c2], [t1.c1]), filter(nil),
|
||||
access([t1.c2], [t1.c1]), partitions(p0),
|
||||
is_index_back=false,
|
||||
range_key([t1.__pk_increment], [t1.__pk_cluster_id], [t1.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
|
||||
```
|
||||
|
||||
|
||||
|
||||
* **TRADITIONAL** **格式**
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>explain format=TRADITIONAL select * from t1,t2 where t1.c2=t2.c2 and t2.c1 > 4\G
|
||||
*************************** 1. row ***************************
|
||||
Query Plan: =======================================
|
||||
|ID|OPERATOR |NAME|EST. ROWS|COST |
|
||||
---------------------------------------
|
||||
|0 |HASH JOIN | |9801000 |5933109|
|
||||
|1 | TABLE SCAN|t2 |10000 |6219 |
|
||||
|2 | TABLE SCAN|t1 |100000 |68478 |
|
||||
=======================================
|
||||
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil),
|
||||
equal_conds([t1.c2 = t2.c2]), other_conds(nil)
|
||||
1 - output([t2.c2], [t2.c1]), filter(nil),
|
||||
access([t2.c2], [t2.c1]), partitions(p0)
|
||||
2 - output([t1.c2], [t1.c1]), filter(nil),
|
||||
access([t1.c2], [t1.c1]), partitions(p0)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* **JSON格式**
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>explain format=JSON select * from t1,t2 where t1.c2=t2.c2 and t2.c1 > 4\G
|
||||
*************************** 1. row ***************************
|
||||
Query Plan: {
|
||||
"ID":2,
|
||||
"OPERATOR":"JOIN",
|
||||
"NAME":"JOIN",
|
||||
"EST.ROWS":9800999,
|
||||
"COST":5933108,
|
||||
"output": [
|
||||
"t1.c1",
|
||||
"t1.c2",
|
||||
"t2.c1",
|
||||
"t2.c2"
|
||||
],
|
||||
"TABLE SCAN": {
|
||||
"ID":0,
|
||||
"OPERATOR":"TABLE SCAN",
|
||||
"NAME":"TABLE SCAN",
|
||||
"EST.ROWS":10000,
|
||||
"COST":6218,
|
||||
"output": [
|
||||
"t2.c2",
|
||||
"t2.c1"
|
||||
]
|
||||
},
|
||||
"TABLE SCAN": {
|
||||
"ID":1,
|
||||
"OPERATOR":"TABLE SCAN",
|
||||
"NAME":"TABLE SCAN",
|
||||
"EST.ROWS":100000,
|
||||
"COST":68477,
|
||||
"output": [
|
||||
"t1.c2",
|
||||
"t1.c1"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列:
|
||||
|
||||
|
||||
| **列名** | **说明** |
|
||||
|----------|-----------------|
|
||||
| ID | 计划执行序列号。 |
|
||||
| OPERATOR | 执行算子。 |
|
||||
| NAME | 算子所引用的表。 |
|
||||
| EST.ROWS | 估计执行到当前算子输出的行数。 |
|
||||
| COST | 执行到当前算子的CPU时间。 |
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,89 @@
|
||||
FLASHBACK DATABASE
|
||||
=======================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
用于从回收站中恢复被删除的DATABASE。
|
||||
|
||||
前置条件
|
||||
-------------
|
||||
|
||||
回收站需要处于开启状态,可以通过
|
||||
|
||||
`show variables like 'recyclebin';`
|
||||
|
||||
来查看回收站是否开启。
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> show variables like 'recyclebin';
|
||||
+---------------+-------+
|
||||
| Variable_name | Value |
|
||||
+---------------+-------+
|
||||
| recyclebin | ON |
|
||||
+---------------+-------+
|
||||
1 row in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
果回收站处于关闭状态,可以通过
|
||||
|
||||
`set recyclebin = on;`
|
||||
|
||||
来开启。回收站中的表没有被实际删除,仍然会占用资源,如果需要彻底删除,可以执行
|
||||
|
||||
`purge recyclebin;`
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
FLASHBACK DATABASE object_name TO BEFORE DROP [RENAME TO db_name];
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **解释** |
|
||||
|-------------|----------------------------------------------------------------------|
|
||||
| object_name | 指定要恢复的object名称,不支持指定DATABASE名称。恢复DATABASE时,也会将DATABASE下面的表、索引等都恢复出来。 |
|
||||
| RENAME to | 恢复时将DATABASE重命名。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 从回收站中恢复删除的DATABASE。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> create database da;
|
||||
Query OK, 1 row affected (0.03 sec)
|
||||
|
||||
OceanBase(admin@test)> drop database da;
|
||||
Query OK, 0 rows affected (0.04 sec)
|
||||
|
||||
OceanBase(admin@test)> show recyclebin;
|
||||
+--------------------------------------------------+---------------+----------+----------------------------+
|
||||
| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
|
||||
+--------------------------------------------------+---------------+----------+----------------------------+
|
||||
| __recycle_$_1_1099511628829_18446744073709551615 | da | DATABASE | 2017-10-20 17:36:15.838771 |
|
||||
+--------------------------------------------------+---------------+----------+----------------------------+
|
||||
1 row in set (0.02 sec)
|
||||
|
||||
OceanBase(admin@test)> flashback database __recycle_$_1_1099511628829_18446744073709551615 to before drop;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,110 @@
|
||||
FLASHBACK TABLE
|
||||
====================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
用于从回收站中恢复被删除的TABLE。
|
||||
|
||||
前置条件
|
||||
-------------
|
||||
|
||||
回收站需要处于开启状态,可以通过
|
||||
|
||||
`show variables like 'recyclebin';`
|
||||
|
||||
来查看回收站是否开启。
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> show variables like 'recyclebin';
|
||||
+---------------+-------+
|
||||
| Variable_name | Value |
|
||||
+---------------+-------+
|
||||
| recyclebin | ON |
|
||||
+---------------+-------+
|
||||
1 row in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
如果回收站处于关闭状态,可以通过
|
||||
|
||||
`set recyclebin = on;`
|
||||
|
||||
来开启。回收站中的表没有被实际删除,仍然会占用资源,如果需要彻底删除,可以执行
|
||||
|
||||
`purge recyclebin;`
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
FLASHBACK TABLE object_name TO BEFORE DROP [RENAME to db_name.table_name];
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **解释** |
|
||||
|-------------|-------------------------------------------------------------------------|
|
||||
| object_name | 指定要恢复的object名称或表名,只有在表所在的database中才能执行。恢复TABLE时,也会将和TABLE相关的INDEX也恢复出来。 |
|
||||
| RENAME to | 修改表名和表所属的库。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 从回收站中恢复被删除的表t。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> create table t(id int primary key, k int);
|
||||
Query OK, 0 rows affected (0.04 sec)
|
||||
|
||||
OceanBase(admin@test)> insert into t values(1,1);
|
||||
Query OK, 1 row affected (0.00 sec)
|
||||
|
||||
OceanBase(admin@test)> select * from t;
|
||||
+----+------+
|
||||
| id | k |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
+----+------+
|
||||
1 row in set (0.00 sec)
|
||||
|
||||
OceanBase(admin@test)> drop table t;
|
||||
Query OK, 0 rows affected (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)> select * from t;
|
||||
ERROR 1146 (42S02): Table 'test.t' does not exist
|
||||
OceanBase(admin@test)> show recyclebin;
|
||||
+--------------------------------+---------------+-------+----------------------------+
|
||||
| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
|
||||
+--------------------------------+---------------+-------+----------------------------+
|
||||
| __recycle_$_1_1597028971700936 | t | TABLE | 2020-08-10 11:09:31.701033 |
|
||||
+--------------------------------+---------------+-------+----------------------------+
|
||||
1 row in set (0.00 sec)
|
||||
|
||||
OceanBase(admin@test)> flashback table t to before drop;
|
||||
Query OK, 0 rows affected (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)> select * from t;
|
||||
+----+------+
|
||||
| id | k |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
+----+------+
|
||||
1 row in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,67 @@
|
||||
FLASHBACK TENANT
|
||||
=====================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------------------
|
||||
|
||||
该语句用于从回收站中恢复被删除的租户。
|
||||
|
||||
前置条件
|
||||
-------------------------
|
||||
|
||||
回收站需要处于开启状态,可以通过`show variables like 'recyclebin';`来查看回收站是否开启。
|
||||
|
||||
```unknow
|
||||
OceanBase(admin@test)> show variables like 'recyclebin';
|
||||
+---------------+-------+
|
||||
| Variable_name | Value |
|
||||
+---------------+-------+
|
||||
| recyclebin | ON |
|
||||
+---------------+-------+
|
||||
1 row in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
如果回收站处于关闭状态,可以通过`set recyclebin = on;`来开启。回收站中的表没有被实际删除,仍然会占用资源,如果需要彻底删除,可以执行`purge recyclebin;`
|
||||
|
||||
格式
|
||||
-----------------------
|
||||
|
||||
```unknow
|
||||
FLASHBACK TENANT tenant_name TO BEFORE DROP [RENAME to new_tenant_name];
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
--------------------------
|
||||
|
||||
|
||||
|
||||
| 参数 | 解释 |
|
||||
|-----------------|---------------------------------------------------------------------------------------|
|
||||
| tenant_name | 指定要恢复的租户名。可以使用原始租户名,也可以使用在回收站中的名字。回收站中的名字具有唯一性,可以指定确定的租户;原始租户名可能会重复,此时恢复的是最晚进入回收站的租户。 |
|
||||
| new_tenant_name | 将恢复后的租户重新命名。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------------------
|
||||
|
||||
* 从回收站中恢复被删除的租户tenant1。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```unknow
|
||||
obclient> flashback tenant tenant1 to before drop;
|
||||
Query OK, 0 rows affected (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,64 @@
|
||||
ALTER RESOURCE POOL
|
||||
========================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来修改资源池。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
ALTER RESOURCE POOL poolname
|
||||
UNIT [=] unitname,
|
||||
UNIT_NUM [=] unitnum,
|
||||
ZONE [=] ('zone' [, 'zone' ...]);
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-----------|-----------------------------------------------------|
|
||||
| UNIT | 指定要使用的资源单元配置的名称 |
|
||||
| UNIT_NUM | 指定要创建的一个 ZONE 下的资源单元个数,取值要小于对应 ZONE 中的 OBServer 个数。 |
|
||||
| ZONE_LIST | 指定要创建的资源单元的 ZONE 列表 |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 不能同时修改 RESOURCE POOL 的 unit, unit_num, zone_list 多个属性,执行将报错。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> ALTER RESOURCE POOL pool1 unit='unit2', unit_num=1, zone_list=('zone1');
|
||||
ERROR 1235 (0A000): alter unit_num, resource_unit, zone_list in one cmd not supported
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 修改 RESOURCE POOL 的单条 unit 属性。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> ALTER RESOURCE POOL pool1 unit='unit2';
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
138
docs/docs-cn/10.sql-reference/5.sql-statement/40.GRANT.md
Normal file
138
docs/docs-cn/10.sql-reference/5.sql-statement/40.GRANT.md
Normal file
@ -0,0 +1,138 @@
|
||||
GRANT
|
||||
==========================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于系统管理员授予 User 某些权限。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
* 当前用户必须拥有被授予的权限(例如,user1 把表 t1 的 SELECT 权限授予 user2,则 user1 必须拥有表 t1 的 SELECT 的权限),并且拥有 GRANT OPTION 权限,才能授予成功。
|
||||
|
||||
|
||||
|
||||
* 用户授权后,该用户只有重新连接OceanBase,权限才能生效。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
GRANT priv_type
|
||||
ON priv_level
|
||||
TO user_specification [, user_specification]...
|
||||
[WITH with_option ...]
|
||||
|
||||
privilege_type:
|
||||
ALTER
|
||||
| CREATE
|
||||
| CREATE USER
|
||||
| CREATE VIEW
|
||||
| DELETE
|
||||
| DROP
|
||||
| GRANT OPTION
|
||||
| INDEX
|
||||
| INSERT
|
||||
| PROCESS
|
||||
| SELECT
|
||||
| SHOW DATABASES
|
||||
| SHOW VIEW
|
||||
| SUPER
|
||||
| UPDATE
|
||||
| USAGE
|
||||
| CREATE SYNONYM
|
||||
|
||||
priv_level:
|
||||
*
|
||||
| *.*
|
||||
| db_name.*
|
||||
| db_name.tbl_name
|
||||
| tbl_name
|
||||
| db_name.routine_name
|
||||
|
||||
user_specification:
|
||||
user [IDENTIFIED BY [PASSWORD] 'password']
|
||||
|
||||
with_option:
|
||||
GRANT OPTION
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|----------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| priv_type | 指定授予的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时把多个权限赋予用户时,权限类型用","隔开。 |
|
||||
| priv_level | 指定授予权限的层级。权限可以分为以下几个层级: * 全局层级:适用于所有的数据库。使用 GRANT ALL ON \*.\*授予全局权限。 * 数据库层级:适用于一个给定数据库中的所有目标。使用 GRANT ALL ON db_name.\* 授予数据库权限。 * 表层级:表权限适用于一个给定表中的所有列。使用 GRANT ALL ON db_name.tbl_name 授予表权限。 用"\*"代替table_name,表示赋予全局权限,即对数据库中的所有表赋权。 |
|
||||
| user_specification | 给特定用户授予权限。如果用户不存在,可以直接创建用户。 sql_mode='no_auto_create_user',同时没有identified by 指定密码时,不可以直接创建用户。 同时给多个用户授权时,用户名用","隔开。 |
|
||||
| user IDENTIFIED BY 'password' | 此处密码为明文。 |
|
||||
| user IDENTIFIED BY PASSWORD 'password' | 此处密码为密文。 |
|
||||
| with_option | 指定权限是否允许转授 |
|
||||
|
||||
|
||||
|
||||
可以授予的权限类型如下表所示。
|
||||
|
||||
**权限类型说明表**
|
||||
|
||||
|
||||
| **权限** | **说明** |
|
||||
|-------------------|-----------------------------------------------------------------|
|
||||
| ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 |
|
||||
| ALTER | ALTER TABLE的权限。 |
|
||||
| CREATE | CREATE TABLE的权限。 |
|
||||
| CREATE USER | CREATE USER,DROP USER,RENAME USER和REVOKE ALL PRIVILEGES的权限。 |
|
||||
| CREATE TABLEGROUP | 全局CREATE TABLEGROUP的权限。 |
|
||||
| DELETE | DELETE的权限。 |
|
||||
| DROP | DROP的权限。 |
|
||||
| GRANT OPTION | GRANT OPTION的权限。 |
|
||||
| INSERT | INSERT的权限。 |
|
||||
| SELECT | SELECT的权限。 |
|
||||
| UPDATE | UPDATE的权限。 |
|
||||
| SUPER | SET GLOBAL修改全局系统参数的权限。 |
|
||||
| SHOW DATABASES | 全局 SHOW DATABASES的权限。 |
|
||||
| INDEX | CREATE INDEX, DROP INDEX的权限 |
|
||||
| CREATE VIEW | 创建、删除视图的权限。 |
|
||||
| SHOW VIEW | SHOW CREATE VIEW权限。 |
|
||||
| CREATE SYNONYM | 创建同义词的权限。 |
|
||||
|
||||
|
||||
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
目前没有 change effective tenant 的权限控制,故 sys 租户下的用户都可以进行授权。
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 执行以下命令给用户 obsqluser01 赋予所有权限。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@TEST)>GRANT ALL PRIVILEGES ON *.* TO obsqluser01 with grant option;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
245
docs/docs-cn/10.sql-reference/5.sql-statement/41.INSERT.md
Normal file
245
docs/docs-cn/10.sql-reference/5.sql-statement/41.INSERT.md
Normal file
@ -0,0 +1,245 @@
|
||||
INSERT
|
||||
===========================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于添加一个或多个记录到表中。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
INSERT [IGNORE] [INTO]
|
||||
single_table_insert
|
||||
[ON DUPLICATE KEY UPDATE update_asgn_list]
|
||||
|
||||
single_table_insert:
|
||||
{dml_table_name values_clause
|
||||
| dml_table_name '(' ')' values_clause
|
||||
| dml_table_name '(' column_list ')' values_clause
|
||||
| dml_table_name SET update_asgn_list}
|
||||
|
||||
dml_table_name:
|
||||
tbl_name [PARTITION (partition_name,...)]
|
||||
|
||||
values_clause:
|
||||
{{VALUES | VALUE} ({expr | DEFAULT},...) [, ...]
|
||||
| select_stmt}
|
||||
|
||||
column_list
|
||||
column_name [, ...]
|
||||
|
||||
update_asgn_list:
|
||||
column_name = expr [, ...]
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
**INSERT...ON DUPLICATE KEY UPDATE...** **语句执行,affect row的计算:**
|
||||
|
||||
* 在没有设置client_capabilities中CLIENT_FOUND_ROWS的情况下:
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
* 如果设置了CLIENT_FOUND_ROWS:
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
* CLIENT_FOUND_ROWS的影响在于:不设置CLIENT_FOUND_ROWS的情况下,计算affected_row的值,只计算实际更新了行数,而设置了CLIENT_FOUND_ROWS的话,会把所有touched行数(满足冲突条件的行)都记上,而不管其是否发生了真正的数据修改。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-------------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||
| IGNORE | 在INSERT语句执行过程中发生的错误将会被忽略。 |
|
||||
| column_list | 用于指定插入数据的列,同时插入多列时,用","隔开。 |
|
||||
| tbl_name | 指定要插入的表名。 |
|
||||
| partition_name | 插入表指定的分区名。 |
|
||||
| update_asgn_list | 赋值语句,例如:"c1 = 2" |
|
||||
| ON DUPLICATE KEY UPDATE | 指定对重复主键或唯一键的处理。如果指定了ON DUPLICATE KEY UPDATE,当要插入的主键或唯一键有重复时,会用配置值替换待插入的值;如果不指定ON DUPLICATE KEY UPDATE,当要插入的主键或唯一键有重复时,插入报错。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
示例表及数据基于以下定义:
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>create table t1(c1 int primary key, c2 int) partition by key(c1) partitions 4;
|
||||
Query OK, 0 rows affected (0.16 sec)
|
||||
|
||||
OceanBase(admin@test)>create table t2(c1 int primary key, c2 int);
|
||||
Query OK, 0 rows affected (0.16 sec)
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
4 rows in set (0.06 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 向表 t1 中插入一行数数据。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>insert into t1 values(1,1);
|
||||
Query OK, 1 row affected (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
+----+------+
|
||||
1 row in set (0.04 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 向表 t1 中插入多行数据。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>insert t1 values(1,1),(2,default),(2+2,3*4);
|
||||
Query OK, 3 rows affected (0.02 sec)
|
||||
Records: 3 Duplicates: 0 Warnings: 0
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
| 2 | NULL |
|
||||
| 4 | 12 |
|
||||
+----+------+
|
||||
3 rows in set (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 向表 t1 指定的 p0 分区插入单行数据。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>insert into t1 partition(p0) (c1) values(5);
|
||||
Query OK, 1 row affected (0.02 sec)
|
||||
OceanBase(admin@test)>select * from t1 partition(p0);
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 5 | NULL |
|
||||
+----+------+
|
||||
1 row in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 将表 t2 的查询结果作为数据插入表 t1。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>insert into t1 select * from t2;
|
||||
Query OK, 4 rows affected (0.02 sec)
|
||||
Records: 4 Duplicates: 0 Warnings: 0
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
4 rows in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 向表 t1 中插入重复主键值时利用 ON DUPLICATE KEY UPDATE 功能进行值更新
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>insert into t1 values(1,1),(1,2) ON DUPLICATE KEY UPDATE c1=100;
|
||||
Query OK, 3 rows affected (0.01 sec)
|
||||
Records: 2 Duplicates: 1 Warnings: 0
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+-----+------+
|
||||
| c1 | c2 |
|
||||
+-----+------+
|
||||
| 100 | 1 |
|
||||
+-----+------+
|
||||
1 row in set (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 对可更新视图v的插入值
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>create view v as select * from t1;
|
||||
Query OK, 0 rows affected (0.07 sec)
|
||||
OceanBase(admin@test)>insert into v values(1,1);
|
||||
Query OK, 1 row affected (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from v;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
+----+------+
|
||||
1 row in set (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
INSERT语句不支持直接对子查询进行插入操作,比如:
|
||||
|
||||
`insert into (select * from t1) values(1, 1);`
|
||||
|
||||
60
docs/docs-cn/10.sql-reference/5.sql-statement/42.KILL.md
Normal file
60
docs/docs-cn/10.sql-reference/5.sql-statement/42.KILL.md
Normal file
@ -0,0 +1,60 @@
|
||||
KILL
|
||||
=========================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来终止一个会话。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
如果您拥有 PROCESS 权限,则您可以查看所有会话。如果您拥有 SUPER 权限,您可以终止所有会话和语句。否则,您只能查看和终止您自己的会话和语句。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
KILL [CONNECTION | QUERY] 'sessionid'
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-----------------|-----------------------------------|
|
||||
| KILL CONNECTION | 与不含修改符的KILL一样,可终止给定的 *threadid* 。 |
|
||||
| KILL QUERY | 可终止连接当前正在执行的语句,但是会保持连接的原状。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
终止 sessionid 为 3221638213 的会话连接当前正在执行的语句后,再终止该会话。
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>show processlist;
|
||||
+------------+-------+--------------------+------+---------+------+--------+------------------+
|
||||
| Id | User | Host | db | Command | Time | State | Info |
|
||||
+------------+-------+--------------------+------+---------+------+--------+------------------+
|
||||
| 3221638212 | admin | 1.11.111.127:11161 | test | Query | 0 | ACTIVE | show processlist |
|
||||
| 3221638213 | admin | 1.11.111.127:11161 | test | Query | 0 | ACTIVE | select "abcedfg" |
|
||||
+------------+-------+--------------------+------+---------+------+--------+------------------+
|
||||
1 row in set (0.03 sec)
|
||||
|
||||
OceanBase(admin@test)>kill query 3221638213;
|
||||
Query OK, 0 rows affected (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)>kill 3221638212;
|
||||
Query OK, 0 rows affected (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,60 @@
|
||||
PURGE DATABASE
|
||||
===================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于删除放在回收站的数据库。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
PURGE DATABASE object_name;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-------------|--------------|
|
||||
| object_name | 对象进入回收站后的新名字 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除放在回收站的数据库 __recycle_$_1_1597384386029184。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> create database db1;
|
||||
Query OK, 1 row affected (0.03 sec)
|
||||
|
||||
OceanBase(admin@test)> drop database db1;
|
||||
Query OK, 0 rows affected (0.04 sec)
|
||||
|
||||
OceanBase(admin@test)> show recyclebin;
|
||||
+--------------------------------+---------------+----------+----------------------------+
|
||||
| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
|
||||
+--------------------------------+---------------+----------+----------------------------+
|
||||
| __recycle_$_1_1597384386029184 | db1 | DATABASE | 2020-08-14 13:53:06.029367 |
|
||||
+--------------------------------+---------------+----------+----------------------------+
|
||||
1 row in set (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)> purge database __recycle_$_1_1597384386029184;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
|
||||
OceanBase(admin@test)> show recyclebin;
|
||||
```
|
||||
|
||||
|
||||
@ -0,0 +1,62 @@
|
||||
PURGE INDEX
|
||||
================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来删除放在回收站中的索引表。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
PURGE INDEX object_name;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-------------|--------------|
|
||||
| object_name | 对象进入回收站后的新名字 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除放在回收站中的索引表 __recycle_$_1_1597387726700872。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> create table t1(c1 int);
|
||||
Query OK, 0 rows affected (0.09 sec)
|
||||
|
||||
OceanBase(admin@test)> create index idx on t1(c1);
|
||||
Query OK, 0 rows affected (0.48 sec)
|
||||
|
||||
OceanBase(admin@test)> drop table t1;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
|
||||
OceanBase(admin@test)> show recyclebin;
|
||||
+--------------------------------+----------------------------+-------+----------------------------+
|
||||
| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
|
||||
+--------------------------------+----------------------------+-------+----------------------------+
|
||||
| __recycle_$_1_1597387726700872 | __idx_1101710651081557_idx | INDEX | 2020-08-14 14:48:46.699145 |
|
||||
| __recycle_$_1_1597387726712976 | t1 | TABLE | 2020-08-14 14:48:46.712643 |
|
||||
+--------------------------------+----------------------------+-------+----------------------------+
|
||||
5 rows in set (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)> purge index __recycle_$_1_1597387726700872;
|
||||
Query OK, 0 rows affected (0.04 sec)
|
||||
```
|
||||
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
PURGE RECYCLEBIN
|
||||
=====================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于 root 用户清空回收站。
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
PURGE RECYCLEBIN会清除回收站中的所有东西,只有 root 用户才能够执行这条语句,操作时请谨慎。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
PURGE RECYCLEBIN;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
无。
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* root 用户清空回收站。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> purge recyclebin;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
```
|
||||
|
||||
|
||||
@ -0,0 +1,59 @@
|
||||
PURGE TABLE
|
||||
================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于删除放在回收站的表。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
PURGE TABLE object_name;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-------------|--------------|
|
||||
| object_name | 对象进入回收站后的新名字 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 删除放在回收站中的表 __recycle_$_1_1099511628776_1099511677778。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> create table test(c1 int);
|
||||
Query OK, 0 rows affected (0.16 sec)
|
||||
|
||||
OceanBase(admin@test)> drop table test;
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
|
||||
OceanBase(admin@test)> show recyclebin;
|
||||
+-------------------------------------------+---------------+-------+----------------------------+
|
||||
| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
|
||||
+-------------------------------------------+---------------+-------+----------------------------+
|
||||
| __recycle_$_1_1099511628776_1099511677778 | test | TABLE | 2017-10-20 17:40:22.304025 |
|
||||
+-------------------------------------------+---------------+-------+----------------------------+
|
||||
1 row in set (0.02 sec)
|
||||
|
||||
OceanBase(admin@test)> purge table __recycle_$_1_1099511628776_1099511677778;
|
||||
Query OK, 0 rows affected (0.04 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,63 @@
|
||||
PURGE TENANT
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------------------
|
||||
|
||||
该语句用于删除放在回收站的租户。
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
该语句只有系统租户可以执行。
|
||||
|
||||
格式
|
||||
-----------------------
|
||||
|
||||
```unknow
|
||||
PURGE TENANT tenant_name;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
--------------------------
|
||||
|
||||
|
||||
|
||||
| 参数 | 描述 |
|
||||
|-------------|--------------------------------------------------------------------------------------|
|
||||
| tenant_name | 租户名称。可以使用删除前的原始租户名,也可以使用在回收站中的名字。回收站中的名字具有唯一性,可以指定确定的租户;原始租户名可能会重复,此时删除的是最早进入回收站的租户。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------------------
|
||||
|
||||
* 删除放在回收站中的租户 mysql。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```unknow
|
||||
obclient>show recyclebin;
|
||||
+--------------------------------+---------------+--------+----------------------------+
|
||||
| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
|
||||
+--------------------------------+---------------+--------+----------------------------+
|
||||
| __recycle_$_1_1599722585571328 | mysql | TENANT | 2020-09-10 15:36:54.712101 |
|
||||
+--------------------------------+---------------+--------+----------------------------+
|
||||
1 row in set (0.02 sec)
|
||||
|
||||
obclient>purge tenant mysql;
|
||||
Query OK, 0 rows affected (0.17 sec)
|
||||
|
||||
obclient>show recyclebin;
|
||||
Empty set (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,96 @@
|
||||
RENAME TABLE
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来对一个或多个表进行重命名。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
RENAME TABLE tblname TO newtblname
|
||||
[, tb1name2 TO newtblname ...];
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|---------------------------------------------------------------------------|------------------|
|
||||
| tblname | 原表名。 |
|
||||
| newtblname | 新表名。 |
|
||||
| tblname TO newtblname \[, tb1name2 TO newtblname ...\]; | 多个表重命名时,使用","隔开。 |
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
* 重命名操作自动进行,重命名正在进行时,其他线程不能读取任何表。
|
||||
|
||||
* 如果此语句用于对多个表进行重命名,则重命名操作从左到右进行。
|
||||
|
||||
* 当您执行 RENAME 时,您不能有被锁定的表,也不能有处于活性状态的事务。还必须拥有原表的 ALTER 和 DROP 权限,以及新表的 CREATE 和 INSERT 权限。
|
||||
|
||||
* RENAME TABLE 也可以用于视图,只要确保是在同一个数据库中。
|
||||
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
1. 创建表 t1 和 t2。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
create table t1(c1 int);
|
||||
|
||||
create table t2(c1 int);
|
||||
```
|
||||
|
||||
|
||||
|
||||
2. 将表 t1 重命名为 t11。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
rename table t1 to t11;
|
||||
```
|
||||
|
||||
|
||||
|
||||
3. 将表 t11 重命名为 t111,表 t2 重命名为 t22。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
rename table t11 to t111, t2 to t22;
|
||||
```
|
||||
|
||||
|
||||
|
||||
4. 将表 t111 重命名为 t1111 后,再将表 t1111重命名为 t1。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
rename table t111 to t1111, t1111 to t1;
|
||||
```
|
||||
|
||||
|
||||
|
||||
110
docs/docs-cn/10.sql-reference/5.sql-statement/49.rename-user.md
Normal file
110
docs/docs-cn/10.sql-reference/5.sql-statement/49.rename-user.md
Normal file
@ -0,0 +1,110 @@
|
||||
RENAME USER
|
||||
================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于修改 OceanBase 登录用户的用户名。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
必须拥有全局 CREATE USER 权限,才可以使用本命令。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
RENAME USER
|
||||
'oldusername' TO 'newusername'
|
||||
[,'oldusername' TO 'newusername'...];
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|--------------------------------|-----------------------------------------------------------|
|
||||
| oldusername | 旧用户名。 |
|
||||
| newusername | 新用户名。用户名的占用字节小于或等于16。 |
|
||||
| 'oldusername' TO 'newusername' | 修改用户名。同时修改多个用户名时,用","隔开。 修改前后,新旧用户权限保持一致。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
1. 修改前,执行以下命令,查看用户。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT user FROM mysql.user;
|
||||
```
|
||||
|
||||
|
||||
|
||||
结果如下所示。
|
||||
|
||||
```javascript
|
||||
mysql> SELECT user FROM mysql.user;
|
||||
+-----------+
|
||||
| user |
|
||||
+-----------+
|
||||
| root |
|
||||
| admin |
|
||||
| sqluser01 |
|
||||
| sqluser02 |
|
||||
+-----------+
|
||||
4 rows in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
2. 执行以下命令,将 sqluser01 用户的用户名修改为 obsqluser01。
|
||||
|
||||
```javascript
|
||||
RENAME USER 'sqluser01' TO 'obsqluser01';
|
||||
```
|
||||
|
||||
|
||||
|
||||
3. 修改后,执行以下命令,查看用户。
|
||||
|
||||
```javascript
|
||||
SELECT user FROM mysql.user;
|
||||
```
|
||||
|
||||
|
||||
|
||||
结果如下所示。 sqluser01 用户的用户名被修改为 obsqluser01。
|
||||
|
||||
```javascript
|
||||
mysql> RENAME USER 'sqluser01' TO 'obsqluser01';
|
||||
Query OK, 0 rows affected (0.04 sec)
|
||||
|
||||
mysql> SELECT user FROM mysql.user;
|
||||
+-------------+
|
||||
| user |
|
||||
+-------------+
|
||||
| root |
|
||||
| admin |
|
||||
| obsqluser01 |
|
||||
| sqluser02 |
|
||||
+-------------+
|
||||
4 rows in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,60 @@
|
||||
ALTER RESOURCE UNIT
|
||||
========================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来修改资源单元配置。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
ALTER RESOURCE UNIT unitname
|
||||
MAX_CPU [=] cpunum,
|
||||
MAX_MEMORY [=] memsize,
|
||||
MAX_IOPS [=] iopsnum,
|
||||
MAX_DISK_SIZE [=] disksize,
|
||||
MAX_SESSION_NUM [=] sessionnum,
|
||||
[MIN_CPU [=] cpunum,]
|
||||
[MIN_MEMORY [=] memsize,]
|
||||
[MIN_IOPS [=] iopsnum] ;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| 参数 | 描述 |
|
||||
|-----------------|---------------------------------------------------|
|
||||
| MAX_CPU | 指定要修改的 CPU 最多数量 |
|
||||
| MAX_MEMORY | 指定要修改的最大内存容量,取值范围为\[1073741824, +∞) 单位为字节,即最小值为1G |
|
||||
| MAX_IOPS | 指定要修改的 IOPS 最多数量,取值范围为\[128,+∞) |
|
||||
| MAX_DISK_SIZE | 指定要修改的最大硬盘容量,取值范围为[536870912,+∞]单位为字节,即最小值为512M |
|
||||
| MAX_SESSION_NUM | 指定要修改的 session 最多数量,取值范围为\[64,+∞) |
|
||||
| MIN_CPU | 指定要修改的 CPU 最少数量 |
|
||||
| MIN_MEMORY | 指定要修改的最小内存容量 |
|
||||
| MIN_IOPS | 指定要修改的 IOPS 最少数量 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 修改资源单元 unit1 最高配置为 2个CPU,2G 的内存容量。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> ALTER RESOURCE UNIT unit1 max_cpu 2, max_memory '2G';
|
||||
Query OK, 0 rows affected (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
124
docs/docs-cn/10.sql-reference/5.sql-statement/50.REPLACE.md
Normal file
124
docs/docs-cn/10.sql-reference/5.sql-statement/50.REPLACE.md
Normal file
@ -0,0 +1,124 @@
|
||||
REPLACE
|
||||
============================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于替换一个或多个记录到表。如果没有主键或唯一键冲突则插入记录,如果存在冲突则先删除冲突记录再插入新的记录。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
replace_stmt:
|
||||
REPLACE [INTO] table_factor [PARTITION (partition_name_list)] [(column_name_list)]
|
||||
{VALUES | VALUE} column_value_lists;
|
||||
|
||||
partition_name_list:
|
||||
partition_name [, partition_name ...]
|
||||
|
||||
column_name_list:
|
||||
column_name [, column_name ...]
|
||||
|
||||
column_value_lists:
|
||||
(column_value_list) [, (column_value_list) ...]
|
||||
|
||||
column_value_list:
|
||||
column_value [, column_value ...]
|
||||
|
||||
column_value:
|
||||
{expression | DEFAULT}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 参数解释
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|---------------------|-----------|
|
||||
| table_factor | 替换的表名 |
|
||||
| column_name_list | 指定替换数据的列 |
|
||||
| partition_name_list | 替换表指定的分区名 |
|
||||
|
||||
|
||||
|
||||
### 示例
|
||||
|
||||
本示例基于如下表定义。
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>create table test (c1 int primary key, c2 varchar(40));
|
||||
Query OK, 0 rows affected (0.23 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
1. 替换 test 表中的行一和行二的值分别为 'hello alibaba' 和 'hello ob'。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>REPLACE INTO test VALUES (1, 'hello alibaba'),(2, 'hello ob');
|
||||
Query OK, 2 rows affected (0.01 sec)
|
||||
Records: 2 Duplicates: 0 Warnings: 0
|
||||
```
|
||||
|
||||
|
||||
|
||||
2. 查看 test 表中的行一和行二内容。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>SELECT * FROM test;
|
||||
+----+---------------+
|
||||
| c1 | c2 |
|
||||
+----+---------------+
|
||||
| 1 | hello alibaba |
|
||||
| 2 | hello ob |
|
||||
+----+---------------+
|
||||
2 rows in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
3. 替换表 test 中的行三和行二的内容分别为 'hello alibaba' 和 'hello oceanbase'。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>REPLACE INTO test VALUES (3, 'hello alibaba'),(2, 'hello oceanbase');
|
||||
Query OK, 3 rows affected (0.00 sec)
|
||||
Records: 2 Duplicates: 1 Warnings: 0
|
||||
```
|
||||
|
||||
|
||||
|
||||
4. 查看 test 表中的行一、行二和行三的内容。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>SELECT * FROM test;
|
||||
+----+-----------------+
|
||||
| c1 | c2 |
|
||||
+----+-----------------+
|
||||
| 1 | hello alibaba |
|
||||
| 2 | hello oceanbase |
|
||||
| 3 | hello alibaba |
|
||||
+----+-----------------+
|
||||
3 rows in set (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
113
docs/docs-cn/10.sql-reference/5.sql-statement/51.REVOKE.md
Normal file
113
docs/docs-cn/10.sql-reference/5.sql-statement/51.REVOKE.md
Normal file
@ -0,0 +1,113 @@
|
||||
REVOKE
|
||||
===========================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于系统管理员撤销 User 的某些权限。
|
||||
|
||||
使用说明如下:
|
||||
|
||||
* 用户必须拥有被撤销的权限(例如,user1 要撤销 user2 对表 t1 的 SELECT 权限,则 user1 必须拥有表 t1 的 SELECT的权限),并且拥有 GRANT OPTION权限。
|
||||
|
||||
* 撤销 ALL PRIVILEGES 和 GRANT OPTION 权限时,当前用户必须拥有全局 GRANT OPTION 权限,或者对权限表的UPDATE 及 DELETE 权限。
|
||||
|
||||
* 撤销操作不会级联。例如,用户 user1 给 user2 授予了某些权限,撤回 user1 的权限不会同时也撤回 user2 的相应权限。
|
||||
|
||||
|
||||
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
REVOKE priv_type
|
||||
ON database.tblname
|
||||
FROM 'username';
|
||||
|
||||
privilege_type:
|
||||
ALTER
|
||||
| CREATE
|
||||
| CREATE USER
|
||||
| CREATE VIEW
|
||||
| DELETE
|
||||
| DROP
|
||||
| GRANT OPTION
|
||||
| INDEX
|
||||
| INSERT
|
||||
| PROCESS
|
||||
| SELECT
|
||||
| SHOW DATABASES
|
||||
| SHOW VIEW
|
||||
| SUPER
|
||||
| UPDATE
|
||||
| USAGE
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|------------------|---------------------------------------------------------------------------------------|
|
||||
| priv_type | 指定撤销的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时对某个用户撤销多个权限时,权限类型用","隔开。 |
|
||||
| database.tblname | 指定数据库中的表。 用"\*"代替 database 或 *table_name* ,表示撤销全局权限,即撤销对数据库中所有表的操作权限。 |
|
||||
| username | 指定撤销权限的用户。同时撤销多个用户的授权时,用户名用","隔开。 |
|
||||
|
||||
|
||||
|
||||
可以撤销的权限类型如下表所示。
|
||||
|
||||
**权限类型说明表**
|
||||
|
||||
|
||||
| **权限** | **说明** |
|
||||
|-------------------|-----------------------------------------------------------------|
|
||||
| ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 |
|
||||
| ALTER | ALTER TABLE的权限。 |
|
||||
| CREATE | CREATE TABLE的权限。 |
|
||||
| CREATE USER | CREATE USER,DROP USER,RENAME USER和REVOKE ALL PRIVILEGES的权限。 |
|
||||
| CREATE TABLEGROUP | 全局CREATE TABLEGROUP的权限。 |
|
||||
| DELETE | DELETE的权限。 |
|
||||
| DROP | DROP的权限。 |
|
||||
| GRANT OPTION | GRANT OPTION的权限。 |
|
||||
| INSERT | INSERT的权限。 |
|
||||
| SELECT | SELECT的权限。 |
|
||||
| UPDATE | UPDATE的权限。 |
|
||||
| SUPER | SET GLOBAL修改全局系统参数的权限。 |
|
||||
| SHOW DATABASES | 全局 SHOW DATABASES的权限。 |
|
||||
| INDEX | CREATE INDEX, DROP INDEX的权限。 |
|
||||
| CREATE VIEW | 创建、删除视图的权限。 |
|
||||
| SHOW VIEW | SHOW CREATE VIEW权限。 |
|
||||
| CREATE SYNONYM | 创建同义词的权限。 |
|
||||
|
||||
|
||||
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
目前没有change effective tenant 的权限控制,故 sys 租户下的用户都可以撤销权限。
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
执行以下命令撤销用户 obsqluser01 的所有权限。
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@TEST)>REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'obsqluser01';
|
||||
Query OK, 0 rows affected (0.03 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
140
docs/docs-cn/10.sql-reference/5.sql-statement/52.SAVEPOINT.md
Normal file
140
docs/docs-cn/10.sql-reference/5.sql-statement/52.SAVEPOINT.md
Normal file
@ -0,0 +1,140 @@
|
||||
SAVEPOINT
|
||||
==============================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
SAVEPOINT语句用来实现事务的部分回滚。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
1. 创建savepoint:
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SAVEPOINT spname
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2. 回滚到savepoint:
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ROLLBACK [WORK] to [SAVEPOINT] spname
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
3. 删除savepoint:
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
RELEASE SAVEPOINT spname
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
参数说明
|
||||
-------------
|
||||
|
||||
* spname:指定savepoint的名称。savepoint是事务范围内唯一的,一个savepoint会覆盖前一个同名的savepoint。创建savepoint后可以将事务回滚到指定savepoint,也可以使用`ROLLBACK`语句回滚整个事务。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
举例
|
||||
-----------
|
||||
|
||||
假设一个事务执行了如下语句:
|
||||
|
||||
|
||||
| **sql_no** | **语句** | **分区** |
|
||||
|------------|---------------|------------|
|
||||
| 1 | update... | p1, p4 |
|
||||
| | savepoint sp1 | |
|
||||
| 2 | update... | p2, p4 |
|
||||
| 3 | update... | p3, p5 |
|
||||
| | savepoint sp2 | |
|
||||
| 4 | update... | p1, p3, p6 |
|
||||
| 5 | update... | p1, p5 |
|
||||
| | savepoint sp3 | |
|
||||
| 6 | select... | |
|
||||
| 7 | update... | p5, p6 |
|
||||
| | savepoint sp4 | |
|
||||
|
||||
|
||||
|
||||
#### 记录savepoint
|
||||
|
||||
用户在提交事务之前可以创建savepoint,需要根据savepoint创建的顺序,将事务的savepoint串成链表。以上事务包含了7条sql和4个savepoint,记录savepoint的链表如下图所示,其中每个节点记录了\<spname, sql_no\>的映射关系:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
#### 事务参与者列表
|
||||
|
||||
事务为了支持回滚某条sql之后的所有修改,需要将每条语句涉及的参与者以及对应的sql_no记录下来,以上事务执行了7条sql,涉及p1\~p6共6个partition:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
#### savepoint回滚过程
|
||||
|
||||
1. 根据savepoint链表查询spname对应的sql_no
|
||||
|
||||
|
||||
|
||||
|
||||
假设用户执行`ROLLBACK to SAVEPOINT sp2`,根据savepoint链表查询到sp2对应的sql_no为3。
|
||||
|
||||
2. 根据事务参与者列表查询sql_no对应的partition
|
||||
|
||||
|
||||
|
||||
|
||||
根据事务参与者列表查询到sql_no大于3的语句操作的分区涉及p1、p3、p5、p6。
|
||||
|
||||
3. 回滚分区数据
|
||||
|
||||
|
||||
|
||||
|
||||
根据第2步查询到的分区,调度程序向这些分区发起回滚请求,回滚当前事务在这些分区上sp2之后的所有修改。其中p1、p3、p5上关于本事务的部分修改被回滚掉,p6上关于本事务的所有修改都被回滚掉。
|
||||
|
||||
4. 更新事务参与者列表信息
|
||||
|
||||
|
||||
|
||||
|
||||
修改事务参与者列表,将sql_no大于3的操作信息从事务参与者列表中删除,由于p6上的所有修改都被回滚掉,因此p6可以从参与者列表中删除。
|
||||
|
||||

|
||||
|
||||
5. 删除无效的savepoint
|
||||
|
||||
|
||||
|
||||
|
||||
用户执行`ROLLBACK to SAVEPOINT sp2`成功后,系统会删除sp3和sp4的savepoint,不允许再回滚到sp3和sp4。
|
||||
|
||||

|
||||
@ -0,0 +1,6 @@
|
||||
SCHEMA
|
||||
===========================
|
||||
|
||||
|
||||
|
||||
`SCHEMA`同`DATABASE`,请参考 CREATE DATABASE、ALTER DATABASE、DROP DATABASE 的详细描述。
|
||||
376
docs/docs-cn/10.sql-reference/5.sql-statement/54.SELECT.md
Normal file
376
docs/docs-cn/10.sql-reference/5.sql-statement/54.SELECT.md
Normal file
@ -0,0 +1,376 @@
|
||||
SELECT
|
||||
===========================
|
||||
|
||||
|
||||
|
||||
SELECT 的语法相对比较复杂。本节首先会介绍普通的 SELECT 语法结构,然后介绍集合类 SELECT 的语法结构。
|
||||
|
||||
SIMPLE SELECT
|
||||
----------------------
|
||||
|
||||
### 描述
|
||||
|
||||
该语句用于查询表中的内容。
|
||||
|
||||
### 格式
|
||||
|
||||
```javascript
|
||||
simple_select:
|
||||
SELECT [/*+ hint statement */] [ALL | DISTINCT | UNIQUE | SQL_CALC_FOUND_ROWS]
|
||||
select_expr_list FROM from_list [WHERE condition]
|
||||
[GROUP BY group_expression_list [WITH ROLLUP] [HAVING condition]]
|
||||
[ORDER BY order_expression_list]
|
||||
[limit_clause]
|
||||
[FOR UPDATE]
|
||||
|
||||
select_expr:
|
||||
table_name.*
|
||||
| table_alias_name.*
|
||||
| expr [[AS] column_alias_name]
|
||||
|
||||
from_list:
|
||||
table_reference [, table_reference ...]
|
||||
|
||||
table_reference:
|
||||
simple_table
|
||||
| joined_table
|
||||
|
||||
simple_table:
|
||||
table_factor [partition_option] [[AS] table_alias_name]
|
||||
| (select_stmt) [AS] table_alias_name
|
||||
| (table_reference_list)
|
||||
|
||||
joined_table:
|
||||
table_reference [INNER] JOIN simple_table [join_condition]
|
||||
| table_reference outer_join_type JOIN simple_table join_condition
|
||||
|
||||
partition_option:
|
||||
PARTITION (partition_name_list)
|
||||
|
||||
partition_name_list:
|
||||
partition_name [, partition_name ...]
|
||||
|
||||
outer_join_type:
|
||||
{LEFT | RIGHT | FULL} [OUTER]
|
||||
|
||||
join_condition:
|
||||
ON expression
|
||||
|
||||
condition:
|
||||
expression
|
||||
|
||||
group_expression_list:
|
||||
group_expression [, group_expression ...]
|
||||
|
||||
group_expression:
|
||||
expression [ASC | DESC]
|
||||
|
||||
order_expression_list:
|
||||
order_expression [, order_expression ...]
|
||||
|
||||
order_expression:
|
||||
expression [ASC | DESC]
|
||||
|
||||
limit_clause:
|
||||
LIMIT {[offset,] row_count |row_count OFFSET offset}
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 参数解释
|
||||
|
||||
|
||||
|
||||
| 参数 | 描述 |
|
||||
|--------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| ALL \| DISTINCT \| UNIQUE \| SQL_CALC_FOUND_ROWS | 在数据库表中,可能会包含重复值。 * 指定"DISTINCT",则在查询结果中相同的行只显示一行; * 指定"ALL",则列出所有的行; * 指定"SQL_CALC_FOUND_ROWS",则不输出数据,只返回数据行数; * 不指定时,默认为"ALL"。 |
|
||||
| select_expr | 列出要查询的表达式或列名,用","隔开。也可以用"\*"表示所有列。 |
|
||||
| AS othername | 为输出字段重新命名。 |
|
||||
| FROM table_references | 指名了从哪个表或哪些表中读取数据(支持多表查询)。 |
|
||||
| WHERE where_conditions | 可选项,WHERE 字句用来设置一个筛选条件,查询结果中仅包含满足条件的数据。where_conditions 为表达式。 |
|
||||
| GROUP BY group_by_list | 用于进行分类汇总。 |
|
||||
| HAVING search_confitions | HAVING 字句与 WHERE 字句类似,但是 HAVING 字句可以使用累计函数(如 SUM,AVG 等)。 |
|
||||
| ORDER BY order_list order_list : colname \[ASC \| DESC\] \[,colname \[ASC \| DESC\]...\] | 用来按升序(ASC)或者降序(DESC)显示查询结果。不指定 ASC 或者 DESC 时,默认为 ASC。 |
|
||||
| \[LIMIT {\[offset,\] row_count \|row_count OFFSET offset}\] | 强制 SELECT 语句返回指定的记录数。 LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。 * 如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。 * 如果只给定一个参数,它表示返回记录行的最大数目,偏移量为0。 |
|
||||
| FOR UPDATE | 对查询结果所有行上排他锁,以阻止其他事务的并发修改,或阻止在某些事务隔离级别时的并发读取。 |
|
||||
| PARTITION(partition_list) | 指定查询表的分区信息。例如:partition(p0,p1...) |
|
||||
|
||||
|
||||
|
||||
### 示例
|
||||
|
||||
以如下表 a 为例。
|
||||
|
||||

|
||||
|
||||
* 从表 a 中读取 name 数据。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT name FROM a;
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
* 在查询结果中对 name 进行去重处理。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT DISTINCT name FROM a;
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
* 从表 a 中查询 id,name,num,然后把 num 列除以2输出,输出的列名为 avg。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT id, name, num/2 AS avg FROM a;
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
* 从表 a 中根据筛选条件" name = 'a' " ,输出对应的 id 、name 和 num 。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT id, name, num FROM a WHERE name = 'a';
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
* 从表 a 中查询 id,name,按照 name 分组对 num 求和,并输出。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT id, name, SUM(num) FROM a GROUP BY name;
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
* 从表 a 中查询 id,name,按照 name 分组对 num 求和,查询 num 总和小于160的行,并输出。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT id, name, SUM(num) as sum FROM a GROUP BY name HAVING SUM(num) < 160;
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
* 从表 a 中查询 id,name,num,根据 num 按升序(ASC)输出查询结果。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT * FROM a ORDER BY num ASC;
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
* 从表 a 中查询 id,name,num,根据 num 按降序(DESC)输出查询结果。
|
||||
|
||||
```javascript
|
||||
SELECT * FROM a ORDER BY num DESC;
|
||||
```
|
||||
|
||||

|
||||
|
||||
* 从表 a 中查询 id,name,num,使用 LIMIT强制从第2行开始,返回表 a 的两行结果。
|
||||
|
||||
```javascript
|
||||
SELECT * FROM a LIMIT 1,2;
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
集合类 SELECT
|
||||
-------------------
|
||||
|
||||
### 描述
|
||||
|
||||
该语句用于对多个 SELECT 查询的结果进行 UNION,MINUS,INTERSECT。
|
||||
|
||||
### 格式
|
||||
|
||||
```javascript
|
||||
select_clause_set:
|
||||
simple_select [ UNION | UNION ALL | EXCEPT | INTERSECT] select_clause_set_left
|
||||
[ORDER BY sort_list_columns] [limit_clause]
|
||||
select_clause_set_right:
|
||||
simple_select |
|
||||
select_caluse_set
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 参数解释
|
||||
|
||||
|
||||
|
||||
| 参数 | 描述 |
|
||||
|-----------|--------------------------|
|
||||
| UNION ALL | 合并两个查询的结果 |
|
||||
| UNION | 合并两个查询的结果,并去重 |
|
||||
| EXCEPT | 从左查询结果集中去重出现在右查询中的结果,并去重 |
|
||||
| INTERSECT | 保留左查询结果集中出现在右查询中的结果,并去重 |
|
||||
|
||||
|
||||
|
||||
### 示例
|
||||
|
||||
以如下两表的数据为例:
|
||||
|
||||
```javascript
|
||||
create table t1 (c1 int, c2 int);
|
||||
create table t2 (c1 int, c2 int);
|
||||
insert into t1 values (1, -1), (2, -2);
|
||||
insert into t2 values (1, 1), (2, -2), (3, 3);
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 计算 T1, T2 的所有的记录
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT C1, C2 FROM T1 UNION ALL SELECT C1, C2 FROM T2;
|
||||
+------+------+
|
||||
| C1 | C2 |
|
||||
+------+------+
|
||||
| 1 | -1 |
|
||||
| 2 | -2 |
|
||||
| 1 | 1 |
|
||||
| 2 | -2 |
|
||||
| 3 | 3 |
|
||||
+------+------+
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 计算 T1, T2 的去重后的所有记录
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT C1, C2 FROM T1 UNION SELECT C1, C2 FROM T2;
|
||||
+------+------+
|
||||
| C1 | C2 |
|
||||
+------+------+
|
||||
| 1 | -1 |
|
||||
| 2 | -2 |
|
||||
| 1 | 1 |
|
||||
| 3 | 3 |
|
||||
+------+------+
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 计算 T1 和 T2 的交集
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT C1, C2 FROM T1 INTERSECT SELECT C1, C2 FROM T2;
|
||||
+------+------+
|
||||
| C1 | C2 |
|
||||
+------+------+
|
||||
| 2 | -2 |
|
||||
+------+------+
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 计算 T1 和 T2 的差集
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT C1, C2 FROM T1 EXCEPT SELECT C1, C2 FROM T2;
|
||||
+------+------+
|
||||
| C1 | C2 |
|
||||
+------+------+
|
||||
| 1 | -1 |
|
||||
+------+------+
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 取 T1 和 T2 并集中 C2 排序最大的前两行
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT C1, C2 FROM T1 UNION SELECT C1, C2 FROM T2 ORDER BY C2 DESC LIMIT 2;
|
||||
+------+------+
|
||||
| C1 | C2 |
|
||||
+------+------+
|
||||
| 3 | 3 |
|
||||
| 1 | 1 |
|
||||
+------+------+
|
||||
```
|
||||
|
||||
|
||||
|
||||
63
docs/docs-cn/10.sql-reference/5.sql-statement/55.SESSION.md
Normal file
63
docs/docs-cn/10.sql-reference/5.sql-statement/55.SESSION.md
Normal file
@ -0,0 +1,63 @@
|
||||
SESSION
|
||||
============================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来强制结束 session。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
session_stmt:
|
||||
KILL [CONNECTION] session_id;
|
||||
|
||||
session_id:
|
||||
INT_VALUE
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|------------|-----------------|
|
||||
| session_id | 要结束 session 的编号 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 强制结束编号为 3221502221和 3221750376 的 session。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>show processlist;
|
||||
+------------+-------+---------------------+------+---------+------+--------+----------------------------------+
|
||||
| Id | User | Host | db | Command | Time | State | Info |
|
||||
+------------+-------+---------------------+------+---------+------+--------+----------------------------------+
|
||||
| 3221502221 | admin | 100.xx.xx.xx:44775 | test | Sleep | 10 | SLEEP | NULL |
|
||||
| 3221502083 | admin | 100.xx.xx.xx:44720 | test | Query | 0 | ACTIVE | show processlist |
|
||||
| 3221502317 | NULL | 100.xx.xx.xx:41414 | test | Query | 0 | ACTIVE | REMOTE/DISTRIBUTE PLAN EXECUTING |
|
||||
| 3221750377 | NULL | 100.xx.xx.xx:41414 | test | Query | 0 | ACTIVE | REMOTE/DISTRIBUTE PLAN EXECUTING |
|
||||
| 3221750376 | admin | 100.xx.xx.xx:43783 | test | Sleep | 4 | SLEEP | NULL |
|
||||
+------------+-------+---------------------+------+---------+------+--------+----------------------------------+
|
||||
5 rows in set (0.04 sec)
|
||||
|
||||
OceanBase(admin@test)>kill 3221502221;
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
|
||||
OceanBase(admin@test)>kill connection 3221750376;
|
||||
Query OK, 0 rows affected (0.05 sec)
|
||||
```
|
||||
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
SET PASSWORD
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该用于修改 OceanBase 当前登录用户或其他用户的密码。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
SET PASSWORD [FOR user] = password_option;
|
||||
|
||||
password_option: {
|
||||
PASSWORD('authstring')
|
||||
|'hashstring'
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|----------|----------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| FOR user | 如果没有 For user 子句,表示修改当前用户的密码。任何成功登录的用户都可以修改当前用户的密码。 如果有 For user 子句,表示修改指定用户的密码。必须拥有全局(MySQL库)的 CREATE USER 权限,才可以修改指定用户的密码。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
执行以下命令将 sqluser01 用户的密码修改为 abc123。
|
||||
|
||||
```javascript
|
||||
oceanBase(admin@TEST)>set password for sqluser01 = password('abc123');
|
||||
Query OK, 0 rows affected (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
SHOW GRANTS
|
||||
================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于系统管理员查看 User 的操作权限。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
SHOW GRANTS [FOR username];
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|--------------|----------------------------------------------------------------------------------------------------|
|
||||
| FOR username | 如果不指定用户名,则缺省显示当前用户的权限。当前用户可以查看自己的权限。 如果需要查看其他指定用户的权限,必须拥有对 mysql.user 的 SELECT 权限。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
查看看用户 obsqluser01 的权限。
|
||||
|
||||
```javascript
|
||||
oceanBase(admin@TEST)>show grants for obsqluser01;
|
||||
+-------------------------------------+
|
||||
| Grants for obsqluser01@% |
|
||||
+-------------------------------------+
|
||||
| GRANT USAGE ON *.* TO 'obsqluser01' |
|
||||
+-------------------------------------+
|
||||
1 row in set (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
SHOW RECYCLEBIN
|
||||
====================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于查看回收站中的内容。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
SHOW RECYCLEBIN;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
无。
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 查看回收站中的内容。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> create table t1(c1 int);
|
||||
Query OK, 0 rows affected (0.24 sec)
|
||||
|
||||
OceanBase(admin@test)> drop table t1;
|
||||
Query OK, 0 rows affected (0.07 sec)
|
||||
|
||||
OceanBase(admin@test)> show recyclebin;
|
||||
+-------------------------------------------+---------------+-------+----------------------------+
|
||||
| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
|
||||
+-------------------------------------------+---------------+-------+----------------------------+
|
||||
| __recycle_$_1_1099511628776_1099511677777 | t1 | TABLE | 2017-10-20 17:27:40.881506 |
|
||||
+-------------------------------------------+---------------+-------+----------------------------+
|
||||
1 row in set (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
106
docs/docs-cn/10.sql-reference/5.sql-statement/59.TRANSACTION.md
Normal file
106
docs/docs-cn/10.sql-reference/5.sql-statement/59.TRANSACTION.md
Normal file
@ -0,0 +1,106 @@
|
||||
TRANSACTION
|
||||
================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于开启事务。
|
||||
|
||||
数据库事务(Database Transaction)是指作为单个逻辑工作单元执行的一系列操作。事务处理可以用来维护数据库的完整性,保证成批的SQL操作全部执行或全部不执行。
|
||||
|
||||
显示事务是用户自定义或用户指定的事务。通过 BEGIN TRANSACTION,或 BEGIN 和 BEGIN WORK(被作为START TRANSACTION的别名受到支持)语句显示开始,以 COMMIT 或 ROLLBACK 语句显示结束。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
transaction_stmt:
|
||||
START TRANSACTION [READ ONLY | READ WRITE];
|
||||
| BEGIN [WORK];
|
||||
| COMMIT [WORK];
|
||||
| ROLLBACK [WORK];
|
||||
| SET TRANSACTION {READ ONLY | READ WRITE};
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| START TRANSACTION \[READ ONLY \| READ WRITE\] | 开启事务语句。一旦开启事务,则随后的 SQL 数据操作语句(即INSERT、UPDATE、DELETE等)直到显式提交时才会生效。 READ ONLY 子句表示事务是只读方式开启,事务内不允许执行修改操作。 READ WRITE 子句表示事务是读写方式开启,默认就是此种模式。 |
|
||||
| BEGIN | BEGIN 和 BEGIN WORK 被作为 START TRANSACTION 的别名受到支持 |
|
||||
| COMMIT | 提交当前事务。 |
|
||||
| ROLLBACK | 回滚当前事务。 |
|
||||
| SET TRANSACTION {READ ONLY \| READ WRITE} | 将当前事务设置成 READ ONLY 或者 READ WRITE 模式。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
假设现有表 a 如下所示。
|
||||
|
||||
|
||||
| id | name | num | sell_date |
|
||||
|----|------|-----|---------------------|
|
||||
| 1 | a | 100 | 2013-06-21 10:06:43 |
|
||||
| 2 | b | 200 | 2013-06-21 13:07:21 |
|
||||
| 3 | a | 50 | 2013-06-21 13:08:15 |
|
||||
|
||||
|
||||
|
||||
1. 依次执行以下命令开始执行事务,将 id 为 3 的的 name 改为 c,并插入一行当前卖出 a 的记录。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> START TRANSACTION;
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
|
||||
OceanBase(admin@test)> UPDATE a SET name = 'c' WHERE id = 3;
|
||||
Query OK, 1 rows affected (0.00 sec)
|
||||
|
||||
OceanBase(admin@test)> INSERT INTO a VALUES (4, 'a', 30, '2013-06-21 16:09:13');
|
||||
Query OK, 1 rows affected (0.00 sec)
|
||||
|
||||
OceanBase(admin@test)> COMMIT;
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
2. 事务提交后,执行命令查看表 a 信息。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
SELECT * FROM a;
|
||||
```
|
||||
|
||||
|
||||
|
||||
结果如下:
|
||||
|
||||
|
||||
| id | name | num | sell_date |
|
||||
|----|------|-----|---------------------|
|
||||
| 1 | a | 100 | 2013-06-21 10:06:43 |
|
||||
| 2 | b | 200 | 2013-06-21 13:07:21 |
|
||||
| 3 | c | 50 | 2013-06-21 13:08:15 |
|
||||
| 4 | a | 30 | 2013-06-21 16:09:13 |
|
||||
|
||||
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
在事务还没有 COMMIT 之前,您可以查看下本事务中的操作是否已经生效,比如可以在 COMMIT 前,加一句" **SELECT \* FROM a;** "。本事务 session 的访问能读到最新的结果,本事务 session 之外的访问结果肯定是没有生效,在事务还没有 COMMIT 前,你之前做的操作除当前事务连接之外都是不可见的。如果您想回滚该事务,直接用"ROOLBACK"代替"COMMIT"。
|
||||
|
||||
1356
docs/docs-cn/10.sql-reference/5.sql-statement/6.alter-system.md
Normal file
1356
docs/docs-cn/10.sql-reference/5.sql-statement/6.alter-system.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,55 @@
|
||||
TRUNCATE TABLE
|
||||
===================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于完全清空指定表,但是保留表结构,包括表中定义的 Partition 信息。从逻辑上说,该语句与用于删除所有行的DELETE FROM语句相同。执行TRUNCATE语句,必须具有表的删除和创建权限。它属于DDL语句。
|
||||
|
||||
TRUNCATE TABLE 语句与 DELETE FROM 语句有以下不同:
|
||||
|
||||
* 删减操作会取消并重新创建表,这比一行一行的删除行要快很多。
|
||||
|
||||
* TRUNCATE TABLE 语句执行结果显示影响行数始终显示为 0 行。
|
||||
|
||||
* 使用 TRUNCATE TABLE 语句,表管理程序不记得最后被使用的 AUTO_INCREMENT 值,但是会从头开始计数。
|
||||
|
||||
* TRUNCATE 语句不能在进行事务处理和表锁定的过程中进行,如果使用,将会报错。
|
||||
|
||||
* 只要表定义文件是合法的,则可以使用 TRUNCATE TABLE 把表重新创建为一个空表,即使数据或索引文件已经被破坏。
|
||||
|
||||
|
||||
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
TRUNCATE [TABLE] table_name;
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|------------|--------|
|
||||
| table_name | 指定表名。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
完全清空表 tb1。
|
||||
|
||||
```javascript
|
||||
TRUNCATE [TABLE] tb1;
|
||||
```
|
||||
|
||||
|
||||
263
docs/docs-cn/10.sql-reference/5.sql-statement/61.UPDATE.md
Normal file
263
docs/docs-cn/10.sql-reference/5.sql-statement/61.UPDATE.md
Normal file
@ -0,0 +1,263 @@
|
||||
UPDATE
|
||||
===========================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用于修改表中的字段值。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
UPDATE [IGNORE] table_references
|
||||
SET update_asgn_list
|
||||
[WHERE where_condition]
|
||||
[ORDER BY order_list]
|
||||
[LIMIT row_count];
|
||||
|
||||
table_references:
|
||||
tbl_name [PARTITION (partition_name,...)] [, ...]
|
||||
|
||||
update_asgn_list:
|
||||
column_name = expr [, ...]
|
||||
|
||||
order_list:
|
||||
column_name [ASC|DESC] [, column_name [ASC|DESC]...]
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|------------------|-----------------------------|
|
||||
| IGNORE | 在 INSERT 语句执行过程中发生的错误将会被忽略。 |
|
||||
| table_references | 指定修改表名,多表修改时,表名直接','作为间隔。 |
|
||||
| where_condition | 指定过滤条件。 |
|
||||
| row_count | 限制的行数。 |
|
||||
| tbl_name | 插入表名。 |
|
||||
| partition_name | 插入表指定的分区名。 |
|
||||
| column_name | 列名。 |
|
||||
| column_name ASC | 按列名升序修改。 |
|
||||
| column_name DESC | 按列名降序修改。 |
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
不管是多表还是单表更新都不支持直接对子查询进行更新值操作,例如:`update (select * from t1) set c1 = 100;`
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
1. 创建示例表 t1 和 t2。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>create table t1(c1 int primary key, c2 int);
|
||||
Query OK, 0 rows affected (0.16 sec)
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 1 |
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
4 rows in set (0.06 sec)
|
||||
|
||||
OceanBase(admin@test)>create table t2(c1 int primary key, c2 int) partition by key(c1) partitions 4;
|
||||
Query OK, 0 rows affected (0.19 sec)
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 5 | 5 |
|
||||
| 1 | 1 |
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
+----+------+
|
||||
4 rows in set (0.02 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
2. 将表 t1 中 "t1.c1=1" 对应的那一行数据的 c2 列值修改为 100。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>update t1 set t1.c2 = 100 where t1.c1 = 1;
|
||||
Query OK, 1 row affected (0.02 sec)
|
||||
Rows matched: 1 Changed: 1 Warnings: 0
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 100 |
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
4 rows in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
3. 将表 t1 中按照 c2 列排序的前两行数据的 c2 列值修改为 100。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>update t1 set t1.c2 = 100 order by c2 limit 2;
|
||||
Query OK, 2 rows affected (0.02 sec)
|
||||
Rows matched: 2 Changed: 2 Warnings: 0
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 100 |
|
||||
| 2 | 100 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
4 rows in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
4. 将表 t2 中 p2 分区的数据中 "t2.c1 \> 2" 的对应行数据的 c2 列值修改为 100。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>update t2 partition(p2) set t2.c2 = 100 where t2.c1 > 2;
|
||||
Query OK, 1 row affected (0.02 sec)
|
||||
Rows matched: 1 Changed: 1 Warnings: 0
|
||||
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 5 | 5 |
|
||||
| 1 | 1 |
|
||||
| 2 | 2 |
|
||||
| 3 | 100 |
|
||||
+----+------+
|
||||
4 rows in set (0.06 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
5. 修改多个表。将 t1 表和 t2 表中满足 "t1.c1 = t2.c1" 对应行的数据 t1 表中的 c2 列值修改为 100,t2 表中的 c2 列值修改为 200。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>update t1,t2 set t1.c2 = 100, t2.c2 = 200 where t1.c2 = t2.c2;
|
||||
Query OK, 6 rows affected (0.03 sec)
|
||||
Rows matched: 6 Changed: 6 Warnings: 0
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 100 |
|
||||
| 2 | 100 |
|
||||
| 3 | 100 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
4 rows in set (0.00 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 5 | 5 |
|
||||
| 1 | 200 |
|
||||
| 2 | 200 |
|
||||
| 3 | 200 |
|
||||
+----+------+
|
||||
4 rows in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
6. 修改多个表。修改 t1 表和 t2 表的p2分区中满足 "t1.c1 = t2.c1" 对应行的数据 t1 表中的 c2 列值修改为 100,t2 表中的 c2 列值修改为 200。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>update t1,t2 partition(p2) set t1.c2 = 100, t2.c2 = 200 where t1.c2 = t2.c2;
|
||||
Query OK, 6 rows affected (0.02 sec)
|
||||
Rows matched: 6 Changed: 6 Warnings: 0
|
||||
|
||||
OceanBase(admin@test)>select * from t1;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 100 |
|
||||
| 2 | 100 |
|
||||
| 3 | 100 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
4 rows in set (0.01 sec)
|
||||
|
||||
OceanBase(admin@test)>select * from t2;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 5 | 5 |
|
||||
| 1 | 200 |
|
||||
| 2 | 200 |
|
||||
| 3 | 200 |
|
||||
+----+------+
|
||||
4 rows in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
7. 对可更新视图 v 进行更新值。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)>create view v as select * from t1;
|
||||
Query OK, 0 rows affected (0.07 sec)
|
||||
|
||||
OceanBase(admin@test)>update v set v.c2 = 100 where v.c1 = 1;
|
||||
Query OK, 1 row affected (0.02 sec)
|
||||
Rows matched: 1 Changed: 1 Warnings: 0
|
||||
|
||||
OceanBase(admin@test)>select * from v;
|
||||
+----+------+
|
||||
| c1 | c2 |
|
||||
+----+------+
|
||||
| 1 | 100 |
|
||||
| 2 | 2 |
|
||||
| 3 | 3 |
|
||||
| 4 | 4 |
|
||||
+----+------+
|
||||
4 rows in set (0.01 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
253
docs/docs-cn/10.sql-reference/5.sql-statement/7.alter-table.md
Normal file
253
docs/docs-cn/10.sql-reference/5.sql-statement/7.alter-table.md
Normal file
@ -0,0 +1,253 @@
|
||||
ALTER TABLE
|
||||
================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来修改已存在的表的结构,比如:修改表及表属性、新增列、修改列及属性、删除列等。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
alter_table_stmt:
|
||||
ALTER TABLE table_name
|
||||
alter_table_action_list;
|
||||
| RENAME TABLE rename_table_action_list;
|
||||
|
||||
alter_table_action_list:
|
||||
alter_table_action [, alter_table_action ...]
|
||||
|
||||
alter_table_action:
|
||||
ADD [COLUMN] {column_definition | (column_definition_list)}
|
||||
| CHANGE [COLUMN] column_name column_definition
|
||||
| MODIFY [COLUMN] column_definition
|
||||
| ALTER [COLUMN] column_name {SET DEFAULT const_value | DROP DEFAULT}
|
||||
| DROP [COLUMN] column_name
|
||||
| ADD [CONSTRAINT [constraint_name]] UNIQUE {INDEX | KEY} [index_name] index_desc
|
||||
| ADD {INDEX | KEY} [index_name] index_desc
|
||||
| ADD FULLTEXT [INDEX | KEY] [index_name] fulltext_index_desc
|
||||
| ALTER INDEX index_name [VISIBLE | INVISIBLE | parallel_clause]
|
||||
| DROP {INDEX | KEY} index_name
|
||||
| ADD PARTITION (range_partition_list)
|
||||
| DROP PARTITION (partition_name_list)
|
||||
| REORGANIZE PARTITION name_list INTO partition_range_or_list
|
||||
| TRUNCATE PARTITION name_list
|
||||
| [SET] table_option_list
|
||||
| RENAME [TO] table_name
|
||||
| DROP TABLEGROUP
|
||||
| DROP FOREIGN KEY fk_name
|
||||
|
||||
rename_table_action_list:
|
||||
rename_table_action [, rename_table_action ...]
|
||||
|
||||
rename_table_action:
|
||||
table_name TO table_name
|
||||
|
||||
column_definition_list:
|
||||
column_definition [, column_definition ...]
|
||||
|
||||
column_definition:
|
||||
column_name data_type
|
||||
[DEFAULT const_value] [AUTO_INCREMENT]
|
||||
[NULL | NOT NULL] [[PRIMARY] KEY] [UNIQUE [KEY]] comment
|
||||
|
||||
index_desc:
|
||||
(column_desc_list) [index_type] [index_option_list]
|
||||
|
||||
fulltext_index_desc:
|
||||
(column_desc_list) CTXCAT(column_desc_list) [index_option_list]
|
||||
|
||||
column_desc_list:
|
||||
column_desc [, column_desc ...]
|
||||
|
||||
column_desc:
|
||||
column_name [(length)] [ASC | DESC]
|
||||
|
||||
index_type:
|
||||
USING BTREE
|
||||
|
||||
index_option_list:
|
||||
index_option [ index_option ...]
|
||||
|
||||
index_option:
|
||||
[GLOBAL | LOCAL]
|
||||
| block_size
|
||||
| compression
|
||||
| STORING(column_name_list)
|
||||
| comment
|
||||
|
||||
table_option_list:
|
||||
table_option [ table_option ...]
|
||||
|
||||
table_option:
|
||||
| primary_zone
|
||||
| replica_num
|
||||
| table_tablegroup
|
||||
| block_size
|
||||
| compression
|
||||
| AUTO_INCREMENT [=] INT_VALUE
|
||||
| comment
|
||||
| DUPLICATE_SCOPE [=] "none|zone|region|cluster"
|
||||
| parallel_clause
|
||||
|
||||
parallel_clause:
|
||||
{NOPARALLEL | PARALLEL integer}
|
||||
|
||||
partition_option:
|
||||
PARTITION BY HASH(expression)
|
||||
[subpartition_option] PARTITIONS partition_count
|
||||
| PARTITION BY KEY([column_name_list])
|
||||
[subpartition_option] PARTITIONS partition_count
|
||||
| PARTITION BY RANGE {(expression) | COLUMNS (column_name_list)}
|
||||
[subpartition_option] (range_partition_list)
|
||||
|
||||
subpartition_option:
|
||||
SUBPARTITION BY HASH(expression)
|
||||
SUBPARTITIONS subpartition_count
|
||||
| SUBPARTITION BY KEY(column_name_list)
|
||||
SUBPARTITIONS subpartition_count
|
||||
| SUBPARTITION BY RANGE {(expression) | COLUMNS (column_name_list)}
|
||||
(range_subpartition_list)
|
||||
|
||||
range_partition_list:
|
||||
range_partition [, range_partition ...]
|
||||
|
||||
range_partition:
|
||||
PARTITION partition_name
|
||||
VALUES LESS THAN {(expression_list) | MAXVALUE}
|
||||
|
||||
range_subpartition_list:
|
||||
range_subpartition [, range_subpartition ...]
|
||||
|
||||
range_subpartition:
|
||||
SUBPARTITION subpartition_name
|
||||
VALUES LESS THAN {(expression_list) | MAXVALUE}
|
||||
|
||||
expression_list:
|
||||
expression [, expression ...]
|
||||
|
||||
column_name_list:
|
||||
column_name [, column_name ...]
|
||||
|
||||
partition_name_list:
|
||||
partition_name [, partition_name ...]
|
||||
|
||||
partition_count | subpartition_count:
|
||||
INT_VALUE
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|---------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| ADD \[COLUMN\] | 增加列,目前不支持增加主键列。 |
|
||||
| CHANGE \[COLUMN\] | 修改列名和列属性。 |
|
||||
| MODIFY \[COLUMN\] | 修改列属性。 |
|
||||
| ALTER \[COLUMN\] | 修改列的默认值。 |
|
||||
| DROP \[COLUMN\] | 删除列,不允许删除主键列或者包含索引的列。 |
|
||||
| ADD \[UNIQUE INDEX\] | 增加唯一索引。 |
|
||||
| ADD \[INDEX\] | 增加普通索引 |
|
||||
| ALTER \[INDEX\] | 修改索引属性。 |
|
||||
| ADD \[PARTITION\] | 增加分区。 |
|
||||
| DROP \[PARTITION\] | 删除分区。 |
|
||||
| REORGANIZE \[PARTITION\] | 分区重组。 |
|
||||
| TRUNCATE \[PARTITION\] | 删除分区数据。 |
|
||||
| RENAME \[TO\] table_name | 表重命名。 |
|
||||
| DROP \[TABLEGROUP\] | 删除表组。 |
|
||||
| DROP \[FOREIGN KEY\] | 删除外键。 |
|
||||
| SET BLOCK_SIZE | 设置Partition表BLOCK大小。 |
|
||||
| SET REPLICA_NUM | 设置表的副本数(指表的副本总数)。 |
|
||||
| SET COMPRESSION | 设置表的压缩方式。 |
|
||||
| SET USE_BLOOM_FILTER | 设置是否使用BloomFilter。 |
|
||||
| SET COMMENT | 设置注释信息。 |
|
||||
| SET PROGRESSIVE_MERGE_NUM | 设置渐进合并步数,取值范围是1\~64。 |
|
||||
| parallel_clause | 指定表级别的并行度: * NOPARALLEL:并行度为1,默认配置 * PARALLEL integer:指定并行度,integer 取值大于等于 1。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 把表 t2 的字段 d 改名为 c,并同时修改字段类型
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER TABLE t2 CHANGE COLUMN d c CHAR(10);
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 增加、删除列
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER TABLE test ADD c3 int;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER TABLE test DROP c3;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
* 设置表格 test 的副本数,并且增加列 c5
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER TABLE test SET REPLICA_NUM=2, ADD COLUMN c5 INT;
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 修改表 t1 的并行度为 2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```unknow
|
||||
ALTER TABLE t1 PARALLEL 2;
|
||||
```
|
||||
|
||||
|
||||
@ -0,0 +1,118 @@
|
||||
ALTER TABLEGROUP
|
||||
=====================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来执行以下操作:
|
||||
|
||||
* 对一个表组增加多张表。
|
||||
|
||||
* 修改表组的分区规则。
|
||||
|
||||
* 修改表组的 locality 和 primary zone。
|
||||
|
||||
|
||||
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
* 对一个表组增加多张表。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER TABLEGROUP tablegroupname ADD [TABLE] tblname [, tblname...]
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 修改表组的分区规则。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER TABLEGROUP tablegroupname alter_tg_partition_option
|
||||
alter_tg_partition_option:
|
||||
DROP PARTITION '(' name_list ')'
|
||||
| ADD PARTITION opt_range_partition_list
|
||||
| modify_tg_partition_info
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 修改表组的 locality 和 primary zone。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER TABLEGROUP tablegroupname alter_tablegroup_actions
|
||||
alter_tablegroup_actions:
|
||||
alter_tablegroup_action
|
||||
| alter_tablegroup_action, alter_tablegroup_action
|
||||
alter_tablegroup_action:
|
||||
SET LOCALITY [=] locality_name
|
||||
|SET PRIMARY_ZONE [=] primary_zone_name
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|--------------------------------|--------------------------------------------------------------------------------------------------------------------------|
|
||||
| tablegroupname | 指定表组。 |
|
||||
| tblname | 表名。对一个表组增加多张表时,表与表之间以逗号(',')分隔。 当添加多个表时,允许表名重复。如果待添加的表已经属于 *tablegroupname* 的表格组,系统不报错。 |
|
||||
| modify_tg_partition_info | 修改表组的分区规则。 |
|
||||
| LOCALITY locality_name | 指定表组的 locality。 |
|
||||
| PRIMARY_ZONE primary_zone_name | 指定表组的主Zone。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
创建表组 tgh 和两张关系表 ttgh 和 ttgh2 ,并将表组的 locality 修改为 F@z1。
|
||||
|
||||
```javascript
|
||||
OceanBase(admin@test)> create tablegroup tgh locality='F,R{ALL_SERVER}@z1' partition by hash partitions 10;
|
||||
Query OK, 0 rows affected (0.09 sec)
|
||||
|
||||
OceanBase(admin@test)> create table ttgh(c1 int, c2 int) tablegroup = tgh locality='F,R{ALL_SERVER}@z1';
|
||||
Query OK, 0 rows affected (0.55 sec)
|
||||
|
||||
OceanBase(admin@test)> create table ttgh2(c1 int, c2 int) tablegroup = tgh locality='F,R{ALL_SERVER}@z1';
|
||||
Query OK, 0 rows affected (0.39 sec)
|
||||
|
||||
OceanBase(admin@test)> alter tablegroup tgh set locality ='F@z1';
|
||||
Query OK, 0 rows affected (0.09 sec)
|
||||
|
||||
OceanBase(admin@test)> select locality from oceanbase.__all_tablegroup where tablegroup_name ='tgh';
|
||||
+------------+
|
||||
| locality |
|
||||
+------------+
|
||||
| FULL{1}@z1 |
|
||||
+------------+
|
||||
1 row in set (0.05 sec)
|
||||
|
||||
OceanBase(admin@test)> select locality from oceanbase.__all_table where tablegroup_id=(select tablegroup_id from oceanbase.__all_tablegroup where tablegroup_name ='tgh');
|
||||
+------------+
|
||||
| locality |
|
||||
+------------+
|
||||
| FULL{1}@z1 |
|
||||
| FULL{1}@z1 |
|
||||
+------------+
|
||||
2 rows in set (0.04 sec)
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,83 @@
|
||||
ALTER TENANT
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
描述
|
||||
-----------
|
||||
|
||||
该语句用来修改租户信息。
|
||||
|
||||
格式
|
||||
-----------
|
||||
|
||||
```javascript
|
||||
ALTER TENANT {tenant_name | ALL}
|
||||
[SET] [tenant_option_list] [opt_global_sys_vars_set]
|
||||
|
||||
tenant_option_list:
|
||||
tenant_option [, tenant_option ...]
|
||||
|
||||
tenant_option:
|
||||
COMMENT [=]'string'
|
||||
|{CHARACTER SET | CHARSET} [=] charsetname
|
||||
|COLLATE [=] collationname
|
||||
|REPLICA_NUM [=] num
|
||||
|ZONE_LIST [=] (zone [, zone...])
|
||||
|PRIMARY_ZONE [=] zone
|
||||
|RESOURCE_POOL_LIST [=](poolname [, poolname...])
|
||||
|DEFAULT TABLEGROUP [=] {NULL | tablegroupname}
|
||||
|{READ ONLY | READ WRITE}
|
||||
|LOGONLY_REPLICA_NUM [=] num
|
||||
|LOCALITY [=] 'locality description'
|
||||
|LOCK|UNLOCK;
|
||||
|
||||
opt_global_sys_vars_set:
|
||||
VARIABLES system_var_name = expr [,system_var_name = expr] ...
|
||||
```
|
||||
|
||||
|
||||
|
||||
参数解释
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
| **参数** | **描述** |
|
||||
|--------------------------|---------------------------------------------------------------------------------------|
|
||||
| tenant_name | 指定要修改的租户名。 |
|
||||
| ALTER TENANT ALL | 同时修改所有租户。 |
|
||||
| RESOURCE_POOL_LIST | 资源池列表,为创建租户时的必填项,暂时只支持一个 RESOURCE POOL。 |
|
||||
| DEFAULT TABLEGROUP | 设置租户默认表组信息,NULL 表示取消ovtn库默认表组。 |
|
||||
| LOCK\|UNLOCK | 租户锁定和解锁。对租户进行锁定后,不能在该租户上创建新的连接,已有连接保持不变。通常在客户费用到期未续费的场景下使用,客户费用到期后对租户进行锁定,客户续费后再进行解锁。 |
|
||||
| COMMENT | 修改注释。 |
|
||||
| CHARACTER SET \| CHARSET | 修改租户的字符集。 |
|
||||
| COLLATE | 指定校对规则。 |
|
||||
| REPLICA_NUM | 指定副本数。 |
|
||||
| ZONE_LIST | 指定要修改的Zone列表。 |
|
||||
| PRIMARY_ZONE | 指定主Zone。 |
|
||||
| READ ONLY \| READ WRITE | 指定租户的只读或读写属性。 |
|
||||
| LOGONLY_REPLICA_NUM | 指定日志副本数。 |
|
||||
| LOCALITY | 描述副本在Zone间的分布情况,如:F@z1,F@z2,F@z3,R@z4 表示z1, z2, z3为全功能副本,z4为只读副本。 |
|
||||
| system_var_name | 修改租户的系统变量值。 |
|
||||
|
||||
|
||||
|
||||
示例
|
||||
-----------
|
||||
|
||||
* 锁定租户TENANT1。
|
||||
|
||||
|
||||
|
||||
|
||||
```javascript
|
||||
ALTER TENANT TENANT1 LOCK;
|
||||
```
|
||||
|
||||
|
||||
|
||||
注意事项
|
||||
-------------
|
||||
|
||||
ALTER TENANT语句系统租户有权限执行,同时本租户的管理员能执行。
|
||||
Reference in New Issue
Block a user