Mysql - 常用插入数据的三种方法详解及练习

目录

🥙8.1.1 mysql中常用的三种插入数据的语句

1. insert into - 插入数据

2. replace into - 插入替换数据

3. insert ignore - 如果已存在,忽略当前新数据

🥙8.1.2 以上三种方法的练习及区分

🥙8.1.3 说明

🥙8.1.4 牛客练习题


🥙8.1.1 mysql中常用的三种插入数据的语句

1. insert into - 插入数据

数据库会检查主键,如果出现重复会报错;

# 第一种方式
insert into 表名(字段名1,字段名2,...) values(值1,值2,...);# 第二种方式:按照表中所有字段进行插入数据,一定要与字段在表中定义的顺序一致
insert into  表名 values(值1,值2,...);

2. replace into - 插入替换数据

需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;

# 第一种方式
replace into 表名(字段名1,字段名2,...) values(值1,值2,...);# 第二种方式:按照表中所有字段进行插入数据,一定要与字段在表中定义的顺序一致
replace into 表名 values(值1,值2,...);

3. insert ignore - 如果已存在,忽略当前新数据

如果已经存在相同的记录,则忽略当前新数据;

# 第一种方式
insert ignore into 表名(字段名1,字段名2,...) values(值1,值2,...);# 第二种方式:按照表中所有字段进行插入数据,一定要与字段在表中定义的顺序一致
insert ignore into 表名 values(值1,值2,...);

注:对于以上三种方法,如果表中没有设置主键或唯一索引;则效果都是一样的,即直接插入数据。

🥙8.1.2 以上三种方法的练习及区分

drop table if exists actor;
CREATE TABLE actor (actor_id  smallint(5)  NOT NULL PRIMARY KEY,first_name varchar(45) NOT NULL,last_name  varchar(45) NOT NULL,last_update DATETIME NOT NULL,addresses varchar(45));
insert into actor values ('3', 'WD', 'GUINESS', '2006-02-15 12:34:33','北京');

问题1:用以上三种方式对于表actor插入如下数据

actor_id

first_name

last_name

last_update

addresses

'3'

'ED'

'CHASE'

now()

'上海’

① 使用insert into语句直接插入

insert into actor values('3','ED','CHASE',now(),'上海');

结果:由于主键重复报错

②使用replace into语句插入

replace into actor values('3','ED','CHASE',now(),'上海');

插入成功,可以看到数据被替换了

③使用insert ignore句插入

insert ignore actor values('3','ED','CHASE',now(),'上海');

结果没有报错,数据也没有更改

问题2: 同时插入多行以下数据

actor_id

first_name

last_name

last_update

addresses

'4'

'ZS'

'Fuel'

now()

'上海’

'5'

'LS'

'Son'

now()

'南京’

# 可以同时插入多行
insert into actor values ('4', 'ZS', 'Fuel',now(),'上海'),('5', 'LS', 'Son',now(),'南京');

结果:

如果VALUES前面的()中没有列出字段,那么默认就是为表中的所有字段赋值,那么个数与顺序与表结构中字段定义的一致

问题3:插入指定字段数据

actor_id

first_name

last_name

last_update

'6'

'PENELOP'

'GUINESS'

now()

insert into actor(actor_id,first_name,last_name,last_update)
values ('6', 'PENELOP', 'GUINESS',now());

结果

对于没有列出的字段,像自增列就自动赋值,像默认值列就自动赋默认值,像允许NULL的列就自动赋NULL值,但是非空列又没有提供默认值会自动赋值为对应数据类型的默认值,例如字符串赋值为空字符串,int赋值为0;

🥙8.1.3 说明

1、值列表(值1,值2,......)的顺序、个数与字段列表(字段1,字段2,......) 中字段的顺序、个数一致

  • 如果个数少了就报Column count doesn’t match value count

  • 如果VALUES前面的()中没有列出字段,那么默认就是为表中的所有字段赋值,那么个数与顺序与表结构中字段定义的一致

2、关于自增长列、默认值列、允许为NULL列的赋值

  • 如果字段列表列出了字段名,那么值列表中就要为其赋值,哪怕它是自增长列,有默认值列,可以为NULL值的列。

  • InnoDB表的自动增长列可以手动插入合适的值,但是插入的值如果是NULL或者0,则实际插入的将是自动增长后的值;

  • 如果列声明了“默认约束”那么对应的位置可以赋值具体的值,也可以使用“DEFAULT”,表示使用默认值;

  • 如果列允许了NULL值,那么可以为对应的字段可以赋值为具体值也可以赋值为NULL

3、VALUES也可以写成VALUE,但是VALUES是标准写法

4、如果插入从表的数据,要注意查看主表参照字段的值是否存在

5、值的位置可以是常量值、表达式、函数

🥙8.1.4 牛客练习题

SQL229 批量插入数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高项备考葵花宝典-项目进度管理核心方法加强理解-关键路径法

关键路径法(Critical Path Method,CPM)是一种基于数学计算的项目计划管理方法,是网络图计划方法的一种,属于肯定型的网络图。关键路径法将项目分解成为多个独立的活动并确定每个活动的工期,然后用逻辑关系&…

YOLOv8-Seg改进:UniRepLKNetBlock 助力分割 | UniRepLKNet,通用感知大内核卷积网络, 2023.12

