Skip to content

Commit

Permalink
cherry pick #5376 to release-4.0 (#5409)
Browse files Browse the repository at this point in the history
Signed-off-by: ti-srebot <ti-srebot@pingcap.com>

Co-authored-by: Charlotte Liu <37295236+CharLotteiu@users.noreply.github.com>
  • Loading branch information
ti-srebot and CharLotteiu authored Jan 27, 2021
1 parent a135556 commit bc1899a
Show file tree
Hide file tree
Showing 26 changed files with 376 additions and 349 deletions.
2 changes: 1 addition & 1 deletion sql-statements/sql-statement-alter-table.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ AlterTableSpec ::=
| ( 'DISABLE' | 'ENABLE' ) 'KEYS'
| ( 'MODIFY' ColumnKeywordOpt IfExists | 'CHANGE' ColumnKeywordOpt IfExists ColumnName ) ColumnDef ColumnPosition
| 'ALTER' ( ColumnKeywordOpt ColumnName ( 'SET' 'DEFAULT' ( SignedLiteral | '(' Expression ')' ) | 'DROP' 'DEFAULT' ) | 'CHECK' Identifier EnforcedOrNot | 'INDEX' Identifier IndexInvisible )
| 'RENAME' ( ( 'COLUMN' | KeyOrIndex ) Identifier 'TO' Identifier | ( 'TO' | | 'AS' ) TableName )
| 'RENAME' ( ( 'COLUMN' | KeyOrIndex ) Identifier 'TO' Identifier | ( 'TO' | '='? | 'AS' ) TableName )
| LockClause
| AlgorithmClause
| 'FORCE'
Expand Down
8 changes: 5 additions & 3 deletions sql-statements/sql-statement-begin.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ aliases: ['/docs-cn/stable/sql-statements/sql-statement-begin/','/docs-cn/v4.0/s

## 语法图

**BeginTransactionStmt:**

![BeginTransactionStmt](/media/sqlgram/BeginTransactionStmt.png)
```ebnf+diagram
BeginTransactionStmt ::=
'BEGIN' ( 'PESSIMISTIC' | 'OPTIMISTIC' )?
| 'START' 'TRANSACTION' ( 'READ' ( 'WRITE' | 'ONLY' ( 'WITH' 'TIMESTAMP' 'BOUND' TimestampBound )? ) | 'WITH' 'CONSISTENT' 'SNAPSHOT' )?
```

## 示例

Expand Down
55 changes: 36 additions & 19 deletions sql-statements/sql-statement-change-column.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,42 @@ aliases: ['/docs-cn/stable/sql-statements/sql-statement-change-column/','/docs-c

## 语法图

**AlterTableStmt:**

![AlterTableStmt](/media/sqlgram/AlterTableStmt.png)

**AlterTableSpec:**

![AlterTableSpec](/media/sqlgram/AlterTableSpec.png)

**ColumnName:**

![ColumnName](/media/sqlgram/ColumnName.png)

**ColumnDef:**

![ColumnDef](/media/sqlgram/ColumnDef.png)

**ColumnPosition:**

![ColumnPosition](/media/sqlgram/ColumnPosition.png)
```ebnf+diagram
AlterTableStmt ::=
'ALTER' IgnoreOptional 'TABLE' TableName ( AlterTableSpecListOpt AlterTablePartitionOpt | 'ANALYZE' 'PARTITION' PartitionNameList ( 'INDEX' IndexNameList )? AnalyzeOptionListOpt )
AlterTableSpec ::=
TableOptionList
| 'SET' 'TIFLASH' 'REPLICA' LengthNum LocationLabelList
| 'CONVERT' 'TO' CharsetKw ( CharsetName | 'DEFAULT' ) OptCollate
| 'ADD' ( ColumnKeywordOpt IfNotExists ( ColumnDef ColumnPosition | '(' TableElementList ')' ) | Constraint | 'PARTITION' IfNotExists NoWriteToBinLogAliasOpt ( PartitionDefinitionListOpt | 'PARTITIONS' NUM ) )
| ( ( 'CHECK' | 'TRUNCATE' ) 'PARTITION' | ( 'OPTIMIZE' | 'REPAIR' | 'REBUILD' ) 'PARTITION' NoWriteToBinLogAliasOpt ) AllOrPartitionNameList
| 'COALESCE' 'PARTITION' NoWriteToBinLogAliasOpt NUM
| 'DROP' ( ColumnKeywordOpt IfExists ColumnName RestrictOrCascadeOpt | 'PRIMARY' 'KEY' | 'PARTITION' IfExists PartitionNameList | ( KeyOrIndex IfExists | 'CHECK' ) Identifier | 'FOREIGN' 'KEY' IfExists Symbol )
| 'EXCHANGE' 'PARTITION' Identifier 'WITH' 'TABLE' TableName WithValidationOpt
| ( 'IMPORT' | 'DISCARD' ) ( 'PARTITION' AllOrPartitionNameList )? 'TABLESPACE'
| 'REORGANIZE' 'PARTITION' NoWriteToBinLogAliasOpt ReorganizePartitionRuleOpt
| 'ORDER' 'BY' AlterOrderItem ( ',' AlterOrderItem )*
| ( 'DISABLE' | 'ENABLE' ) 'KEYS'
| ( 'MODIFY' ColumnKeywordOpt IfExists | 'CHANGE' ColumnKeywordOpt IfExists ColumnName ) ColumnDef ColumnPosition
| 'ALTER' ( ColumnKeywordOpt ColumnName ( 'SET' 'DEFAULT' ( SignedLiteral | '(' Expression ')' ) | 'DROP' 'DEFAULT' ) | 'CHECK' Identifier EnforcedOrNot | 'INDEX' Identifier IndexInvisible )
| 'RENAME' ( ( 'COLUMN' | KeyOrIndex ) Identifier 'TO' Identifier | ( 'TO' | '='? | 'AS' ) TableName )
| LockClause
| AlgorithmClause
| 'FORCE'
| ( 'WITH' | 'WITHOUT' ) 'VALIDATION'
| 'SECONDARY_LOAD'
| 'SECONDARY_UNLOAD'
ColumnName ::=
Identifier ( '.' Identifier ( '.' Identifier )? )?
ColumnDef ::=
ColumnName ( Type | 'SERIAL' ) ColumnOptionListOpt
ColumnPosition ::=
( 'FIRST' | 'AFTER' ColumnName )?
```

## 示例

Expand Down
13 changes: 7 additions & 6 deletions sql-statements/sql-statement-commit.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,14 @@ aliases: ['/docs-cn/stable/sql-statements/sql-statement-commit/','/docs-cn/v4.0/

## 语法图

**CommitStmt:**
```ebnf+diagram
CommitStmt ::=
'COMMIT' CompletionTypeWithinTransaction?
![CommitStmt](/media/sqlgram/CommitStmt.png)

**CompletionTypeWithinTransaction:**

![CompletionTypeWithinTransaction](/media/sqlgram/CompletionTypeWithinTransaction.png)
CompletionTypeWithinTransaction ::=
'AND' ( 'CHAIN' ( 'NO' 'RELEASE' )? | 'NO' 'CHAIN' ( 'NO'? 'RELEASE' )? )
| 'NO'? 'RELEASE'
```

## 示例

Expand Down
17 changes: 8 additions & 9 deletions sql-statements/sql-statement-create-binding.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,16 @@ aliases: ['/docs-cn/stable/sql-statements/sql-statement-create-binding/','/docs-

## 语法图

**CreateBindingStmt:**
```ebnf+diagram
CreateBindingStmt ::=
'CREATE' GlobalScope 'BINDING' 'FOR' SelectStmt 'USING' SelectStmt
![CreateBindingStmt](/media/sqlgram/CreateBindingStmt.png)
GlobalScope ::=
( 'GLOBAL' | 'SESSION' )?
**GlobalScope:**

![GlobalScope](/media/sqlgram/GlobalScope.png)

**SelectStmt**

![SelectStmt](/media/sqlgram/SelectStmt.png)
SelectStmt ::=
( SelectStmtBasic | SelectStmtFromDualTable | SelectStmtFromTable ) OrderByOptional SelectStmtLimit SelectLockOpt SelectStmtIntoOption
```

****

Expand Down
22 changes: 10 additions & 12 deletions sql-statements/sql-statement-create-database.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,19 @@ aliases: ['/docs-cn/stable/sql-statements/sql-statement-create-database/','/docs

## 语法图

**CreateDatabaseStmt:**
```ebnf+diagram
CreateDatabaseStmt ::=
'CREATE' 'DATABASE' IfNotExists DBName DatabaseOptionListOpt
![CreateDaatabaseStmt](/media/sqlgram/CreateDatabaseStmt.png)
IfNotExists ::=
( 'IF' 'NOT' 'EXISTS' )?
**IfNotExists:**
DBName ::=
Identifier
![IfNotExists](/media/sqlgram/IfNotExists.png)

**DBName:**

![DBName](/media/sqlgram/DBName.png)

**DatabaseOptionListOpt:**

![DatabaseOptionListOpt](/media/sqlgram/DatabaseOptionListOpt.png)
DatabaseOptionListOpt ::=
DatabaseOptionList?
```

## 语法说明

Expand Down
83 changes: 38 additions & 45 deletions sql-statements/sql-statement-create-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,65 +10,58 @@ aliases: ['/docs-cn/stable/sql-statements/sql-statement-create-index/','/docs-cn

## 语法图

**CreateIndexStmt:**
```ebnf+diagram
CreateIndexStmt ::=
'CREATE' IndexKeyTypeOpt 'INDEX' IfNotExists Identifier IndexTypeOpt 'ON' TableName '(' IndexPartSpecificationList ')' IndexOptionList IndexLockAndAlgorithmOpt
![CreateIndexStmt](/media/sqlgram/CreateIndexStmt.png)
IndexKeyTypeOpt ::=
( 'UNIQUE' | 'SPATIAL' | 'FULLTEXT' )?
**IndexKeyTypeOpt:**
IfNotExists ::=
( 'IF' 'NOT' 'EXISTS' )?
![IndexKeyTypeOpt](/media/sqlgram/IndexKeyTypeOpt.png)
IndexTypeOpt ::=
IndexType?
**IfNotExists:**
IndexPartSpecificationList ::=
IndexPartSpecification ( ',' IndexPartSpecification )*
![IfNotExists](/media/sqlgram/IfNotExists.png)
IndexOptionList ::=
IndexOption*
**IndexTypeOpt:**
IndexLockAndAlgorithmOpt ::=
( LockClause AlgorithmClause? | AlgorithmClause LockClause? )?
![IndexTypeOpt](/media/sqlgram/IndexTypeOpt.png)
IndexType ::=
( 'USING' | 'TYPE' ) IndexTypeName
**IndexPartSpecificationList:**
IndexPartSpecification ::=
( ColumnName OptFieldLen | '(' Expression ')' ) Order
![IndexPartSpecificationList](/media/sqlgram/IndexPartSpecificationList.png)
IndexOption ::=
'KEY_BLOCK_SIZE' '='? LengthNum
| IndexType
| 'WITH' 'PARSER' Identifier
| 'COMMENT' stringLit
| IndexInvisible
**IndexOptionList:**
IndexTypeName ::=
'BTREE'
| 'HASH'
| 'RTREE'
![IndexOptionList](/media/sqlgram/IndexOptionList.png)
ColumnName ::=
Identifier ( '.' Identifier ( '.' Identifier )? )?
**IndexLockAndAlgorithmOpt:**
OptFieldLen ::=
FieldLen?
![IndexLockAndAlgorithmOpt](/media/sqlgram/IndexLockAndAlgorithmOpt.png)
IndexNameList ::=
( Identifier | 'PRIMARY' )? ( ',' ( Identifier | 'PRIMARY' ) )*
**IndexType:**

![IndexType](/media/sqlgram/IndexType.png)

**IndexPartSpecification:**

![IndexPartSpecification](/media/sqlgram/IndexPartSpecification.png)

**IndexOption:**

![IndexOption](/media/sqlgram/IndexOption.png)

**IndexTypeName:**

![IndexTypeName](/media/sqlgram/IndexTypeName.png)

**ColumnName:**

![ColumnName](/media/sqlgram/ColumnName.png)

**OptFieldLen:**

![OptFieldLen](/media/sqlgram/OptFieldLen.png)

**IndexNameList:**

![IndexNameList](/media/sqlgram/IndexNameList.png)

**KeyOrIndex:**

![KeyOrIndex](/media/sqlgram/KeyOrIndex.png)
KeyOrIndex ::=
'Key' | 'Index'
```

## 示例

Expand Down
17 changes: 8 additions & 9 deletions sql-statements/sql-statement-create-role.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,16 @@ summary: TiDB 数据库中 CREATE ROLE 的使用概况。

## 语法图

**CreateRoleStmt:**
```ebnf+diagram
CreateRoleStmt ::=
'CREATE' 'ROLE' IfNotExists RoleSpec (',' RoleSpec)*
![CreateRoleStmt](/media/sqlgram/CreateRoleStmt.png)
IfNotExists ::=
('IF' 'NOT' 'EXISTS')?
**IfNotExists:**

![IfNotExists](/media/sqlgram/IfNotExists.png)

**RoleSpec:**

![RoleSpec](/media/sqlgram/RoleSpec.png)
RoleSpec ::=
Rolename
```

## 示例

Expand Down
48 changes: 25 additions & 23 deletions sql-statements/sql-statement-create-sequence.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,31 @@ aliases: ['/docs-cn/stable/sql-statements/sql-statement-create-sequence/','/docs

## 语法图

**CreateSequenceStmt:**

![CreateSequenceStmt](/media/sqlgram/CreateSequenceStmt.png)

**IfNotExists:**

![IfNotExists](/media/sqlgram/IfNotExists.png)

**TableName:**

![TableName](/media/sqlgram/TableName.png)

**CreateSequenceOptionListOpt:**

![CreateSequenceOptionListOpt](/media/sqlgram/CreateSequenceOptionListOpt.png)

**SequenceOptionList:**

![SequenceOptionList](/media/sqlgram/SequenceOptionList.png)

**SequenceOption:**

![SequenceOption](/media/sqlgram/SequenceOption.png)
```ebnf+diagram
CreateSequenceStmt ::=
'CREATE' 'SEQUENCE' IfNotExists TableName CreateSequenceOptionListOpt CreateTableOptionListOpt
IfNotExists ::=
('IF' 'NOT' 'EXISTS')?
TableName ::=
Identifier ('.' Identifier)?
CreateSequenceOptionListOpt ::=
SequenceOption*
SequenceOptionList ::=
SequenceOption
SequenceOption ::=
( 'INCREMENT' ( '='? | 'BY' ) | 'START' ( '='? | 'WITH' ) | ( 'MINVALUE' | 'MAXVALUE' | 'CACHE' ) '='? ) SignedNum
| 'NOMINVALUE'
| 'NO' ( 'MINVALUE' | 'MAXVALUE' | 'CACHE' | 'CYCLE' )
| 'NOMAXVALUE'
| 'NOCACHE'
| 'CYCLE'
| 'NOCYCLE'
```

## 语法说明

Expand Down
13 changes: 7 additions & 6 deletions sql-statements/sql-statement-create-table-like.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@ aliases: ['/docs-cn/stable/sql-statements/sql-statement-create-table-like/','/do

## 语法图

**CreateTableLikeStmt:**
```ebnf+diagram
CreateTableLikeStmt ::=
'CREATE' OptTemporary 'TABLE' IfNotExists TableName LikeTableWithOrWithoutParen
![CreateTableLikeStmt](/media/sqlgram/CreateTableLikeStmt.png)

**LikeTableWithOrWithoutParen:**

![LikeTableWithOrWithoutParen](/media/sqlgram/LikeTableWithOrWithoutParen.png)
LikeTableWithOrWithoutParen ::=
'LIKE' TableName
| '(' 'LIKE' TableName ')'
```

## 示例

Expand Down
Loading

0 comments on commit bc1899a

Please sign in to comment.