事务和触发器带给数据库的好处

Mysql 连接查询 事务 触发器

1.      连接查询

Union连接的是多个select语句

(1)查询商品名称,价格,商品分类(商品价格不能低于1000)

select goods_name,shop_price,cat_name fromgoods join ecs_category as c on goods.cat_id=c.cat_id where shop_price>1000;

2.      join的分类

左连接查询 left join:查询的结果是只要左边有的记录,都会显示,右边没有的显示为null

右连接 right join

内连接inner join :查询的结果是俩个表都有的数据

3.      事务:

什么是事务?

事务是逻辑上的一组操作,组成这组操作的各个单元,要么全都成功要不全都失败,这个特性就是事务,这个特性有利于数据的安全

注意:mysql 数据支持事务,但是要求必须是innerDB存储引擎

如何使用:

(1)   在执行sql 语句之前,我们要开启事务start transaction

(2)   正常执行sql语句

(3)   当sql 语句执行完毕,存在俩种情况

a)       Commit 全都成功,我们要将sql 语句对数据库造成的影响提交到数据库中

b)       Rollback 某些sql 语句失败,执行回,将对数据库的操作撤销

在php中写的时候要注意判断sql语句是否执行成功

 

在开启事务后,只要不执行commit之后才会对真实数据库产生影响

 

 

4.      触发器的语法结构

a)       Create trigger 触发器的名称 触发时间 触发事件 on 监听的表名 for each row 行为发生后执行的sql 语句

b)       触发器事件总结:增,删,改,查

c)       在sql 语句中含有关键字时使 反引号 来标时它

案例研究:

(1)    建商品表和订单表

(2)    给订单表绑定触发器,一旦订单表增加订单,马上执行sql语句

 

5.      如何在触发器中使用触发数据?

New 关键字代表新的数据

Old 关键字表示旧的字段上的旧数据

mysql> createtrigger alert_goods_number after insert on `order` for each row update goodsset goods_number=goods_number-new.buy_number where goods_id= new.good_id;

mysql> createtrigger back_goods_number after delete on `order` for each row update goods setgoods_number=goods_number+old.buy_number where goods_id =old.good_id;    

 

案例:update中new 和 old的使用

现在的需求是:

之前购买了5个samsung手机,现在想买10个,需要更新订单表

这个时候,触发器就需要监听着 update这个行为

先将之前下的订单撤销,再重新下订单

mysql> create trigger update_goods_number after update on `order`for each row u

pdate goods setgoods_number=goods_number-(new.buy_number-old.buy_number) where goods_id=new.good_id;

 

触发器是什么:

       用来监听数据表的某个行为(insert,update,delete),一旦这个行为发生了,马上执行相应sql语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值