视图、事物、索引

        1.视图:
            1.什么是视图,有什么用?
                视图是通过select查询出来的结果集,是一个虚拟的表,当在查看复杂的表时
                可创建视图方便二次查看,视图封装了对多张基本表的复杂操作,简化用户操作

            2.视图的特点:
                视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的
                数据(基本表数据发生了改变,视图也会跟着改变)
            3.定义视图:
                语法:create view 视图名称 as 查询语句
                    例:create view v_goods as (select g.id,g.name,c.name as "cate_name",b.name as "brand_name",g.price,g.is_show from goods as g inner join goods_cates as c inner join goods_brands as b on g.cate_id=c.id and g.brand_id=b.id);
            4.使用视图:
                1.使用视图: select * from 视图名称
                2.删除视图:drop view 视图名称
            5.视图的优缺点:(面试题)
                1.优点:
                    1.简化查询操作,对于复杂的查询,往往是由多个数据表进行关联而得到,
                    对于这个复杂的查询结果保存为一个视图,便于下一次查询时简化查询操作
                    2.逻辑上的独立性,屏蔽了真实表结构更改带来的影响
                    3.视图能够对机密数据提供一定的安全保护,因为视图是虚拟的,物理上是
                    不存在的,我们可以将基表中重要的字段不给用户查看
                2.不足:
                    1.性能差,对视图的查询最终转换为对基表的查询,如果这个视图由多个复
                    杂的表查询所定义,那么即使是视图查询一个简单的,也会花费一定时间
                    2.额外增加数据库的复杂度,比如有50个基本表,就得要50 个视图 一共
                    就有100个表了

        2.事物:
            1.事物是什么?
                事物是一个操作序列,这些操作要么都执行,要么都不执行,他是一个不可分割
                的执行单位
            2.事物的ACID特性(面试题)
                1.原子性(Atomic):语句不可分割,要么同时执行,要么同时不执行
                2.一致性(Consistency):数据库总是从一个一致性的状态转换到另一个一致性
                的状态,(也可以说是从一个预期性的状态到另一个预期性的状态,比如银行取钱,两个账户预期总和都是600,一个用户有100,另一个有500,现在要从有500的用户转100给另一个100的用户,到最后他们两者的预期总和应该还是600,这就是所谓的一致性,要么都有,要么都没有)
                3.隔离性(lsolation):一个事物所做的修改在最终提交前,对其他事物是不可
                见的
                4.持久性(Durability):一旦事物提交,其所做的修改会永久保存到数据库中
            3.mysql事物的使用:
                1.在python访问mysql数据库中,默认开启事物,所以对于增删改。只要提交事
                物即可(connection.commit)
                2.开启事物命令:
                    1.start transaction;
                    2.begin;
                3.提交事物命令:commit:把修改的数据持久化的存储在数据库中
                4.事物的回滚:
                    rollback:回滚到事物执行的初始状态(指还没有持久性的存储在数据库
                    中,只是在缓存区中)
                    当我们不需要mysql命令行自动提交的时候 键入set autocommit=0即可
                5.原子的ACID特性
                    事务有原子性、一致性、隔离性、持久性
                    原子性强调事务中的多个操作时一个整体
                    一致性强调数据库中不会保存不一致状态
                    隔离性强调数据库中事务之间相互不可见
                    持久性强调数据库能永久保存数据,一旦提交就不可撤销

        3.索引:
            1.何为索引:
                索引是一种特殊的文件(innoDB数据表上的索引是表空间的一个组成部分),他们
                包含着对数据表中所有的记录的引用指针,作用是能够加快数据库的查询速度
            2.索引的原理:
                内部具体实现方案:B+数
            3.索引使用:
                1.查看索引:
                    show index from 表名;
                    show index from goods;

                2.创建索引:
                    create index 索引名称 on 表名(字段名称(长度))
                    create index name_index on goods(name(150))

                3.删除索引:
                    drop index 索引名称 on 表名字
                    drop index name_index on goods;

                4.索引的注意点(面试题):
                    1.索引最主要解决的问题:当数据量较大时,且这些数据不需要经常修改,
                    使用索引来加快查询速度
                    2.对于较小的表,查询开销不是很大,也没有必要建立另外的索引
                    3.建立太多索引将会影响更新和插入的速度,因为他需要同样更新每个索引
                    文件
                    4.对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的
                    where字句单独建立索引
                    5.建立索引会占用磁盘空间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值