当前位置:网站首页>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知识了,感兴趣的伙伴可以订阅专栏喔,期待你的关注与支持
边栏推荐
猜你喜欢
2022T电梯修理考试题及答案
MySQL的主从复制
罕见的数学天才,靠“假结婚”才得到追求事业的机会
多媒体数据处理实验2:PCA
Oracle 迁移至Mysql
慢 SQL 分析与优化
命令行加载特效 【cli-spinner.js】 实用教程
Rabbit and Falcon are all covered, Go lang1.18 introductory and refined tutorial, from Bai Ding to Hongru, the whole platform (Sublime 4) Go lang development environment to build EP00
MySql数据库索引优化
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二:编码实现
随机推荐
Flink Yarn Per Job - 提交应用
播放量暴涨2000w+,单日狂揽24w粉,内卷的搞笑赛道还有机会
机器学习(公式推导与代码实现)--sklearn机器学习库
验证浮点数输入
STP生成树选举结果查看及验证
决策树和随机森林
MySQL-DDL数据定义语言-约束
SQL教程之递归 CTE Common Table Expression
分区分表(一)
2022T电梯修理考试题及答案
array of function pointers
Promise 一: 基本问题
Flink Yarn Per Job - Submit application
mysql 事务原理详解
Mysql 主从复制 作用和原理
pytorch安装错误
sql server 批量更新数据多张表 更高效的方法
When deleting a folder, the error "Error ox80070091: The directory is not empty" is reported. How to solve it?
QSplitter(分离部件)
MySql的初识感悟,以及sql语句中的DDL和DML和DQL的基本语法