数据库面试常见问题

共享锁和排它锁

    共享锁(读锁):在同一个时间段内,多个用户可以读取同一个资源,读取的过程中数据不会发生任何变化。读锁之间可以多个用户同时读,但不允许有人修改;

    排它锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作,只能由这一个用户来写,其他用户既不能读也不能写。

触发器:

    当某一事件触发,系统自动调用。

工作机制:

    触发器是建在上的,当这个表发生新增、修改、删除操作时,如果这个表上有触发器,就会被自动调用。

作用:维护表的完整性,记录表的修改来审计表的相关信息。

创建触发器的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 函数名称(参数列表)

索引——排好序的快速查找数据结构

    对数据库表中一或多个列的值进行排序的结构,利用索引可快速访问数据库表的特定信息。

索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。

优点:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值