事务:
一个事务的一致性
两个事务的隔离性
一条命令语句就是一个独立的事务,一个事务不能回滚另外的事务
做事务实验时要注意: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)