第五章 事务 视图 索引 备份和恢复
1.概念
事务:就是一堆操作的集合,他们同生共死。要么都执行成功,要么都执行失败
2.ACID
A:原子性 ---完整的,不可分割的
C: 一致性 ---事务执行完毕后,数据的状态是一致的()
I: ISOLation 隔离性 ----两个事务执行互不影响
D: 持久性 ---事务执行完后,对数据的影响是永久的。
3.事务操作的关键字
自动提交事务开关set autocommit=1
开始事务 start transaction /begin
提交事务 commit
回滚事务 rollback
set autocommit=1
注意:只有事务的开启 没有事务的关闭,只要开启了事务,那么只有两个出口,要么提交要么回滚,默认情况下,每条单独的语句可视为一个事务
DELIMITER $$ CREATE PROCEDURE usp_transfer() BEGIN ##错误总数默认是0DECLARE t_error INTEGER DEFAULT 0; ##语法错误 form 违反了约束## continue 继续 hanlder 执行 并且对 t_error重新赋值为1DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; SET autocommit=0;START TRANSACTION; UPDATE bank SET balance=balance-100 WHERE cid=1; UPDATE bank SET balance =balance+100 WHERE cid=2;IF t_error > 0 THEN ROLLBACK; ELSE COMMIT; END IF; SET autocommit=1; END$$ DELIMITER ; CALL test_sp800()
4:定义一个存储过程的最简易的语法是
delimiter $$ create procedure usp_stulist() beginselect * from student end$$ delimiter;
5:例题:银行转账 一个存户的余额减少 一个余额增加
##先创建表CREATE TABLE Bank ( cid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, cname VARCHAR (32) NOT NULL , balance DOUBLE NOT NULL )##伪造数据 INSERT INTO Bank VALUES(1,'李小龙',1000); INSERT INTO Bank VALUES(2,'巩俐',1); INSERT INTO Bank VALUES(3,'张靓颖',1000);DROP PROCEDURE usp_transfer;DELIMITER $$ #创建存储过程 CREATE PROCEDURE usp_transfer() BEGIN ##错误总数默认是0DECLARE t_error INTEGER DEFAULT 0; ## continue 继续 hanlder 执行 并且对 t_error重新赋值为1DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; SET autocommit=0;START TRANSACTION; UPDATE bank SET balance=`balance`-100 WHERE cid=1; UPDATE bank SET balance=`balance`+100 WHERE cid=2;IF t_error > 0 THEN ROLLBACK; ELSE COMMIT; END IF; SET autocommit=1; END$$ DELIMITER; CALL usp_transfer()
1.视图: 就是一张虚拟表,本质上存储的是一对SQL的集合
2.定义视图的语法:
create view VW_stulist(VW_视图的功能)
as
sql语句
小Tip:当多表中有同名列的时候,在视图这个虚拟表中,只能有一列。手工指定该列是哪个表的
3.视图的使用 和检索基本表一样,直接通过select
select * from VW_stulist
4.删除视图
drop view 视图名
drop table
drop database
drop index
drop constraint
归根结底:drop 删除是结构 delete 删除数据
5.查看所有库所有视图
5.1.切换到系统数据库
use information_schema
5.2.select * from views \G;
6.查看当前库的所有视图
show tables status where comment='view'
7.视图注意事项
1)视图可以查询多表数据
2)视图可以嵌套
3)update,insert,delete不能封装成视图内容,通过图形化界面可以操作数据(操作视图数据,影响的是基本表)。
4)删除视图数据的时候,有一定的限定,数据结果来源于多表的时候,不能删除
三:索引:是一种有效的组合数据的方式,为快速查找到指定记录,是一把双刃剑有利也有弊,如果使用不当 反而会降低索引性能,
1.索引是占硬盘空间 ,也是按页存放的 。 思考题:一个索引页,(数据页) 占用多少个字节 。SQL Server 8192个字节
2.索引:是一种有效组合数据的方式,为了快速查找指定记录
3.唯一索引: 主键索引:如果一列是主键列,那么该列自动会提升成主键索引。
4.索引分类
普通索引
唯一索引
主键索引
复合索引
全文索引 场景:一篇文章保存字段 content:1万个字 mysql like
搜索引起框架: lucene solr etalishsearch
空间索引
建立索引的原则
1.在列基数比较少的列上,不适合创建索引
2.在不经常使用的列 上,建立索引没有意义
3.在频繁搜索的列上,适合建立索引
小Tip:是不是一张表上,建立的索引越多,检索越快?
解析:不是,
其实,索引是把双刃剑(利弊共存),如果使用不当,反而会降低检索性能。
索引会失效吗?会的,建议有索引的列排在前面进行限定检索,没有索引的排在后面。
select * from student
where sex='0' and studentname='张靓颖'
select * from student
where studentname='张靓颖' and sex='0'
索引重建:数据库系统使用时间长了,难免会不停的删减数据,这时候就要进行索引重建。丢弃掉系统中
已经弃用的数据。给其他有效数据腾出空间。
创建索引:
语法
删除索引:
删除索引:语法
DROP INDEX index_name ON table_name
删除索引需要记住:
1:删除表时,该表的所有的索引将全部被同时删除
2:删除表中的列时,如果要删除的列为索引的组成部分,则该列也会从索引中删除,如果组成的索引的所有的列表都被删除,则整个索引将被删除
查看索引:语法:
SHOW INDEX FROM table_name;
在查询的结尾后加“\G”,表示将结果集按列表示,在表中列较多,需要看表中的值列非常有用
四:数据库的备份和恢复:
备份的重要性:
mysqldump -uroot -hlocalhost -p myschool>d:\\1.sql
恢复
mysql -uroot -proot myschool<d:\\1.sql
五.权限的事情 创建用户 分配权限
root
root
授权
1.我想建立一个用户 bigbrother
create user bigbrother identified by '1'
2.我想授权给他 可以对MySchool的student表进行 update ,delete ,insert
grant 具体权限名称 update,delete,insert on myschool.student to bigbrother
直接给用户一个角色 ,角色可以绑定N个权限。就相当于用户有了N个权限
用户-----------角色--------------->权限
注意:\G为大写字母,不可使用小写;
改变结果的输出方式,控制台有区别,在图形化工具中没有区别
其实数据库的数据是按照页来存放的,其实索引也是按页存放的 所以本质上索引也占硬盘空间
、
转载于:https://www.cnblogs.com/3020815dzq/p/8465832.html
第五章 事务 视图 索引 备份和恢复相关推荐
- mysql如何进行视图恢复_mysql事务 视图 索引 备份和恢复
事务 1.事务: 概念:是作为单个逻辑工作单元执行的一系列操作 多个操作作为一个整体向系统提交,要么都执行,要么都不执行 事务是一个不可分割的工作逻辑单元 默认情况下 , 每条单独的SQL语句视为一个 ...
- 【数据库】第三章 事务、索引和SQL优化
[数据库]第三章 事务.索引和SQL优化 文章目录 [数据库]第三章 事务.索引和SQL优化 一.事务 1.原子性 2.持久性 3.隔离性 4.一致性 二.索引 1.介绍 2.分类 3.底层实现 4. ...
- mysql第五章事务_mysql 第五章 备份恢复
mysql 第五章 备份恢复 一.备份策略***** 1.每周一次全备,每天一次增量备 2.每天检查备份是否成功 3.每季度进行备份恢复演练 4.设置 -master-data=2 (记录备份的GTI ...
- Linux || 数据库事务 视图 索引
文章目录 事务 什么是事务 事务四大特性 ACID 隔离级别 事务命令 视图 定义视图 使用视图 更新视图 索引 定义 创建索引 联合索引(复合索引) 最左原则 聚簇索引 innoDB表的聚簇索引 非 ...
- 第五章 事务控制语言(Transaction Control Language,TCL)
事务 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的.而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚.所 ...
- SQL基础教程MICK版 ···第五章总结
SQL基础教程MICK版 ···第五章总结 视图 子查询 标量子查询 标量子查询.没有用标量子查询.常量的比较总结 关联子查询 自己的困惑 视图 1.视图的概念 1)从SQL的角度来看视图就是一张 ...
- MS SQL入门基础:备份和恢复系统数据库
系统数据库保存了有关SQL Server 的许多重要数据信息,这些数据的丢失将给系统带来极为严重的后果,所以我们也必须对系统数据库进行备份.这样一旦系统或数据库失败,则可以通过恢复来重建系统数据库.在 ...
- MySQL 06 事务、视图、索引、备份和恢复
MySQL 06 事务.视图.索引.备份和恢复 文章目录 MySQL 06 事务.视图.索引.备份和恢复 一.学习目标 二.事务 2.1什么是事务 2.2事务的特性 2.3为什么需要事务 三.使用事务 ...
- mysql中视图备份_MySQL 事务、视图、索引、备份和恢复
事务 为什么需要事务: 转账.总量不变,但其他值进行变化. 事务是什么: 作为单个逻辑工作单元执行的一系列操作. 多个操作作为一个整体向系统提交,要么执行/不执行. 事务是一个不可分割的工作逻辑单元. ...
- MySQL学习思维导图(MySQL简介、SQL基础命令、约束、单表查询、多表查询、内置函数、存储过程、视图、事务、索引)
MySQL学习思维导图 内容包括:MySQL简介.SQL基础命令.约束.单表查询.多表查询.内置函数.存储过程.视图.事务.索引 文章目录 MySQL学习思维导图 一.MySQL简介 二.SQL基础命 ...
最新文章
- postfix和dovecot服务异常,重启服务后又会自动停掉的解决办法
- maven整合@data注解_SpringBoot 整合 Dubbo实践(实用文章)
- java rxtx version_java – 不匹配的RXTX版本
- Python练习3-XML-RPC实现简单的P2P文件共享
- 高并发编程-Daemon Thread的创建以及使用场景分析
- 全链路压测平台(Quake)在美团中的实践
- python模拟页面调度LRU算法
- WordPress登陆插件Erphplogin Pro QQ登陆/微博/微信登录/弹窗登录
- 第七天20160803
- Excel条件格式化(conditional formatting)应用
- H2最完整的资料下载地址:
- matlab find返回空集,Model.find()在猫鼬中返回空
- 计算机组成原理——硬布线控制器设计(1)
- 双十一淘宝天猫突破2000亿元大关,马云是如何布局战略规划?
- Win11找不到xinput1_3.dll怎么办?
- origin做双Y轴折线图的具体步骤
- 【unknow ssid】两种办法获取WIFI名称99%可解决
- Linux下性能分析工具
- 汽车诊断仪常用特殊功能-ABS排气
- vue路由——基础篇(二)
热门文章
- Atitit webservice发现机制 WS-Discovery标准的规范attilax总结
- atitit.bsh BeanShell 的动态脚本使用java
- Atitit.进程管理常用api
- atitit.DD dragdrop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
- atitit.gui界面纵向居中总结
- paip.基于HTML gui界面的javascript JS实现SLEEP。。
- PAIP.ASP.NET FTP SKIPLIST
- 2021年最好用的5个股票API
- Rust: Path等
- 【优化调度】基于matlab蚁群算法求解无等待流水线调度优化问题【含Matlab源码 1516期】