mysql笔记:3. 表数据更新


存储在系统中的数据是数据库管理系统(DBMS)的核心,数据库被设计用来管理数据的存储、访问和维护数据的完整性。那么,数据库和表创建完成后,应该如何使用呢?

插入数据

插入单条数据

INSERT INTO table_name (column_name1, column_name2, ...)
VALUE (value1, value2, ...);

插入多条数据

INSERT INTO table_name (column_name1, column_name2, ...)
VALUES (valuei1, valuei2, ...), (valuej1, valuej2, ...), ...

复制表插入数据

INSERT INTO table_name1 (column_name1, column_name2, ...)
SELECT column_name1, column_name2, ... FROM table_name2;

更新数据

UPDATE table_name 
SET column_name1=value1, column_name2=value2, ...
WHERE search_condition;

删除数据

DELETE FROM table_name WHERE search_condition;

如果需要清空表中所有数据,只需要去掉WHERE子句即可。

DELETE FROM table_name;

截断表

TRUNCATE [TABLE] table_name;

从逻辑上说,该语句与用于删除所有行的DELETE语句等同。但是在有些情况下,两者在使用上有所不同。
对于InnoDB表,如果有需要引用表的外键限制,则TURNCATE TABLE被映射到DELETE上;否则使用快速删减(删除和重新创建表)。使用TURNCATE TABLE重新设置AUTO_INCREMENT计数器,设置时不考虑是否有外键限制。

二者区别:

  • TURNCATE语句是数据定义语句,DELETE语句是数据操纵语句
  • TURNCATE操作会删除和重新创建表,这比一行一行的删除数据要快很多,特别是很大的表
  • TURNCATE操作会造成一个隐式的提交,所以不可以回滚
  • TURNCATE操作不能保证事务安全;在进行事务处理和表锁定的过程中尝试TURNCATE,会发生错误。
  • 被删除的行的数目没有返回
  • 只要表定义文件tbl_name.frm是合法的,就可以使用TURNCATE把表重新创建为一个空表,即便数据或索引文件已经被破坏。
  • 被使用的AUTO_INCREMENT值丢失,并会从头开始计数。
  • 当被用于带分区的表时,TURNCATE会保留分区;即,数据和索引文件重新创建,分区定义(.par)文件不受影响。
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值