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

第五章 事务 视图 索引 备份和恢复相关推荐

  1. mysql如何进行视图恢复_mysql事务 视图 索引 备份和恢复

    事务 1.事务: 概念:是作为单个逻辑工作单元执行的一系列操作 多个操作作为一个整体向系统提交,要么都执行,要么都不执行 事务是一个不可分割的工作逻辑单元 默认情况下 , 每条单独的SQL语句视为一个 ...

  2. 【数据库】第三章 事务、索引和SQL优化

    [数据库]第三章 事务.索引和SQL优化 文章目录 [数据库]第三章 事务.索引和SQL优化 一.事务 1.原子性 2.持久性 3.隔离性 4.一致性 二.索引 1.介绍 2.分类 3.底层实现 4. ...

  3. mysql第五章事务_mysql 第五章 备份恢复

    mysql 第五章 备份恢复 一.备份策略***** 1.每周一次全备,每天一次增量备 2.每天检查备份是否成功 3.每季度进行备份恢复演练 4.设置 -master-data=2 (记录备份的GTI ...

  4. Linux || 数据库事务 视图 索引

    文章目录 事务 什么是事务 事务四大特性 ACID 隔离级别 事务命令 视图 定义视图 使用视图 更新视图 索引 定义 创建索引 联合索引(复合索引) 最左原则 聚簇索引 innoDB表的聚簇索引 非 ...

  5. 第五章 事务控制语言(Transaction Control Language,TCL)

    事务 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的.而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚.所 ...

  6. SQL基础教程MICK版 ···第五章总结

    SQL基础教程MICK版 ···第五章总结 视图 子查询 标量子查询 标量子查询.没有用标量子查询.常量的比较总结 关联子查询 自己的困惑 视图 1.视图的概念 ​ 1)从SQL的角度来看视图就是一张 ...

  7. MS SQL入门基础:备份和恢复系统数据库

    系统数据库保存了有关SQL Server 的许多重要数据信息,这些数据的丢失将给系统带来极为严重的后果,所以我们也必须对系统数据库进行备份.这样一旦系统或数据库失败,则可以通过恢复来重建系统数据库.在 ...

  8. MySQL 06 事务、视图、索引、备份和恢复

    MySQL 06 事务.视图.索引.备份和恢复 文章目录 MySQL 06 事务.视图.索引.备份和恢复 一.学习目标 二.事务 2.1什么是事务 2.2事务的特性 2.3为什么需要事务 三.使用事务 ...

  9. mysql中视图备份_MySQL 事务、视图、索引、备份和恢复

    事务 为什么需要事务: 转账.总量不变,但其他值进行变化. 事务是什么: 作为单个逻辑工作单元执行的一系列操作. 多个操作作为一个整体向系统提交,要么执行/不执行. 事务是一个不可分割的工作逻辑单元. ...

  10. MySQL学习思维导图(MySQL简介、SQL基础命令、约束、单表查询、多表查询、内置函数、存储过程、视图、事务、索引)

    MySQL学习思维导图 内容包括:MySQL简介.SQL基础命令.约束.单表查询.多表查询.内置函数.存储过程.视图.事务.索引 文章目录 MySQL学习思维导图 一.MySQL简介 二.SQL基础命 ...

最新文章

  1. postfix和dovecot服务异常,重启服务后又会自动停掉的解决办法
  2. maven整合@data注解_SpringBoot 整合 Dubbo实践(实用文章)
  3. java rxtx version_java – 不匹配的RXTX版本
  4. Python练习3-XML-RPC实现简单的P2P文件共享
  5. 高并发编程-Daemon Thread的创建以及使用场景分析
  6. 全链路压测平台(Quake)在美团中的实践
  7. python模拟页面调度LRU算法
  8. WordPress登陆插件Erphplogin Pro QQ登陆/微博/微信登录/弹窗登录
  9. 第七天20160803
  10. Excel条件格式化(conditional formatting)应用
  11. H2最完整的资料下载地址:
  12. matlab find返回空集,Model.find()在猫鼬中返回空
  13. 计算机组成原理——硬布线控制器设计(1)
  14. 双十一淘宝天猫突破2000亿元大关,马云是如何布局战略规划?
  15. Win11找不到xinput1_3.dll怎么办?
  16. origin做双Y轴折线图的具体步骤
  17. 【unknow ssid】两种办法获取WIFI名称99%可解决
  18. Linux下性能分析工具
  19. 汽车诊断仪常用特殊功能-ABS排气
  20. vue路由——基础篇(二)

热门文章

  1. Atitit webservice发现机制 WS-Discovery标准的规范attilax总结
  2. atitit.bsh BeanShell 的动态脚本使用java
  3. Atitit.进程管理常用api
  4. atitit.DD dragdrop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
  5. atitit.gui界面纵向居中总结
  6. paip.基于HTML gui界面的javascript JS实现SLEEP。。
  7. PAIP.ASP.NET FTP SKIPLIST
  8. 2021年最好用的5个股票API
  9. Rust: Path等
  10. 【优化调度】基于matlab蚁群算法求解无等待流水线调度优化问题【含Matlab源码 1516期】