Mysql - 常用插入数据的三种方法详解及练习
创始人
2025-01-15 08:07:53
0

目录

🥙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 批量插入数据

相关内容

热门资讯

截至发稿!潮汕激k辅助,wep... 截至发稿!潮汕激k辅助,wepoker辅助软件视频,2025版教程(一贯真的是有挂)-哔哩哔哩该软件...
发现一款!新上游拼十辅助(辅助... 发现一款!新上游拼十辅助(辅助挂)开挂透视辅助技巧(果然有挂)-哔哩哔哩1、不需要AI权限,帮助你快...
截至发稿!拱趴大菠萝运势,新道... 截至发稿!拱趴大菠萝运势,新道游修改器,高科技教程(好像是有挂)-哔哩哔哩拱趴大菠萝运势辅助器中分为...
实测必看!欢聚水鱼辅助视频(辅... 实测必看!欢聚水鱼辅助视频(辅助挂)开挂透视辅助脚本(竟然有挂)-哔哩哔哩1、欢聚水鱼辅助视频系统规...
刚刚!蘑菇云游破解版,阿拉斗牌... 刚刚!蘑菇云游破解版,阿拉斗牌辅助视频,AI教程(都是是真的挂)-哔哩哔哩1、下载好阿拉斗牌辅助视频...
一分钟带你了解!可可茶馆辅助工... 一分钟带你了解!可可茶馆辅助工具(辅助挂)开挂透视辅助方法(其实有挂)-哔哩哔哩1、超多福利:超高返...
日前!海螺众娱辅助,葫芦娃通杀... 日前!海螺众娱辅助,葫芦娃通杀辅助使用,必赢方法(本来真的有挂)-哔哩哔哩葫芦娃通杀辅助使用辅助器中...
科技分享!辅助挂定制交易平台(... 科技分享!辅助挂定制交易平台(辅助挂)开挂透视辅助插件(好像真的有挂)-哔哩哔哩小薇(透视辅助)致您...
日前!顺欣茶楼辅助视频,九游破... 日前!顺欣茶楼辅助视频,九游破解辅助插件官方,普及教程(确实有挂)-哔哩哔哩1、不需要AI权限,帮助...
科普常识!四川游戏家园辅助软件... 科普常识!四川游戏家园辅助软件(辅助挂)开挂透视辅助神器(竟然真的有挂)-哔哩哔哩1、每一步都需要思...