mysql中自定义函数
示例:创建函数my_trim,用于删除字符串左右两侧的空格
在mysql中创建去除空格的自定义函数:
create function my_trim(str varchar(100)) return varchar(100)
begin
return ltrim(rtrim(str));
end
使用函数
select my_trim(' abc ')
在命令行创建自定义函数:
delimiter $$
create function my_trim(str varchar(100)) return varchar(100)
begin
return ltrim(rtrim(str));
end
$$
mysql中创建存储过程
存储过程是一条或多条SQL语句的集合。
create procedure proc_stu()
begin
select * from student;
end
使用存储过程
call procedure
存储过程和函数的区别?
相同点:存储过程和函数都是为了可重复的执行操作数据库的 sql 语句的集合。
(1)存储过程和函数都是一次编译,就会被缓存起来,下次使用就直接命中已经编译好的 sql 语句,不需要重复使用。减少网络交互,减少网络访问流量。
不同点:标识符不同,函数的标识符是 function,存储过程是 proceduce。
(1)函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参
数或者返回值。
(2)存储函数使用 select 调用,存储过程需要使用 call 调用。
(3)select 语句可以在存储过程中调用,但是除了 select…into 之外的 select 语句都不能在函数中使用。
(4)通过 in out 参数,过程相关函数更加灵活,可以返回多个结果。
mysql创建视图
视图是一个虚拟表,其内容由查询定义。视图是存储在数据库中的查询的sql 语句,它主要出于两种原因:安全原因,视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。
create view v_stu as
select
stu.*,cs.countNo,cs.name courseName,sc.score
from
student stu
inner join scores sc on studentNo = sc.studentNo
inner join course cs on cs.courseNo = sc.studentNo
调用视图
select * from v_stu
mysql事务操作
以begin开始,commit结束,rollback事务回滚(全部重来)。要么全成功,要么全失败,类似银行系统转账,一方未成功就转账失败。
begin;
所有事务都成功
commit;
begin;
任何一步失败
rollback;