• 数据表插入数据insert into


    1、数据表插入数据方式汇总:

    1. 普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...)
    2. 普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
    3. 多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...
    4. 从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]

    2、自增id的处理

            现有数据表如下

    FiledTypeNullKeyExtraDefaultComment
    idint(11)NOPRIauto_increment(NULL)自增ID
    uidint(11)NO(NULL)用户ID
    exam_idint(11)NO(NULL)试卷ID
    start_timedatetimeNO(NULL)开始时间
    submit_timedatetimeYES(NULL)提交时间
    scoretinyint(4)YES(NULL)得分

    插入两条数据:

    • 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分;
    • 用户1002在2021年9月4日上午7点1分2秒开始作答试卷9002,并在10分钟后退出了平台。

            这里的id是自增主键(PRIMARY KEY),这就意味着不需要你自己手动填入,它会跟随表格行数进行自己增加(比如这样增加id值👉1,2,3...n)。

            所以我们在插入数据的时候,

            方法之一: 可以指定插入的列名, 这样就不用填写id这一列的数据,让他自增。具体插入代码如下:

    1. INSERT INTO exam_record (uid, exam_id, start_time, submit_time, score) VALUES
    2. (10019001'2021-09-01 22:11:12''2021-09-01 23:01:12'90),
    3. (10029002'2021-09-04 07:01:02', NULL, NULL);

            方法之二:把id的值设置为NULL或0,这样MySQL会自己处理这个自增的id列。 具体代码如下:

    INSERT INTO exam_record VALUES(NULL10019001'2021-09-01 22:11:12''2021-09-01 23:01:12'90),(NULL10029002'2021-09-04 07:01:02', NULL, NULL);

            方法三:直接填入id值,不过仅针对插入数据不多的时候使用,大家了解一下:

    1. INSERT INTO exam_record VALUES
    2. (110019001'2021-09-01 22:11:12''2021-09-01 23:01:12'90),
    3. (210029002'2021-09-04 07:01:02', NULL, NULL);

    3、关于日期时间的处理

    1. interval 时间间隔关键字,常和date_add() 或 date_sub()搭配使用。

    以下表达正确

    1

    A.T_DATE = B.T_DATE+ interval '1' hour  1小时以后

    1

    A.T_DATE = B.T_DATE+ interval 1 hour    1小时以后

    1

    A.T_DATE = B.T_DATE+ interval +1 hour   1小时以后

    1

    A.T_DATE = B.T_DATE+ interval -1 hour   1小时之前

    1

    A.T_DATE = B.T_DATE+ interval '-1' hour 1小时之前

    1

    A.T_DATE = B.T_DATE+ interval -'1' hour 1小时之前

    1

    A.T_DATE = B.T_DATE- interval -'1' hour 1小时之后(负负得正)

    以下表达错误

    A.T_DATE = B.T_DATE interval '1' hour

    错。单独的interval需要跟在加减运算符后,如果使用date_add()或date_sub()则可以省略B.T_DATE和interval之间的运算符。

    4、replace into插入

            replace into 跟 insert into功能类似,不同点在于:replace into 首先尝试插入数据到表中,

    1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据;
    2. 否则,直接插入新数据。

            要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

    1. REPLACE INTO examination_info
    2. VALUES(NULL,9003,'SQL','hard',90,'2021-01-01 00:00:00');

    5、先删除已有数据,再插入新数据

    1. DELETE FROM examination_info WHERE exam_id=9003;
    2. INSERT INTO examination_info (exam_id, tag, difficulty, duration, release_time) VALUES
    3. (9003, "SQL", "hard", 90, "2021-01-01 00:00:00")
  • 相关阅读:
    MySQL数据库的索引
    阿里云原生应用平台架构师田伟:应用架构的规划、治理与演进
    猿创征文 【SpringBoot】SSM“加速器”SpringBoot初体验
    智慧安防视频监控系统EasyCVR平台突然运行异常,是什么原因?
    如何使用Hexo搭建个人博客
    python基础-1(开发环境安装及配置anaconda 5.3.1+py3.7)
    挑战一周完成Vue3项目Day2:路由配置+登录模块+layout组件+路由鉴权
    【Django-GAGA系统】添加用户时自动追加权限-20220801
    小样本学习(Few-shot Learning)
    【笔者感悟】笔者的工作感悟【四】
  • 原文地址:https://blog.csdn.net/liuqinhou/article/details/126083239