• 插入数据:insert,replace


    *insert高级用法*

    1、语法:insert into tbname(字段列表) values 值列表;


      1.1可以不将所有的字段都插入数据。如果说需要完成部分字段的插入,需要必须存在字段列表。
    没有插入的字段,使用默认值填充。
      insert into a_table (name) values ('jack');

      1.2如果插入部分字段,可以使用下面的set语句,不同字段用逗号隔开:
      insert into a_table set a_id=7,a_name='rose';


      1.3值列表的语法,可以一次性插入多条数据,每条数据采用记录构造符 “括号”完成即可。
      insert into a_table (a_name,a_part) values ('老刘','设计部'),('老铁','财务部');


    【问题】插入数据时,如果主键冲突会如何?

    答:默认有主键约束,不会插入成功,但是可以在insert语法内,控制在主键冲突时,改成执行 更新 操作。
    相当于,更新所冲突主键字段相对应的更新值。update 后不跟set

    例子:
    MariaDB [test]> insert into a_table (a_id,a_name) values (13,'aly');
    ERROR 1062 (23000): Duplicate entry '13' for key 'PRIMARY'        #a_id为主键。

    MariaDB [test]> insert into a_table (a_id,a_name) values (13,'aly')
    -> on duplicate key update a_name='bob';                        #把a_id=13中的a_name字段更新成bob。

    【插入数据失败流程】
    判断是否插入数据成功--->>失败(主键冲突|唯一索引冲突)--->>更新


    2、插入的数据源:

      2.1除了使用自定义数据外,还可以是使用select语句查询到的数据,作为插入的数据源。
      insert into a_table (a_name,a_part) select b_name,b_part from b_table;

      2.2数据可以来源于其它数据表,要求:字段数量和类型一致即可。
      insert into a_table (a_name,a_part) select name,sex from stu_info;

    3、通过强制使用default关键字,或者default()函数,使用默认值:
    insert into teacher values
    (13,'alex','male',default),
    (14,'bob','male',default(days));


    *replace替换高级用法*

    1、语法:replace into,与on duplicate key update,非常相似,只要主键冲突就替换,不冲突就直接插入数据。
        例子:replace into b_table values (2,'laowang','mishubu');

  • 相关阅读:
    utils04_搭建私有Git服务器
    utils03_clone远程仓库
    java 22
    java 22
    java 22
    java 22
    java 22
    java 22
    java 22
    java 22
  • 原文地址:https://www.cnblogs.com/python-wen/p/10158837.html
Copyright © 2020-2023  润新知