09月12日学习杂记(MYSQL初步2)

本文详细介绍了MySQL中事务的基本概念及其操作方法,包括不同事务隔离级别的设置与影响,并通过具体实验进行了验证。此外,还讲解了如何创建及使用存储过程来提高数据处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务:
一个事务的一致性
两个事务的隔离性

一条命令语句就是一个独立的事务,一个事务不能回滚另外的事务

做事务实验时要注意:MyISAM   Innodb;

create table student(id int,name varchar(20)) engine=innodb; 
设置类型为INNODB,这样可以应用事务,既使自动提交打开也没有用,也就是说当有BEGIN的时候,COMMIT是什么状态无所谓;但是COMMIT为零的时候,单独一条语句不会被自动提交

修改表的存储类型
ALTER TABLE t ENGINE = INNODB;
ALTER TABLE t ENGINE = BDB;

修改表的ID为自动增长类型的:
自动增长列,指定一列名,和为主键加一个空值都可以
alter table student modify id int primary key auto_increment;

SHOW VARIABLES:             显示所有变量
select @@tx_isolation:      显示事务的隔离级别
set TRANSACTION ISOLATION LEVEL SERIALIZABLE;(设置事务的隔离级别)
SHOW TABLE STATUS;          显示表的属性(包括用什么类型存储的)
DELIMITER:定界符            为环境设定分界符(例:如果DELIMITER //,则设定//为分界符)

实验一:(默认级别REPEATABLE READ)
实验二:(隔离级别为SERIALIZABLE)
实验三:(隔离级别为READ COMMITTED)
实验四:(隔离级别为READ UNCOMMITTED)

存储过程与函数:
如果返回两个以上的值,用过程,如果返回一个用函数

==========================================================================
定义存储过程:
mysql> create procedure initid(out theid int,thename varchar(10))
    -> begin
    -> insert into student(name) values(thename);
    -> select max(id) into theid from student;
    -> end
    -> //
Query OK, 0 rows affected (0.00 sec)

===========================================================================
执行存储过程:
mysql> delimiter ;
mysql> call initid(@a,'abc');
Query OK, 0 rows affected (0.00 sec)

============================================================================
执行结果如下:
mysql> select @a
    -> ;
+------+
| @a   |
+------+
| 8    |
+------+
1 row in set (0.00 sec)

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值