官网

mysql insert
语法

  1. INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
  2. [INTO] tbl_name
  3. [PARTITION (partition_name [, partition_name] ...)]
  4. [(col_name [, col_name] ...)]
  5. { {VALUES | VALUE} (value_list) [, (value_list)] ...
  6. |
  7. VALUES row_constructor_list
  8. }
  9. [AS row_alias[(col_alias [, col_alias] ...)]]
  10. [ON DUPLICATE KEY UPDATE assignment_list]
  11. INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
  12. [INTO] tbl_name
  13. [PARTITION (partition_name [, partition_name] ...)]
  14. [AS row_alias[(col_alias [, col_alias] ...)]]
  15. SET assignment_list
  16. [ON DUPLICATE KEY UPDATE assignment_list]
  17. INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
  18. [INTO] tbl_name
  19. [PARTITION (partition_name [, partition_name] ...)]
  20. [(col_name [, col_name] ...)]
  21. [AS row_alias[(col_alias [, col_alias] ...)]]
  22. {SELECT ... | TABLE table_name}
  23. [ON DUPLICATE KEY UPDATE assignment_list]
  24. value:
  25. {expr | DEFAULT}
  26. value_list:
  27. value [, value] ...
  28. row_constructor_list:
  29. ROW(value_list)[, ROW(value_list)][, ...]
  30. assignment:
  31. col_name = [row_alias.]value
  32. assignment_list:
  33. assignment [, assignment] ...

小试牛刀——简单语句

  1. -- 例子表
  2. CREATE TABLE `test_tab` (
  3. `id` int NOT NULL AUTO_INCREMENT,
  4. `name` varchar(64) DEFAULT NULL,
  5. `gender` varchar(2) DEFAULT NULL,
  6. `salary` double DEFAULT NULL,
  7. `birthday` datetime DEFAULT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  10. -- 例子语句
  11. INSERT INTO test_tab (
  12. id,
  13. NAME,
  14. gender,
  15. salary,
  16. birthday
  17. )
  18. VALUES
  19. (
  20. 1,
  21. '小辉',
  22. '男',
  23. 1200,
  24. '2021-01-21 10:09:01'
  25. ),
  26. (
  27. 2,
  28. '小辉',
  29. '男',
  30. 1010,
  31. '2021-01-21 10:09:01'
  32. ) AS new ON DUPLICATE KEY UPDATE salary = new.salary,
  33. NAME = new. NAME,
  34. gender = new.gender;

小结

  1. insert into 语句可以实现 saveOrUpdate 功能。
  2. insert into 可以使用 set 语句。 ```sql INSERT INTO t1 SET a=1,b=2,c=3 AS new ON DUPLICATE KEY UPDATE c = new.a+new.b;

INSERT INTO t1 SET a=1,b=2,c=3 AS new(m,n,p) ON DUPLICATE KEY UPDATE c = m+n; ```

  1. insert into 返回的影响行数,可以不等于插入的条数;(原因未探😂)。
  2. insert into 没有 where 子句。