mysql高级用法

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值