数据库基础_2/2

[end_label]

7.2 调用存储过程和函数

7.2.1 调用存储过程

call proc_name([paramter[,...]])

7.2.2 调用存储过程

select fun_name([paramter[,...]])

7.3 查看存储过程和函数

  1. 使用show status 语句查看存储过程和函数的状态

show {procedure|function} status{like 'pattern'}
2. 使用show create 语句查看存储过程和函数的定义

show create {procedure|function} proc_name
3. 从information_schema.routine表中查看存储过程和函数的信息

select * from information_schema.routine where routine_name='proc_name'

7.4 修改存储过程和函数

alter {procedure|function} proc_name{characteries ... };

7.5 删除

drop procedure proc_name
drop function fun_name

触发器

能够激活触发器的SQL语句:insert、delete、update

创建触发器

  1. 创建一条执行语句的触发器
    create trigger trigger_name before|after trigger_event on table_name for each row trigger_simt
    trigger_event:触发执行条件,insert delete insert
    trigger_simt:激活触发器后执行的SQL语句
  2. 创建多条执行语句的触发器
    create trigger trigger_name before|after trigger_event on table_name for each row begin trigger_simit end

查看触发器

  1. 通过show triggers语句查看

show triggers \G
2. 通过查看系统表triggers实现查看
use information_schema
select * from triggers

删除触发器

drop trigger trigger_name

事务和锁

事务

  1. 特性:原子性(A)、一致性©、隔离性(I)、持久性(D)。
  2. redo日志:事务执行时需要将执行的事物日志写入redo日志文件里,在Mysql崩溃时会重新执行redo日志中的记录
  3. undo日志:主要用于事务异常时的数据回滚,即就是复制事务前的数据库内容到undo缓冲区,然后在合适的时间将内容刷新到磁盘。

控制语句

begin:开启事务
commit:结束事务
rollback:回滚事务
Mysql可通过set autocommit、start transaction、commit和rollback 支持本地事务
start transaction|begin|work|commit [work][and [no] chanin] [[no] release] rollback [work] [and [no] chain] [[no] release] set autocommit ={0|1}

隔离级别

A查B改

  • 未提交读(read uncommitted) == 脏读:回滚后A查询两次的值不一样,A可以查看到B修改过程中的内容
  • 提交读(read commited) == 不可重复读:提交后A可以查到B修改后的内容,查询的数据不一致
  • 可重复读(repeatable read) Mysql默认== 幻读:提交后A查不到B修改的内容,各是各的,但是A更新B修改的内容是可以的,而且更新后又可以查到B修改的内容
  • 可串行化(serializable):级别最高,可能出现大量超时和锁竞争

查看事务隔离级别:select @@global.tx_isolation

InnoDB锁机制

锁的类型

  1. 共享锁(S):粒度是行或者元组(多个行),获取该锁,可执行读操作
  2. 排他锁(X):粒度是行或者元组(多个行),获取该锁,可执写读操作

如果A有共享锁,则不可同时加排他锁,可同时加共享锁
如果A有排他锁,则不可同时加共享锁,也不可同时加共享锁
3. 意向锁:粒度是整张表

  • 意向排他锁(IX)
  • 意向共享锁(IS):有意对数据上共享锁和排他锁
    锁之间要么相容要么相斥

锁粒度

  1. 表锁:开销小,允许并发量最小 - MyISAM
  2. 行锁:允许并发量最大,- InnoDB
    eg: select ... lock in share mode
    ``select … for update
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值