mysql truncate命令
truncate命令结果跟delete很像,但是他们的执行原理完全不一样。truncate本质还是ddl语句
1.truncate先使用create命令创建表,然后drop源表,最后rename新表。
2 drop只是删除元数据,所以比delete快很多,特别是大表
3 truncate本质是ddl,需要ddl权限。ddl本身是自提交的,所以truncate也不能rollback回滚
4 因为是truncate是重建表,所以truncate是可以整理表碎片的(delete不可以)
5 truncate在执行有外键约束的reference表时会失败
下面对truncate外键约束的reference表的测试
mysql> show create table testa;
| Table | Create Table
| testa | CREATE TABLE `testa` (
`a` int(11) DEFAULT NULL,
`b` char(4) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
`e` int(11) DEFAULT NULL,
KEY `idx_aaa` (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
1 row in set (0.01 sec)
mysql> show create table testb;
| Table | Create Table
| testb | CREATE TABLE `testb` (
`a` int(11) DEFAULT NULL,
KEY `idx_sam` (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
1 row in set (0.00 sec)
mysql> select * from testb;
Empty set (0.00 sec)
mysql> alter table testb add constraint fk_testab foreign key (a) REFERENCES testa(a);
Query OK, 0 rows affected (0.11 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table testb;
| Table | Create Table |
| testb | CREATE TABLE `testb` (
`a` int(11) DEFAULT NULL,
KEY `idx_sam` (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
1 row in set (0.01 sec)
mysql> truncate table testa;
Query OK, 0 rows affected (0.11 sec)
mysql> insert into testa values(1,'1',1,1,1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into testb values(1);
ERROR 1785 (HY000): Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.
mysql> select * from testb;
Empty set (0.03 sec)
mysql> alter table testb drop foreign key fk_testab;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> insert into testb values(2);
Query OK, 1 row affected (0.02 sec)
--有外键约束的mysiam表,在开启GTID时无法insert数据
--创建innodb表进行测试
mysql> create table testc(a int , foreign key (a) REFERENCES testa(a)) ;
Query OK, 0 rows affected (0.12 sec)
mysql> insert into testc values(1);
Query OK, 1 row affected (0.01 sec)
mysql> insert into testc values(2);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`lzldb`.`testc`, CONSTRAINT `testc_ibfk_1` FOREIGN KEY (`a`) REFERENCES `testa` (`a`))
mysql> truncate table testa;
ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (`lzldb`.`testc`, CONSTRAINT `testc_ibfk_1` FOREIGN KEY (`a`) REFERENCES `lzldb`.`testa` (`a`))
mysql truncate命令相关推荐
- mysql truncate table命令使用总结
truncate使用注意 由于上过truncate table a_table命令一次当,将教训记录下来,以示警戒! mysql truncate table a_table命令受影响结果说明,亲身体 ...
- MySQL 用 truncate 命令快速清空一个数据库中的所有表
MySQL 用 truncate 命令快速清空一个数据库中的所有表. 1. 先执行select语句生成所有truncate语句 语句格式: select CONCAT('truncate TABLE ...
- oracle数据库倒顺,mysql常用命令
mysql 文件系统管理数据存在的问题 1.数据冗余性和不一致性 2.数据访问 3.数据相对独立 4.完整性和原子性问题 5.并发访问异常 6.安全性问题 数据库:指的是以一定方式储存在一起,能为多个 ...
- MySQL常用命令大全
登录MySQL方法 单实例MySQL登录的方法 mysql #刚装完系统无密码情况登录方式,不需要密码 mysql -u root #刚装完系统无密码的情况登录 mysql -uroot ...
- mysql ndb 命令_Mysql入门基础命令
1 Mysql基本操作 1.1 查询当前数据库 mysql> show databases; +--------------------+ | Database | +------- ...
- 04 : mysql 基础命令操作,字符集
insert 插入讲解 : 1:创建一个表: create table test( id int(4) not null auto_increment, name char(20) not null ...
- 晨魅--MySQL常用命令
MySQL常用命令 MySQL初步命令 1 MySQL数据库基础命令 1.1 创建.查看数据库 1.1.1 查看系统数据库 SHOW DATABASES 1.1.2 创建用户数 ...
- mysql truncate很慢_mysql数据库truncate表时间长处理
[环境介绍] 系统环境:Linux + mysql 5.7.18 + 主从复制架构 [背景描述] 客户反映用在mysql数据库上truncate一个innode引擎的list分区100G左右表时,耗时 ...
- MySQL用命令窗口打开
MySQL用命令窗口打开 进入bin目录,按住shift键然后点击鼠标右键可以选择在该目录下打开命令窗口,或者在地址栏中输入cmd进入命令窗口.输入mysql -u root -p后回车,然后会提示输 ...
最新文章
- Struts2基础(1)_MVC
- AI一分钟|美国第一家!Waymo商业自动驾驶打车服务正式获批
- inux 后台执行命令
- javascript中文网学习
- 关于sendmail报错“did not issue MAIL/EXPN/VRFY/ETRN during connection to
- c++ string类的常用方法_【常用类方法】Object
- 【洛谷】普及练习场 深度优先搜索【易】
- CSRF跨站请求伪造攻击
- 谷歌开源 VR 应用
- 学生信息管理系统总结
- PackageManager获取应用列表
- 十月份推广,景城网也尝试使用QQ邮件群反的方式,那么如何 采集QQ邮箱地址呢?大部分是廊坊本地的。QQ导出好友 QQ导出通讯录 QQ邮箱采集 如何导出QQ好友
- 自己写strcmp( )函数
- MATLAB中的impixel函数——获取图像像素值
- 报错:Required String parameter 'XXX' is not present错误的几种可能性
- MacBook:如何拆卸或安装内存
- 大数据同步工具Canal
- 计算机图形学13:三维图形的几何变换
- 《程序员》2011年10期精彩内容:移动大航海时代
- AutoService注解无法生成META-INF文件
热门文章
- U盘问题,插入时只有声音,没有显示,在”计算机管理”的“磁盘管理”中,上面看不到盘符”H:”,下面可以看到”磁盘1 可移动无媒
- 1302420140137+汤毓聪+第3次实验
- 黑马程序员之 --- 集合
- 项目管理中四种常见的阶段
- QQ邮箱的订阅邮件怎么取消订阅?
- stlink 未知usb设备 设备描述符请求失败
- unity 只输入中英数_使用正则限制input框只能输入数字/英文/中文等等
- 教你快速学会设计模式
- 801计算机专业基础西北工业大学,2019西北工业大学研究生入学考试大纲801计算机专业基础...
- pcie dma 相关知识整理(xilinx平台)