• MySQL中的视图、索引以及事务的简单使用


    ✅作者简介:C/C++领域新星创作者,为C++和java奋斗中
    ✨个人社区:微凉秋意社区
    🔥系列专栏:MySql一点通
    📃推荐一款模拟面试、刷题神器👉注册免费刷题

    🔥前言

    书接上文,今天补充MySQL基础最后的一部分内容:视图索引事务的使用以及考点。内容不会难,主要是为以后优化以及提高查询效率打基础。

    一、视图

    • 代表一个查询的SQL,内封装着一条查询SQL,基于视图操作就相当于基于被封装的SQL操作

    1、视图的创建使用与销毁

    1. 创建视图

    语法:

    create view 视图名 as 查询SQL
    
    • 1

    例:

    create view query_emp_dep as
    -- 写一个表连接:查询员工和其部门的所有信息
    select e.*,d.department_name,d.location_id -- 多表在视图中不可存在重复列名
    from employees e LEFT JOIN departments d
    on e.department_id=d.department_id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 视图的使用

    语法:

    select 列名 from 视图名
    
    • 1

    例:

    select * from query_emp_dep
    -- 对结果做筛选
    select * from query_emp_dep where employee_id in(100,101,102,103)
    
    • 1
    • 2
    • 3
    1. 视图的销毁

    语法:

    drop view [if exists]视图名
    
    • 1

    例:

    drop view query_emp_dep
    
    • 1

    2、视图的面试常考特点

    1. 视图不是表,并不会做数据存储
    2. 视图本身无法提高查询的执行效率,只是能提高开发效率
    3. 视图也可以在想屏蔽表中机密列时使用

    二、索引

    • 是数据库为了提高查询效率所提供的一种机制

    1、索引的创建使用与销毁

    1. 创建索引

    语法:

    create index 索引名 on 表名(字段名)
    
    • 1
    1. 查看索引

    语法:

    show index from 表名
    
    • 1
    1. 销毁索引

    语法:

    drop index 索引名 on
    • 1
    1. 索引的使用
    -- 查询t_person的索引
    show index from t_person
    -- 给t_person添加一个age的索引
    create index i_p_age on t_person(age)
    -- 销毁i_p_age索引
    drop index i_p_age on t_person
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    tips: 无须手动显式使用索引,当使用索引列作为检索条件时,会自动采用索引

    2、索引的面试常考特点

    1. 作用为提高查询效率
    2. 缺点为会占用空间
    3. 使用:
      • 索引并不是越多越好,只需给经常作为检索条件的列添加索引即可
        • 原因:会占用空间,也会影响数据增删改的效率
      • 主键和唯一列会自动添加索引
      • 在检索null值和进行模糊查询时会失效

    三、事务

    • 是一种保证SQL执行完整性的机制,可以确保事务中的SQL要么同时成功,要么同时失败

    1、事务的开启与结束

    1. 开启事务

    语法:

    begin | start transation
    
    • 1
    1. 结束事务

    语法:

    提交:commit  -- 真正更改数据库数据
    回滚:rollback  -- 是数据回到事务开启前的状态
    
    • 1
    • 2
    1. 示例
    -- 账户表:id、姓名、余额
    create table t_account(
    	a_id int PRIMARY KEY auto_increment,-- 主键+自增
    	a_name varchar(20) not null,
      balance decimal(20,2) not null
    )
    
    select * from t_account
    
    begin -- 开启事务
    -- 1. 小黑子的账户-520
    update t_account set balance=balance-520 where a_name = '小黑子'
    -- 2. ikun的账户+520
    update t_account set balance=balance+520 where a_name = 'ikun'
    -- 结果:小黑子-80  ikun-920
    commit -- 提交事务,使事务结束
    rollback -- 回滚事务,使事务结束
    
    -- 整体逻辑
    if(所有语句执行成功){
    	commit
    }else{
    	rollback
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2、事务的面试常考特点

    • 记住四个字母:ACID
    1. A:原子性 多条SQL要么同时成功,要么同时失败,不可缺失或更改
    2. C:一致性 事务执行前后,数据状态是一致的
    3. I:隔离性 每个事务都是单独的个体,不会相互影响
    4. D:持久性 事务一旦提交,对数据库中的数据更改将是永久的,不可回滚

    写在最后
    MySQL基础内容已经完结,以后就更新此专栏的JDBC知识了,感兴趣的伙伴可以订阅专栏喔,期待你的关注与支持

  • 相关阅读:
    六安RapidSSL泛域名https能保护几个域名
    Library <iconv2.4.0> not found 解决方法
    使用https接口,无法调通接口响应不安全
    基于Rook+Ceph的云原生存储架构剖析
    基于SkyEye的CAN总线通信测试
    分布式系统常用的模式
    Sentinel学习圣经:从入门到精通 Sentinel,最全详解 (40+图文全面总结)
    《Groovy程序设计》读书笔记
    网络拓扑图怎么画最好?
    Windows11企业版安装WSL2和Ubuntu发布版(避坑)
  • 原文地址:https://blog.csdn.net/m0_58618795/article/details/126128994