MySQL的DML增删改操作:

目录

添加数据:

方式1:一条一条添加数据:

方式2:将查询结果插入到表中:

更新数据:

删除数据:

MySQL8的新特性:计算列:


本文介绍了MySQL数据库操作语言(DML)的基本使用方法,包括数据添加、更新和删除操作。重点讲解了两种数据添加方式:单条插入和多条批量插入,并比较了它们的效率差异。同时详细说明了UPDATE和DELETE语句的使用方法及注意事项,特别强调了WHERE子句的重要性。文章还介绍了MySQL8.0的新特性计算列,该功能允许通过表达式自动生成列值。最后对比了DELETE和TRUNCATE TABLE的区别,指出后者虽然效率更高但不支持回滚,建议谨慎使用。这些操作在实际应用中可能因约束条件导致失败,使用时需特别注意。

添加数据:

方式1:一条一条添加数据:

未指明添加数据,必须按照字段生命顺序添加。

INSERT INTO 表名
VALUES (
    对应表中的字段名顺序进行添加
    数据值1,
    数据值2,
    ...
),
(
    对应表中的字段名顺序进行添加
    数据值1,
    数据值2,
    ...
),
...
(
    对应表中的字段名顺序进行添加
    数据值1,
    数据值2,
    ...
);

插入完整的行,所有的字段,每一个字段都必须提供一个值,如果某个字段没有值,应该使用NULL,每一个字段必须以表中生命的顺序给出。虽然这种语法简单,但是不安全,应该避免使用。

推荐以下用法:

指明添加字段。

INSERT INTO 表名(字段名1,字段名2,...)
VALUES (
    对应上面的字段名顺序进行添加
    数据值1,
    数据值2,
    ...
),
(
    对应上面的字段名顺序进行添加
    数据值1,
    数据值2,
    ...
),
...
(
    对应上面的字段名顺序进行添加
    数据值1,
    数据值2,
    ...
);

不需要与表中的生命顺序相同,没有值的字段可以不提供数据。

使用INSERT同时插入多条记录时,MySQL会返回一些在执行单行插入时没有的额外信息,这些信息含义如下:

Records:表明插入的记录条数。

Duplicates:表明插入时被忽略的记录,原因可能是这些记录包含了重复的主键值。

Warnings:表明有问题的数据值。

一个同时插入多行记录的INSERT语句等于多个单行插入的INSERT语句,但是多行的INSERT语句在处理过程中效率更高。因为MySQL执行单条INSERT语句插入多行数据比使用多条INSERT语句快,所以在插入多条记录时最好选择使用单条INSERT语句的方式插入。

字符和日期类型数据应包含在单引号中。

添加数据时,可能会因为约束的原因导致添加数据失败。

方式2:将查询结果插入到表中:

SELECT INTO 表名(字段名1,字段名2,...)
SELECT 对应上面的字段数量和类型
FROM 表名
[WHERE 条件];

应该要注意要添加的字段的类型不能低于查询表中的字段类型,否则可能会出现添加不成功的风险。

更新数据:

UPDATE 表明
SET 字段1 = 修改值,字段2 = 修改值,
... 
WHERE 筛选出目标字段的行。

如果未使用HWERE进行筛选目标字段的行,那么该字段所有的值全都会被修改。

修改数据时,可能会存在不成功的情况,可能是因为约束的原因导致的。

删除数据:

DELETE FROM 表名
WHERE 过滤条件;

由于约束的原因,删除数据的操作也可能会失败。

如果删除数据不进行WHERE筛选,那么则会对进行操作的表进行删除,但是会保留表的结构。这个功能和TRUNCATE TABLE的功能时相同的,但是区别在于,TRUNCATE TABLE一旦执行操作之后,不能进行回滚,而DELETE TABLE执行操作之后可以进行回滚。TRUNCATE TABLE比DELETE速度快,且使用的系统和事务日志资源少,但是TRUNCATE无事务且不触发TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。

MDL操作默认情况下,执行完之后都会自动提交数据,如果希望执行完成以后,不自动提交数据,则需要使用autocommit = FALSE。

MySQL8的新特性:计算列:

计算列简单来说就是某一列的值是通过别的列的计算得来的。

例如:a列的值为1,b列的值为2,c列的值不需要手动插入,定义为a+b的结果为c的值,那么c就是计算列,通过别的列计算得来的。

CREATE TABLE 表名(
    字段名1 数据类型,
    字段名2 数据类型,
    字段名3 数据类型 GENERATED ALWAYS AS (字段名1+字段名2) VIRTUAL
);

在MySQL8.0中,CREATE TABLE和ALTER TABLE中都支持增加计算列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值