事物定义
事物定义:
就是将一组SQL语句放在同一批次内去执行,
如果一个SQL语句出错,则该批次内的所有sql都将被取消执行
事物的ACID原则
(1)原子性atomicity
一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作,这就是事务的原子性
(2)一致性consistency
在事务开始之前和事务结束以后,数据库的完整性没有被破坏。[例如两账户的和不变]
(3)隔离性isolation
数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致
(4)持久性durability
事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失
事物的常用命令
1.开始事物 begin;或 start transaction;
2.提交事物 commit;
3.回滚事物 rollback;
Innodb引擎之事务提交
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('zs',2000);
INSERT INTO account(username,cash) VALUES('lisi',1000); -- 1.
set autocommit = 0; -- 2.取消自动提交机制
insert into account(username,cash) VALUES('wangwu',2000); -- 3.
START TRANSACTION; -- 4.开启事物
UPDATE account set cash = cash -500 where username = 'zs';
UPDATE account set cash = cash +500 where username = 'lisi'; -- 5.
ROLLBACK; -- 8.回滚 --6.
COMMIT; -- 6.手工提交
SELECT * FROM account;
set autocommit = 1; -- 7.开启自动提交机制
MyISAM引擎之事务失效
create table account_myasim(
id int(4) primary key auto_increment,
username varchar(32) not null,
cash int(32) not null
)engine=myisam;
insert into account_myasim(username,cash) values('zs',2000);
insert into account_myasim(username,cash) values('lisi',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;
为什么需要Mysql视图
1.不同的维护人员关注不同列的字段
2.保证信息的安全
什么叫视图
1.视图是一张 虚拟的表【不是真实存在的】
2.一张表创建多个视图
3.视图不存放数据,但是展示数据
视图实战
-- 创建视图
CREATE VIEW v_myperson as SELECT NAME,pwd FROM t_person;
-- 查询视图
SELECT * FROM v_myperson;
-- 删除视图
DROP VIEW v_myperson;
-- 修改视图
SELECT * FROM t_person;
UPDATE v_myperson SET name = 'xxxx';
核心要点:
修改视图中的数据可以影响到原表中的数据
-- 查看所有视图
SHOW TABLE STATUS WHERE COMMENT = 'view';
-- 查看所有的表和视图
SHOW TABLES;
索引
特点:
1.大大提高数据库的检索速度
2.改善数据库性能
拓展:
索引可以提高查询的效率,但是会降低增删改的效率
索引的种类
普通索引
唯一索引
主键索引
全文索引
组合索引
索引实战
步骤1:
创建表
CREATE TABLE t_user1(
id int(32),
name VARCHAR(32),
pwd VARCHAR(32),
weight varchar(32)
);
步骤2:
创建索引
-- 主键索引
ALTER TABLE t_user1 add primary key(id);
-- 唯一索引
ALTER TABLE t_user1 add UNIQUE(name);
-- 普通索引
ALTER TABLE t_user1 add INDEX(pwd);
-- 组合索引(也是普通索引)
ALTER TABLE t_user1 add INDEX(name,pwd);
步骤3:
查询索引
-- 查看所有索引
SHOW INDEX FROM t_user1;
步骤4:
删除索引
-- 删除主键索引
ALTER TABLE t_user1 DROP primary key;
-- 删除索引(name --索引名称)
DROP INDEX INDEX name on t_user1;
拓展
dos窗口 ---cmd