当前位置:网站首页>数据表插入数据insert into
数据表插入数据insert into
2022-07-31 15:12:00 【小刘学安卓】
1、数据表插入数据方式汇总:
- 普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...)
- 普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
- 多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...
- 从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]
2、自增id的处理
现有数据表如下
| Filed | Type | Null | Key | Extra | Default | Comment |
| id | int(11) | NO | PRI | auto_increment | (NULL) | 自增ID |
| uid | int(11) | NO | (NULL) | 用户ID | ||
| exam_id | int(11) | NO | (NULL) | 试卷ID | ||
| start_time | datetime | NO | (NULL) | 开始时间 | ||
| submit_time | datetime | YES | (NULL) | 提交时间 | ||
| score | tinyint(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、关于日期时间的处理
- interval 时间间隔关键字,常和date_add() 或 date_sub()搭配使用。
以下表达正确
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
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 首先尝试插入数据到表中,
- 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据;
- 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,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")
边栏推荐
- The R language ggstatsplot package ggbarstats function visualizes bar charts, and adds hypothesis test results (including sample number, statistics, effect size and its confidence interval, significan
- Network cable RJ45 interface pins [easy to understand]
- Efficient use of RecyclerView Section 1
- 「秋招系列」MySQL面试核心25问(附答案)
- border控件的使用
- Nuget打包并上传教程
- Ubantu专题4:xshell、xftp连接接虚拟机以及设置xshell复制粘贴快捷键
- 浏览器自带的拾色器
- 修改SQL语言实现Mysql 多表关联查询优化
- 最小费用最大流问题详解
猜你喜欢

TRACE32 - C source code association

格林美瑞交所IPO:募资3.8亿美元 更多中国企业将赴欧洲上市

leetcode303 Weekly Match Replay

TRACE32 - Common Operations

「秋招系列」MySQL面试核心25问(附答案)

四象限时间管理有多好用?

TRACE32——基于SNOOPer的变量记录

工程力学复习资料

Architecture actual combat battalion module 8 message queue table structure design

WeChat chat record search in a red envelope
随机推荐
LeetCode二叉树系列——110.平衡二叉树
leetcode303场周赛复盘
WPF项目--控件入门基础用法,必知必会XAML
border控件的使用
thread_local 变量的析构顺序
OpenShift 4 - Customize RHACS security policies to prevent production clusters from using high-risk registry
TRACE32 - SNOOPer-based variable logging
TRACE32——常用操作
11 pinia使用
Getting started with UnityShader (3) - Unity's Shader
力扣:714. 买卖股票的最佳时机含手续费
org.apache.jasperException(could not initialize class org)
删除 状态良好(恢复分区)的磁盘
Introductory UnityShader learning (2) - the rendering pipeline
abaqus find contact pairs报错:surface name is already in use
Trigonometric identity transformation formula
自适应控制——仿真实验三 用超稳定性理论设计模型参考自适应系统
Destruction order of thread_local variables
Linux check redis version (check mongodb version)
RecyclerView的高效使用第一节