本文共 2552 字,大约阅读时间需要 8 分钟。
本质:视图是一种虚拟表,是基于SQL语句获取的动态数据集合。它可以将多个表的数据合并展示,便于复杂查询。
注意:视图主要用于数据查询,不支持数据修改操作。
基本语法:
create view 视图名字 as SQL语句alter view 视图名字 as SQL语句drop view 视图名字本质:触发器用于定义数据库表在执行增删改操作前或后的自定义行为,确保数据操作的规范性。
注意:触发器的定义需要注意事务符和结束符的正确使用。
基本语法:
# 创建触发器前的设置delimiter $$create trigger 触发器名字 before/after insert/update/delete on 表名 for each rowbegin sql语句end $$delimiter ; # 恢复默认结束符# 示例代码delimiter $$create trigger t_after_insert before insert on user for each rowbegin insert into log_user记录的信息end $$delimiter ;# 删除触发器drop trigger t_after_insert;
作用:事务保证数据库操作的安全性,防止数据不一致或丢失。
四大特性(ACID):
三大关键字:
start transaction:开始事务。rollback:事务回滚到执行前的状态。commit:确认事务提交,修改持久化。示例:
start transaction;update user set xianjin=1000 where name='持卡人';update user set cunkuan=2000 where name='持卡人储户';commit; # 确认事务
本质:存储过程是将一系列可执行的SQL语句封装在一个自定义的函数中,便于复用和管理。
基本语法:
delimiter //create procedure 存储过程名字 ( in 形参名 形参类型, out 形参名 形参类型, inout 形参名 形参类型 ) begin sql代码end //delimiter ; # 恢复默认结束符# 调用存储过程call 存储过程名字 (参数);
示例代码:
delimiter //create procedure p1 (in n1 int, out res int) begin select * from user where id > n1; set res = 1;end //delimiter ;
调用示例:
set @res = 0;call p1(2, @res);select @res;
delimiter //create procedure proc_if()begin declare i int default 0; if i = 1 then select 1; elseif i = 2 then select 2; else select 7; end if;end //delimiter ;
delimiter //create procedure proc_while()begin declare num int; set num = 0; while num < 10 do select num; set num = num + 1; end while;end //delimiter ;
delimiter //create procedure proc_repeat()begin declare i int; set i = 0; repeat select i; set i = i + 1; until i >= 5; end repeat;end //delimiter ;
delimiter //create procedure proc_loop()begin declare i int default 0; loop_label: loop set i = i + 1; if i < 8 then iterate loop_label; end if; if i >= 10 then leave loop_label; end if; select i; end loop loop_label;end //delimiter ;
本质:索引通过缩小数据范围快速定位数据,提升查询效率。
b+树结构:
b+树特性:
索引类型:
注意事项:
通过合理设计索引,可以显著提升数据库查询效率,优化用户体验。
转载地址:http://pyvp.baihongyu.com/