MySQL--六、sql 触发器 事务 视图 索引

mysql四个内置对象

触发器、事务、视图、索引


一、使用触发器处理的相关问题

一种特殊的存储过程

1.模拟检查约束  mysql数据库中检查约束不生效

drop trigger if exists tri_addStudent;
create trigger tri_addStudent
before insert on student
for each row
begin
    #验证本次新增的年龄 是否满足18-40
    if(new.stuAge not between 18 and 40)
    then
        #手动抛错
        signal sqlstate 'TX001' set message_text='age out of range';
        set new.stuAge=18;
    end if;
end;

drop trigger if exists tri_add;
create trigger tri_add
before/after  insert/update/delete on 表名
for each row
begin
   #执行操作

1、用new.列名获取,删除用old.列名,修改相当于删除后新增

2、手动抛错(无论before、after都会阻止修改操作)

      signal sqlstate 'TX001' set message_text='age out of range';

3、触发器不能执行打印操作,不能返回
end;

 

2.级联删除  慎重使用

drop trigger if exists tri_deleteDept;

create trigger tri_deleteDept

before delete on department

for each row

begin

    #在删除部门数据前 根据部门编号 找到对应的员工进行删除

    delete from employee where deptId=old.deptId;

end;

 

3.关联更新操作

 


二、事务

1、事务的作用  将多个独立的SQL指令组合成一个最小的逻辑单元(整体)

2、事务的概念

1)事务是作为单个逻辑工作单元执行的一系列操作;

2)多个操作为一个整体向系统提交,要么都执行,要么都不执行;

3)事务是一个不可分割的工作逻辑单元

3、事务的四大特性(ACID属性)

  • A  原子性:事务是一个完整的操作,各个操作是不可分割的,要么都执行,要么都不执行
  • C  一致性:当事务完成时,数据必须处于一致状态
  • I   隔离性:并发事务之间彼此隔离、独立,他不应以任何方式依赖于或影响其他事务
  • D  永久性:事务完成后,他对数据库的修改将被永久保持

4、语法

  • 如果没有显式的提供事务的开始 那么使用隐式事务
  • 显式开启事务   start transaction
  • 提交事务   commit
  • 回滚事务   rollback

5、sql语句管理事务

一、开始事务:

        start transaction;

二、执行代码操作

三、提交事务:

       commit;

四、回滚事务:

       rollback;

6、判断某一条语句执行是否出错

  •    可以使用 row_count()函数 获取上一条SQL指令执行后受影响的行数

注:如果没有显示的提供事务的开始,那么使用隐式事务


三、 视图  只针对sql  查询语句

1、可以把视图看做是 一张查询结果集/虚拟表的存储

2、什么时候使用视图(只针对sql查询语句)

  • 当只希望向角色展示表中的部分行 部分列时
  • 当频繁需要进行复杂表连接的时候

3、对数据表做出的数据更新 将即时影响视图的显示

4、对视图不推荐进行增删改操作(能做  如果视图是正好对应一张表的完整结构)

5、语法

create  view  名字

as

查询语句;


四、索引

1、数据的保存方式

(1)文件  一张表对应一个文件  .frm   

(2)文件中包含数据页

  • 直接存储数据 物理顺序
  • 索引页 是特殊的数据页  用于保存索引

2、索引的分类

  • 主键索引  primary key
  • 唯一索引  unique
  • 普通索引
  • 全文索引

3、创建语法

create  index 索引名称 on  表名(列);

  • 对于该列有依赖的条件筛选或排序效率将提升

drop index  索引名 on 表名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值