Mysql视图与事务,体系结构与存储引擎

一.视图

1.视图定义

虚拟存在的表。

2.创建视图

CREATE view 视图名 as select 字段名 from 表名;

3.查看视图

select * from 视图名;

4.修改视图

update 视图名 set 字段名='aaaa' where id = 3;

5.查看视图列表

show tables;

二.Mysql体系结构

在这里插入图片描述

1.mysql体系结构有哪些模块?

sql接口模块、池子模块、解析模块、优化模块、缓冲模块、引擎模块、磁盘模块等…

三.Mysql存储引擎

1.查看数据库支持的存储引擎列表

show engins;

2.查看默认的存储引擎

show variables like%storage_engine%;

3.存储引擎间的区别

Mysql存储引擎一般有常见的两种:InnoDB、MyIsam
InnoDB引擎和MyIsam引擎的区别:Innodb引擎支持事务,MyIsam引擎不支持事务,Innodb引擎支持外键,MyIsam引擎不支持外键。
在这里插入图片描述

四.Mysql事务

1.事务定义

事务就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次所有SQL语句都将取消执行。

2.事务ACID原则

(1)原子性

一个事务要么全部完成提交,要么全部失败回滚,不能只执行其中的 一部分操作,这就是事务的原子性。

(2)一致性

在事务开始之前和事务结束以后,数据库的完整性没有被破坏。

(3)隔离性

数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而产生的数据不一致。

(4)持久性

事务处理结束后,对修改的数据就是永久的,即使系统故障也不会丢失。

3.事务示例

(1)准备环境

由于Mysql是默认自动提交事务的,所以在研究事务的时候需要首先关闭自动提交模式。

SET AUTOCOMMIT = 0;	//关闭自动提交模式
SET AUTOCOMMIT = 1;	//开启自动提交模式

(2)常用命令

开启事务

START TRANSACTION

提交事务

COMMIT

回滚事务

ROLLBACK

(3)Innodb引擎之事务

案例1-事务提交情况
create table account(
  id int(4) primary key auto_increment,
  username varchar(32) not null,
  cash int(32) not null
)

insert into account(username,cash) values('A',2000);
insert into account(username,cash) values('B',1000);

set autocommit = 0;

start TRANSACTION;
update account set cash = cash -500 where username = 'A';
update account set cash = cash +500 where username = 'B';
COMMIT;

set autocommit = 1;
select * from account;
案例2-事务回滚情况
delete from account where  username = 'A';
delete from account where  username = 'B';

create table account(
  id int(4) primary key auto_increment,
  username varchar(32) not null,
  cash int(32) not null
)

insert into account(username,cash) values('A',2000);
insert into account(username,cash) values('B',1000);

set autocommit = 0;

start TRANSACTION;
update account set cash = cash -500 where username = 'A';
update account set cash = cash +500 where username = 'B';
ROLLBACK;
COMMIT;
set autocommit = 1;
select * from account;

(4)MyIsam引擎之事务

create table account_myasim(
  id int(4) primary key auto_increment,
  username varchar(32) not null,
  cash int(32) not null
)engine=myisam default charset=utf8;

insert into account_myasim(username,cash) values('A',2000);
insert into account_myasim(username,cash) values('B',1000);
set autocommit = 0;

start TRANSACTION;
update account_myasim set cash = cash -500 where username = 'A';
update account_myasim set cash = cash +500 where username = 'B';
select * from account;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值