MySQL(11):视图、事务

    1.视图

    对于复杂的查询,在多次使用后,维护是一件非常麻烦的事情,这可以通过定义视图解决。视图本质就是对查询的一个封装。

    (1)定义视图

create view stuscore as
select students.*,scores.score from scores
inner join students on scores.stuid=students.id;

   (2) 视图的用途就是查询

select * from stuscore;

    (3)修改视图



    2.事务的定义

    当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回,使用事务可以完成退回的功能,保证业务逻辑的正确性。

    使用事务的情况:当数据被更改时,包括insert、update、delete。

    事务四大特性(简称ACID):

    (1)原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行;

    (2)一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致;

    (3)隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的;

    (4)持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障

    要求:表的类型必须是innodb或bdb类型,才可以对此表使用事务,一般我们常用的引擎多为innodb。


    3.事务的使用

查看表的创建语句
show create table students;

修改表的类型
alter table '表名' engine=innodb;

事务语句
开启begin;
//事务被开启后,所操作的数据表的行会被行级锁锁定,无法同时被其他终端更改
提交commit;
回滚rollback;
//只有commit或rollback后,相应的行级锁才会被打开
注意:commit后rollback并不能生效,rollback后commit也不能生效

    (1)示例1

    1)步骤1:打开两个终端,连接mysql,使用同一个数据库,操作同一张表

终端1:
    select * from students;
------------------------
终端2:
begin;
insert into students(sname) values('张飞');

    2)步骤2

终端1:
select * from students;

    3)步骤3

终端2:
commit;
------------------------
终端1:
select * from students;

    (1)示例2 

    1)步骤1:打开两个终端,连接mysql,使用同一个数据库,操作同一张表

终端1:
select * from students;
------------------------
终端2:
begin;
insert into students(sname) values('张飞');

    2)步骤2

终端1:
select * from students;

    3)步骤3

终端2:
rollback;
------------------------
终端1:
select * from students;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值