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

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

2006-10-06 21:34 796 查看
事务:
一个事务的一致性
两个事务的隔离性

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

做事务实验时要注意: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)

 

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