MySQL基础-03增删改

本文介绍了MySQL中插入数据的三种方式,包括完整行插入、部分插入、多行插入及通过查询结果插入,强调了依赖列顺序的不安全性。同时,讨论了UPDATE语句的使用,包括忽略错误的IGNORE关键字。删除数据操作的注意事项,如使用TRUNCATETABLE删除所有行更高效,且DELETE操作无法撤销。
摘要由CSDN通过智能技术生成

MySQL基础-03增删改

插入数据 insert

insert是用来插入(添加)行到数据库表中的,有以下几种方式:

  • 插入完整的行
  • 插入行的一部分
  • 插入多行
  • 插入某些查询的结果
第一种语法
insert into tablename
values(...值)

insert语句一般没有输出

  • values括号里的内容每个列必须提供一个值,如果没有值,应该使用NULL(对于自动增量,同样也是这样)

  • 上面的SQL语句高度依赖于表中列的定义次序,并且还依赖于其次序容易获得的信息。即使可得到这种次序信息,也不能保证下一次表结构变动后各个列保持完全相同的次序。因此,编写依赖于特定列次序的SQL语句是很不安全的

第二种语法
select into tablename(...列名)
values(...值)

因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各个列出现在实际表中的次序。其优点是,即使表的结构改变,此INSERT语句仍然能正确工作。

并且,自动增量的列、允许NULL值的列和有默认值的列是可以省略的的,当你不想给这些列赋值时,可以忽略它

性能

数据库经常被多个客户访问,对处理什么请求以及用什么次序处理进行管理是MySQL的任务。INSERT操作可能很耗时(特别是有很多索引需要更新时),而且它可能降低等待处理的SELECT语句的性能

解决:如果数据检索是最重要的(通常是这样),则你可以通过在INSERT和INTO之间添加关键字LOW_PRIORITY,指示MySQL降低INSERT语句的优先级

insert low_priority into ...

这个关键字同样适用于之后的改 update 和 删delete

插入多行
  1. 多条insert语句,一次提交,以分号分隔

  2. 保持每条语句的列名和次序相同,以下面的方式组合

    insert into table(...列名)
    values(
    		...
    	  ),
          (
          	...
    	  );
    

    这种方式的效率比使用多条insert语句快,可以提高数据库处理的性能

插入检索出的数据

顾名思义,这种方式是由一条 insert 语句和一条 select 语句组成的

insert into table(...列名)
select ...
from ...

insert和select的列名不要求一定要匹配,只关心列的位置,对应插入即可

更新数据 update

分类
  • 更新表中特定行
  • 更新表中所有行
组成

update语句由三部分组成

  • 要更新的表
  • 列名和它们的新值
  • 确定要更新行的过滤条件
语法
update tablename
set 列名1 = new_value(,)
	(列名2 = new_value)
where condition

在更新多个列时,只需要使用单个SET命令,每个“列=值”对之间用逗号分隔(最后一列之后不用逗号)

ignore关键字

如果用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个UPDATE操作被取消(错误发生前更新的所有行被恢复到它们原来的值)。为即使是发生错误,也继续进行更新,可使用IGNORE关键字。

update ignore tablename 
...

删除数据 delete

delete是删除整行而不是某个列,如果想删除某个列,可以通过 update该列的值为NULL

分类
  • 删除表中特定行
  • 删除表中所有行
语法
delete from tablename
where condition
注意
  • delete只是删除行,但哪怕把所有行都删除,也没有删除表本身
  • 如果要删除所有行,不要使用delete,可以使用 TRUNCATE TABLE 语句,速度更快
  • MySQL没有撤销(undo)按钮。应该非常小心地使用UPDATE和DELETE,否则你会发现自己更新或删除了错误的数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值