数据表插入数据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这一列的数据,让他自增。具体插入代码如下:

INSERT INTO exam_record (uid, exam_id, start_time, submit_time, score) VALUES
(1001, 9001, '2021-09-01 22:11:12', '2021-09-01 23:01:12', 90),
(1002, 9002, '2021-09-04 07:01:02', NULL, NULL);

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

INSERT INTO exam_record VALUES(NULL, 1001, 9001, '2021-09-01 22:11:12', '2021-09-01 23:01:12', 90),(NULL, 1002, 9002, '2021-09-04 07:01:02', NULL, NULL);

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

INSERT INTO exam_record VALUES
(1, 1001, 9001, '2021-09-01 22:11:12', '2021-09-01 23:01:12', 90),
(2, 1002, 9002, '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 会直接插入数据,这将导致表中出现重复的数据。

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

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

DELETE FROM examination_info WHERE exam_id=9003;
INSERT INTO examination_info (exam_id, tag, difficulty, duration, release_time) VALUES
 (9003, "SQL", "hard", 90, "2021-01-01 00:00:00")
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值