✅作者简介:C/C++领域新星创作者,为C++和java奋斗中
✨个人社区:微凉秋意社区
🔥系列专栏:MySql一点通
📃推荐一款模拟面试、刷题神器👉注册免费刷题
🔥前言
书接上文,今天补充MySQL基础最后的一部分内容:
视图
,索引
,事务
的使用以及考点。内容不会难,主要是为以后优化以及提高查询效率打基础。
语法:
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
语法:
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: 无须手动显式使用索引,当使用索引列作为检索条件时,会自动采用索引
null
值和进行模糊查询时会失效语法:
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
}
ACID
写在最后
MySQL基础内容已经完结,以后就更新此专栏的JDBC知识了,感兴趣的伙伴可以订阅专栏喔,期待你的关注与支持