当前位置:网站首页>MySQL中的视图、索引以及事务的简单使用
MySQL中的视图、索引以及事务的简单使用
2022-08-03 09:43:00 【微凉秋意】
作者简介:C/C++领域新星创作者,为C++和java奋斗中
个人社区:微凉秋意社区
系列专栏:MySql一点通
推荐一款模拟面试、刷题神器注册免费刷题
前言
书接上文,今天补充MySQL基础最后的一部分内容:
视图
,索引
,事务
的使用以及考点。内容不会难,主要是为以后优化以及提高查询效率打基础。
一、视图
- 代表一个查询的SQL,内封装着一条查询SQL,基于视图操作就相当于基于被封装的SQL操作
1、视图的创建使用与销毁
- 创建视图
语法:
create view 视图名 as 查询SQL
例:
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
- 视图的使用
语法:
select 列名 from 视图名
例:
select * from query_emp_dep
-- 对结果做筛选
select * from query_emp_dep where employee_id in(100,101,102,103)
- 视图的销毁
语法:
drop view [if exists]视图名
例:
drop view query_emp_dep
2、视图的面试常考特点
- 视图不是表,并不会做数据存储
- 视图本身无法提高查询的执行效率,只是能提高开发效率
- 视图也可以在想屏蔽表中机密列时使用
二、索引
- 是数据库为了提高查询效率所提供的一种机制
1、索引的创建使用与销毁
- 创建索引
语法:
create index 索引名 on 表名(字段名)
- 查看索引
语法:
show index from 表名
- 销毁索引
语法:
drop index 索引名 on 表
- 索引的使用
-- 查询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
tips:无须手动显式使用索引,当使用索引列作为检索条件时,会自动采用索引
2、索引的面试常考特点
- 作用为提高查询效率
- 缺点为会占用空间
- 使用:
- 索引并不是越多越好,只需给经常作为检索条件的列添加索引即可
- 原因:会占用空间,也会影响数据增删改的效率
- 主键和唯一列会自动添加索引
- 在检索
null
值和进行模糊查询时会失效
- 索引并不是越多越好,只需给经常作为检索条件的列添加索引即可
三、事务
- 是一种保证SQL执行完整性的机制,可以确保事务中的SQL要么同时成功,要么同时失败
1、事务的开启与结束
- 开启事务
语法:
begin | start transation
- 结束事务
语法:
提交:commit -- 真正更改数据库数据
回滚:rollback -- 是数据回到事务开启前的状态
- 示例
-- 账户表: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
}
2、事务的面试常考特点
- 记住四个字母:
ACID
- A:原子性 多条SQL要么同时成功,要么同时失败,不可缺失或更改
- C:一致性 事务执行前后,数据状态是一致的
- I:隔离性 每个事务都是单独的个体,不会相互影响
- D:持久性 事务一旦提交,对数据库中的数据更改将是永久的,不可回滚
写在最后MySQL基础内容已经完结,以后就更新此专栏的JDBC知识了,感兴趣的伙伴可以订阅专栏喔,期待你的关注与支持
边栏推荐
猜你喜欢
随机推荐
Validate floating point input
oracle中的rownum函数
Redis实现分布式锁
RSTP(端口角色+端口状态+工作机制)|||| 交换机接口分析
梯度消失和梯度爆炸
Apple Silicon配置二进制环境(二)
多媒体数据处理实验3:图像特征提取与检索
超详细的Asp.net使用SSL双向认证,一篇就够了
MYSQL 修改时区的几种方法
MySql的初识感悟,以及sql语句中的DDL和DML和DQL的基本语法
Recursive training
ORA-06512 数字或值错误字符串缓冲区太小
MySQL 中 is null 和 =null 的区别
使用 Scrapy 框架对重复的 url 无法获取数据,dont_filter=True
DOM0、DOM2、DOM3 事件
015-平衡二叉树(一)
mysql 运行的时候 报错
Oracle 迁移至Mysql
2022T电梯修理考试题及答案
ClickHouse查询语句详解