您的位置:首页 > 数据库 > MySQL

mysql 基础知识

2018-10-08 19:06 447 查看

事务

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

事务的特性:

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

手动开启:

begin 或者 start transaction
rollback
commit

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

-
delete
truncate
drop

每次删除条数
每次删除一行
所有数据
所有数据

是否记录事务
是(需要提交事务后才能生效,可以回滚)
否(不能回滚)
否(不能回滚)

语句类型
DML
DDL
DDL

是否触发触发器


执行后空间大小
不会减少表或索引所占用的空间
恢复到初始大小
表所占用的空间全释放掉

执行速度

较快

执行对象
table、view
table
table、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

预编译
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=?";
1234512345

执行

execute prep;
set @a=10;execute pre2 using @a;
execute pre3 using @a,@b;
123123

删除

drop prepare pre3;
11

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

本文来自 阿睿93 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/designer01/article/details/82795086?utm_source=copy

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库