🚀🚀🚀本文改进: UniRepLKNet,通用感知大内核卷积网络,ImageNet-22K预训练,精度 和速度SOTA,ImageNet达到88%, COCO达到56.4 box AP,ADE20K达到55.6 mIoU UniRepLKNetBlock 与C2f进行结合使用 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带…

关于set和map的简单理解

1. 关于搜索 1.1 set和map的引入 Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有: 1. 直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢 2. 二分查找&…

设计模式详解---抽象工厂模式

继续前言,工厂模式中抽象工厂模式的讲解: 1. 前面的工厂模式有啥问题? 前面的工厂模式有这么个问题:一个产品就给了一个工厂,这样子如果产品变多,系统就会很复杂: 2. 解决方法 我们可以按照手…

DSP280049C初学(4)-FLASH烧录以及部分程序转移至RAM运行

DSP280049C初学(4)-FLASH烧录以及部分程序转移至RAM运行 实现目的:代码在RAM中调试完成后,就需要将其固化下载到FLASH中,但是FLASH中运行所有程序的话会存在计算或程序运行时间过长的问题,故还需要将部分代…

Sublime Text 3 解决中文乱码问题

Sublime Text 3 解决中文乱码问题 一、引言二、主要内容1. 初识 ConvertToUTF8 插件2. 安装 ConvertToUTF8 插件3. 中文乱码问题解决 三、总结 一、引言 在 《Sublime Text 3配置C/C开发环境》 博文中,Huazie 带大家利用 Sublime Text 3 配置了 C/C 开发环境&#…

手把手教你使用zabbix5.0设置企业微信告警

一、环境要求 需要准备2台虚拟机,镜像是centos7,保证2台虚拟机之间可以正常通信,并且可以正常连接外网。 systemctl stop firewalld && systemctl disable firewalld setenforce 0 && sed -i ‘/SELINUX/s/enforcing/disable…

【infiniband】安装驱动

安装 InfiniBand 驱动包通常包括几个步骤,但是可能会有所不同,取决于使用的操作系统和具体的硬件。以下是在 Linux 系统上安装 InfiniBand 驱动的通用步骤: 1.检查硬件和操作系统兼容性 确保服务器硬件支持 InfiniBand,并查看驱动…

详解Maven如何打包SpringBoot工程

目录 一、spring-boot-maven-plugin详解 1、添加spring-boot-maven-plugin插件到pom.xml 2、配置主类(Main Class) 3、配置打包的JAR文件名 4、包含或排除特定的资源文件 5、指定额外的依赖项 6、配置运行参数 7、自定义插件执行阶段 二、Maven打…

LeetCode Hot100 23.合并K个升序链表

题目: 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 方法:分治,类似于归并 class Solution {public ListNode mergeKLists(ListNode[] lists) {return mer…

canvas中实现画布内元素的拖拽(下)

在上篇实现基础上,实现仅能在画布区域内移动 const canvas document.createElement(canvas) canvas.width 400 canvas.height 400 canvas.id canvas document.body.appendChild(canvas) let ctx canvas.getContext(2d) //画笔// 状态标志 const statusConfig …

arp欺骗原理以及实现方式

我们知道了arp的作用,那么此时我们怎么可以用他来进行攻击呢?在一个局域网中,我们怎么实现呢? 原理: 这样B就可以做到中间人了,可以接受到两个主机的数据了。换句话来说,在同一个局域网内&…

C/C++ 有效的括号判断

题目: 给定一个只包括 (,),{,},[,]的字符串s,判断字符串是否有效。 约束: 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。…

【六】python观察者设计模式

6.1行为型模式简介 观察者设计模式是最简单的行为型模式之一,所以我们先简单了解一下行为型模式 创建型模式的工作原理是基于对象的创建机制的。由于这些模式隔离了对象的创建细 节,所以使得代码能够与要创建的对象的类型相互独立。结构型模式用于设计对象和类的结…

Python GUI教程:轻松构建用户界面

大家好,从网络开发到数据科学,Python被广泛应用于各个领域。本文将探索Python内置的用于创建图形用户界面(GUI)的库:Tkinter。无论是初学者还是经验丰富的开发者,了解如何创建Python GUI都可以增强构建交互…

Makefile基本指令

语法规则 目标 ... : 依赖 ...命令1命令2. . .1、目标即要生成的文件。如果目标文件的更新时间晚于依赖文件更新时间,则说明依赖文件没有改动,目标文件不需要重新编译。否则会进行重新编译并更新目标文件。 2、默认情况下Makefile的第一个目标为终极目…

系统接口未找到报404异常统一返回处理

上篇博客:异常处理返回结构体,做到全局统一,仍然会出现一些情况。 针对未找到接口爆出404异常,返回结构体如果没有处理的话会变成下面这样,不会走全局异常处理,这样的话就没有完全做到全局异常统一处理。 …

es模板和索引简单操作简介

一、模板 1、创建模板 (1)请求url http://127.0.0.1:9201/_template/template_test (2)请求方式 PUT (3)请求体 { "index_patterns": ["test*"], "settings": { …

并发相关参数指标

指标 1、TPS和QPS 一、TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS CAPS 每个呼叫平均TPS&…

前端发送请求之参数处理---multipart/form-data与application/x-www-form-urlencoded

Content-Type就是指 HTTP 发送信息至服务器时的内容编码类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。 其实前后端发送请求的方式有 text/plain、application/json、application/x-www-form-urlencoded、 multipart/form-data等&…