0
点赞
收藏
分享

微信扫一扫

凌鲨开发容器架构

宁静的猫 03-12 14:00 阅读 2

文章目录


存储在系统中的数据是数据库管理系统(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)文件不受影响。
举报

相关推荐

0 条评论