1. mysql 事务
参考文章:
菜鸟教程:https://www.runoob.com/mysql/mysql-transaction.html
百家号:https://baijiahao.baidu.com/s?id=1650065302592962405&wfr=spider&for=pc
csdn: https://baijiahao.baidu.com/s?id=1668737079518994520&wfr=spider&for=pc
事务的意思是一条或者是一组语句组成一个单元,这个单元要么全部执行,要么全不执行。
1.1 事务的四个特性ACID:
事务具有四个特性,也是面试常考的四个特性ACID:
A(原子性Atomicity):原子性指的是事务是一个不可分割的,要么都执行要么都不执行。
C(一致性Consistency):事务必须使得数据库从一个一致性状态,到另外一个一致性状态。
I(隔离性Isolation):指的是一个事务的执行,不能被其他的事务所干扰。
D(持久性Durability):持久性指的是一个事务一旦提交了之后,对数据库的改变就是永久的。
1.2 并发读写的问题:
脏读:当前事务中读到其他事务中未提交的数据,就是脏数据

不可重复性:事务A中先后两次读取同一个数据,但是两次读取的结果不一样。脏读与不可重复读的区别在于:前者读到的是其他事务未提交的数据,后者读到的是其他事务已提交的数据。

幻读:在事务A中按照某个条件先后两次查询数据库,两次查询结果的行数不同,这种现象称为幻读。不可重复读与幻读的区别可以通俗的理解为:前者是数据变了,后者是数据的行数变了。

1.3 隔离级别:
根据上面这三种问题,产生了四种隔离级别,表明数据库不同程度的隔离性质。

在实际的数据库设计中,隔离级别越高,导致数据库的并发效率会越低;而隔离级别太低,又会导致数据库在读写过程中会遇到各种乱七八糟的问题。
因此在大多数数据库系统中,默认的隔离级别时读已提交(如Oracle)或者可重复读RR(MySQL的InnoDB引擎)。
2. ALTER 命令
修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令
2.1 删除/添加/修改表字段
2.1.1 删除表字段:
alter table 表名 drop 字段名
eg. 删除 testalter_tbl 表中的 i 字段。
alter table testalter_tbl drop i;
2.1.2 添加表字段:
alter table 表名 add 字段名 字段的描述
eg. 在 testalter_tbl 表中添加一个字段 n 。
alter table testalter_tbl add n int not null auto_increment primary key;
2.1.3 在选定的位置添加表字段:
方式一:通过 FIRST 关键字,添加到首位
eg.
alter table testalter_tbl add q varchar(20) first;
方式二:通过 AFTER A(A为已存在的字段名),在字段A后面新增字段
eg.
alter table testalter_tbl add p char(8) after n;
FIRST 和 AFTER 关键字可用于 ADD 与 MODIFY 子句,所以如果你想重置数据表字段的位置就需要先使用 DROP 删除字段然后使用 ADD 来添加字段并设置位置。
2.2 修改字段类型及名称:
如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
(1)通过 modify 修改字段类型
alter table 表名 modify 字段名 新的字段类型
eg.
alter table testalter_tbl modify j int;
(2) 通过 change 修改字段名称和类型
alter table 表名 change 想要改变的字段名 新的字段名 字段的类型
eg. 修改 testalter_tbl 表 的 j 字段为 i , i 的字段数据类型为 varchar(1) 。
alter table testalter_tbl change j i varchar(1);
eg2. 修改 null 值 和 设置默认值:
当你修改字段时,你可以指定是否包含值或者是否设置默认值。
以下实例,指定字段 j 为 NOT NULL 且默认值为100 。
mysql> ALTER TABLE testalter_tbl
-> MODIFY j BIGINT NOT NULL DEFAULT 100;
如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。
2.3 修改字段默认值
2.3.1 修改默认值
语法:
alter table 表名
alter 字段名 set default 默认值;
eg. 将 test_tbl 表的 backup 字段设置默认值 'test'
alter table test_tbl
alter backup set default 'test';
2.3.2 删除默认值
语法:
alter table 表名
alter 字段名 drop default;
eg. 删除 test_tbl 表的 backup 字段的默认值:
alter table test_tbl
alter backup drop default;
2.3.3 修改数据表类型(存储引擎)
alter table 表名
engine = 引擎名称
eg.
alter table test_tbl
engine = myisam;
查看数据表的内容:
show table status like '数据表名'\G
注意:最后并没有引号,直接回车就可以了。
2.4 修改数据表的名称
语法:
alter table 表名
rename to 新的数据表名
eg. 将 test_tbl 数据表的名称修改为 alter_tbl
alter table test_tbl
rename to alter_tbl;
2.5 删除外键约束
语法:
alter table tableName drop foreign key keyName;
3. 索引
4. 临时表
5. 复制表
关系型数据库和非关系型数据库对比:https://baijiahao.baidu.com/s?id=1668737079518994520&wfr=spider&for=pc
本文深入探讨MySQL事务的ACID特性,解决并发读写问题的隔离级别,并详细讲解ALTER命令在修改表结构中的应用,包括字段的增删改与数据表类型的调整。
3159

被折叠的 条评论
为什么被折叠?



