共享锁和排它锁:
共享锁(读锁):在同一个时间段内,多个用户可以读取同一个资源,读取的过程中数据不会发生任何变化。读锁之间可以多个用户同时读,但不允许有人修改;
排它锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作,只能由这一个用户来写,其他用户既不能读也不能写。
触发器:
当某一事件触发,系统自动调用。
工作机制:
触发器是建在表上的,当这个表发生新增、修改、删除操作时,如果这个表上有触发器,就会被自动调用。
作用:维护表的完整性,记录表的修改来审计表的相关信息。
创建触发器的SQL语法:
create trigger 触发器名称 --触发器名称
on 表名 --建在哪个表上
for insert|update|delete --是插入事件处理还是修改事件处理还是删除事件处理
as --以下是触发器基本格式
begin
end
触发器优点:
自动执行:触发器不用像存储过程一样需要手动调用,是自动触发的,只有当对表进行更新,删除等操作的时候会立即触发。
级联更新:触发器可以通过数据库中的相关表进行层叠更改,这比直接将代码写在前端的做法更安全合理。
强化约束:触发器可以引用其他表的列,能够实现比check约束更为复杂的约束。
跟踪变化:触发器可以阻止数据库中未经允许的指定更新和变化。
强制业务逻辑:触发器可用于执行管理任务,并强制影响数据库的复杂业务规则。
缺点:
不同数据库,语法差别很大,移植困难,换了数据库,需要重新编写;不好管理,把过多业务逻辑写在存储过程不好维护,不利于分层管理,容易混乱,一般存储过程适用于个别对性能要求较高的业务。
函数:
MySQL中提供了许多内置函数,还可以自定义函数(实现程序员需要sql逻辑处理)
自定义函数创建语法:
创建:CREATE FUNCTION 函数名称(参数列表)
RETURNS 返回值类型 函数体
修改: ALTER FUNCTION 函数名称 [characteristic ...]
删除:DROP FUNCTION [IF EXISTS] 函数名称
调用:SELECT 函数名称(参数列表)
索引——排好序的快速查找数据结构
对数据库表中一或多个列的值进行排序的结构,利用索引可快速访问数据库表的特定信息。
索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。
优点: