title | summary | aliases | ||
---|---|---|---|---|
INSERT | TiDB SQL Statement Reference |
An overview of the usage of INSERT for the TiDB database. |
|
This statement inserts new rows into a table.
InsertIntoStmt ::=
'INSERT' TableOptimizerHints PriorityOpt IgnoreOptional IntoOpt TableName PartitionNameListOpt InsertValues OnDuplicateKeyUpdate
TableOptimizerHints ::=
hintComment?
PriorityOpt ::=
( 'LOW_PRIORITY' | 'HIGH_PRIORITY' | 'DELAYED' )?
IgnoreOptional ::=
'IGNORE'?
IntoOpt ::= 'INTO'?
TableName ::=
Identifier ( '.' Identifier )?
PartitionNameListOpt ::=
( 'PARTITION' '(' Identifier ( ',' Identifier )* ')' )?
InsertValues ::=
'(' ( ColumnNameListOpt ')' ( ValueSym ValuesList | SelectStmt | '(' SelectStmt ')' | UnionStmt ) | SelectStmt ')' )
| ValueSym ValuesList
| SelectStmt
| UnionStmt
| 'SET' ColumnSetValue? ( ',' ColumnSetValue )*
OnDuplicateKeyUpdate ::=
( 'ON' 'DUPLICATE' 'KEY' 'UPDATE' AssignmentList )?
Note:
Starting from v6.6.0, TiDB supports Resource Control. You can use this feature to execute SQL statements with different priorities in different resource groups. By configuring proper quotas and priorities for these resource groups, you can gain better scheduling control for SQL statements with different priorities. When resource control is enabled, statement priority (
PriorityOpt
) will no longer take effect. It is recommended that you use Resource Control to manage resource usage for different SQL statements.
mysql> CREATE TABLE t1 (a INT);
Query OK, 0 rows affected (0.11 sec)
mysql> CREATE TABLE t2 LIKE t1;
Query OK, 0 rows affected (0.11 sec)
mysql> INSERT INTO t1 VALUES (1);
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO t1 (a) VALUES (1);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO t2 SELECT * FROM t1;
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM t1;
+------+
| a |
+------+
| 1 |
| 1 |
+------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM t2;
+------+
| a |
+------+
| 1 |
| 1 |
+------+
2 rows in set (0.00 sec)
mysql> INSERT INTO t2 VALUES (2),(3),(4);
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM t2;
+------+
| a |
+------+
| 1 |
| 1 |
| 2 |
| 3 |
| 4 |
+------+
5 rows in set (0.00 sec)
The INSERT
statement in TiDB is fully compatible with MySQL. If you find any compatibility differences, report a bug.