一、视图
代表一个查询的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、索引的创建使用与销毁
创建索引
语法:
查看索引
语法:
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:持久性 事务一旦提交,对数据库中的数据更改将是永久的,不可回滚