mysql 基础知识

事务

  • innodb支持事务,在执行事务的时候会记录事务日志

事务的特性:

  • 原子性:要么都执行,要么都不执行
  • 一致性:保证数据业务上一致。数据库的完整性没有被破坏。表示写入的资料必须完全符合所有的预设规则
  • 持久性:一旦事务提交,对数据的修改是永久的
  • 隔离性:不同事务间相互隔离,在并发情况下不会因为交叉执行导致数据不一致
    • 如果两个事务同时修改一个表,可能会导致其中一个修改挂起

手动开启:

  • begin 或者 start transaction
  • rollback
  • commit

自动开启

SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交

delete truncate drop

-deletetruncatedrop
每次删除条数每次删除一行所有数据所有数据
是否记录事务是(需要提交事务后才能生效,可以回滚否(不能回滚)否(不能回滚)
语句类型DMLDDLDDL
是否触发触发器
执行后空间大小不会减少表或索引所占用的空间恢复到初始大小表所占用的空间全释放掉
执行速度较快
执行对象table、viewtabletable、view
删除内容只删除数据只删除数据(表结构及其列、约束、索引等保持不变)整个表(结构、数据、约束(constrain),触发器(trigger)索引(index))
FOREIGN KEY 约束的表支持不支持??
是否支持where支持不支持不支持
  • truncate为什么比delete快:delete每次只删除一行,每行记录事务日志,truncate释放存储表数据所用的数据页来删除数据
  • delete会记录事务日志,同时也会记录二进制日志。drop和truncate只会记录二进制日志
  • 二进制日志也叫作变更日志,主要用于记录修改数据或有可能引起数据改变的mysql语句,主要用于数据库恢复和主从复制

日志:http://www.mamicode.com/info-detail-2087669.html
delete、truncate、drop:https://www.cnblogs.com/zhizhao/p/7825469.html

外键

  • t2上有外键,t1为外键主表,外键主表t1上不能使用truncate,t2上可以使用truncate
  • t2的t_id上有外键,即使没有索引,也会在t_id上建立索引
CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 CREATE TABLE `t2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `t_id` int(11) DEFAULT NULL,
  `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  constraint `fk` foreign key (`t_id`) references `t1`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

预编译

prepare prep from "select count(*) from test2";
prepare pre2 from "select * from test2 where a=?";
set @a="select * from test2"; 
prepare pre1 from @a;execute pre1;
prepare pre3 from "select * from test2 where a=? and b=?";
  • 执行
execute prep;
set @a=10;execute pre2 using @a;
execute pre3 using @a,@b;
  • 删除
drop prepare pre3;

https://blog.csdn.net/chinayuy/article/details/5425886

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值