一.视图
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;