133 MySQL视图、事务、索引(都很重要)

目录

  • 一、视图:view

    • 视图的增删改查
  • 二、事务
    • 事务的四大特性
  • 三、索引

一、视图:view

  1. 视图是存在内存中的临时表
  2. 视图的创建依赖select语句,所以就是select语句操作的结果形参的表
  3. 视图支持对数据的增删查改
  4. 视图不允许对视图表的字段做修改
  5. 视图不仅支持创建,也支持更新与删除
# 数据依赖:单表emp

# 语法
# 创建视图
mysql>: create view 视图名[(别名们)] as select 语句;
eg>: create view v1 as select dep, max(salary) from emp group by dep;

# 创建或替换视图
mysql>: create or replace view 视图名[(别名们)] as select 语句;
eg>: create or replace view v1(dep_name, max_salary) as select dep, max(salary) from emp group by dep;

# 修改视图
mysql>: alter view 视图名[(别名们)] as select 语句;
eg>: alter view v1(name, salary) as select dep, max(salary) from emp group by dep;

# 删除视图
mysql>: drop view 视图名
eg>: drop view v1;

视图的增删改查

视图的增删改操作可以直接映射给真实表(本质就是对真实表进行操作)

# 操作视图等于操作真实表

# 增,增加数据
insert into v1(name,salary) values('yangsir', 1.11);    

# 删,删除视图记录
delete from v1 where id=1;

# 改,修改视图数据
update v1 set salary=salary+1 where id=1;

# 查, 查看视图数据
select * from v1;

# 总结:操作视图,会影响真实表,反之也会影响
select * from emp;

总结:操作视图,会影响真实表,反之也会影响视图

二、事务

  • 事务:通常一些业务需要多条sql参与,参与的sql会形参一个执行整体,该整体我们就称之为 事务
  • 简而言之:事务 - 就是保护多条执行的sql语句

事务的四大特性

  1. 原子性:事务是一组不可分割的单位,要么同时成功,要么同时不成功
  2. 一致性:事物前后的数据完整性应该保持一致(数据库的完整性:如果数据库在某一时间点下,所有的数据都符合所有的约束,则称数据库为完整性的状态)
  3. 隔离性:事物的隔离性是指多个用户并发访问数据时,一个用户的事物不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离
  4. 持久性:持久性是指一个事物一旦被提交,它对数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
# 语法
begin;  # 开启事务
update emp set salary=salary+1 where id=2;
update emp set salary=salary-1 where id=3;
commit; # 确认无误,提交事务

rollback;   # 确认有误,回滚

三、索引

索引就是 键 - key

索引可以极大的加快查询速度

1)键 是添加给数据库表的 字段 的
2)给表创建 键 后,该表不仅会形参 表结构、表数据,还有 键的B+结构图
3)键的结构图是需要维护的,在数据完成增、删、改操作时,只要影响到有键的字段,结构图都要维护一次
    所以创建键后一定会降低 增、删、改 的效率
4)键可以极大的加快查询速度(开发需求中,几乎业务都和查有关系)
5)建立键的方式:主键、外键、唯一键、index(普通索引,加快普通数据的查询速度)

原文地址:https://www.cnblogs.com/XuChengNotes/p/11595343.html

时间: 2024-10-10 05:03:05

133 MySQL视图、事务、索引(都很重要)的相关文章

mysql 视图 事务 索引

为什么需要有视图 * 对于复杂的查询,往往是有多个数据表进行关联查询而得到,而这种语句往往比较复杂,也可能非常频繁的使用. 比如这样的SQL语句 select goods.name,goods_cates.name,goods_brands.name from goods join goods_cates on goods.cate_id = goods_cates.id join goods_brands on goods.brand_id = goods_brands.id; 为了简化用户复

mysql(视图 事务 索引 外键)

视图 视图本质就是对查询的封装 创建视图(定义视图 起名以v_开头) create view v_students as select classes.name as c_name ,students.* from students inner join classes on students.cls_id=classes.id; 查看视图 select * from v_students; 删除视图 drop view v_students; 事务 事务具有ACID特性: 原子性(A,atom

Mysql建了索引查询很慢

遇到一个问题,有几个结构一个的查询,表的索引建的也一样,但是有的查询很快,有的却很慢,需要半分钟以上才能执行完. 查看执行计划,并没有什么区别.找了很久原因才发现是主查询和子查询所涉及的表的字符编码不一致.改为一致后,问题解决. sql如下: delete from t_diag_detection WHERE reportName NOT IN (SELECT reportName FROM t_diag_reportinfo) 原因是 t_diag_detection表的字符编码是utf8m

重置了下系统好多关于mysql密码的文章都很渣拷分好的备用

方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 方法2:用mysqladmin mysqladmin -u root password "newpass" 如果root已经设置过密码,采用如下方法 mysqladmin -u root password oldpass "newpass" 方法3: 用UPDA

43 MySQL视图、触发器、事务、存储过程、函数

视图 1.什么是视图 通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如需频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 注意: 1)在硬盘中,视图只有表结构文件,没有表数据文件 2)视图通常是用于查询,尽量不要修改视图中的数据 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; -- 删除视图 drop

mysql中的索引、触发器、和事务

一.索引 1.什么是索引 如果把表看做一本书,索引就好像书里的目录或者书签,能帮助你快速找到你要检索的内容,所以叫做索引. 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如 果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合 要求的记录.表里面的记录数量越多,这个操作的代价就越高.如果作为搜索条件的列上已 经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置.如果表有1000个 记录,通过索引查找记录至少要比

mysql 深入视图和索引

版权声明:欢迎交流! 目录(?)[+] 注:求职季,巩固下MySQL知识! 1.视图 视图又叫虚表.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成. 视图主要有以下作用: 1.安全,权限控制.一些数据表有着重要的信息.有些字段是保密的,不能让用户直接看到.这时就可以创建一个视图,在这张视图中只保留一部分字段.这样,用户就可以查询自己需要的字段,不能查看保密的字段. 2.性能,

事务、视图和索引

今天我们学习了事务.视图和索引!!这是一个很神奇的东西!我们先来说说最神奇的事务吧,什么叫事务呢?事务是一个不可分割的整体,事务中的多个执行过程,同生共死.要么都执行成功,要么都执行失败.(一荣俱荣,一损俱损) 事务有4个神奇的特性: ACID原则 原子性(Atomicity ) 一致性( Consistency ) 隔离性( Isolation) :两个事务之间 永久性(Durabilily) 事务分类 显式事务;自己写的事务都是显式事务 隐式事务 自动提交事务 视图! 如何创建视图 Crea

【面试】MySQL的事务和索引

MySQL事务 MySQL事务主要用于处理操作量大,复杂度高的数据. 比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这些数据库操作语句就构成一个事务. (1)在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务. (2)事务处理可以用来维护数据库的完整性,保证成批的sql语句要么全部执行,要么全部不执行. (3)事务用来管理insert,update,delete语句. 一般来说,事务必须满足4个条件(ACID