mysql视图和函数有区别吗_MySQL中的View视图以及函数的作用

MySQL中的View视图

作用一:提高了重用性,就像一个函数。如果要频繁获取user的name和goods的name。就应该使用以下sql语言。

示例:

select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;

但有了视图就不一样了,创建视图other。

示例:

create view other as select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;

创建好视图后,就可以这样获取user的name和goods的name。

示例:

select * from other;

以上sql语句,就能获取user的name和goods的name了。

作用二:对数据库重构,却不影响程序的运行。

假如因为某种需求,需要将user拆房表usera和表userb,该两张表的结构如下:

测试表:usera有id,name,age字段

测试表:userb有id,name,sex字段

这时如果php端使用sql语句:select * from user;那就会提示该表不存在,这时该如何解决呢。解决方案:创建视图。以下sql语句创建视图:

create view user as select a.name,a.age,b.sex from usera as a, userb as b where a.name=b.name;

以上假设name都是唯一的。此时php端使用sql语句:select * from user;就不会报错什么的。这就实现了更改数据库结构,不更改脚本程序的功能了。

作用三:提高了安全性能。可以对不同的用户,设定不同的视图。

例如:某用户只能获取user表的name和age数据,不能获取sex数据。则可以这样创建视图。

示例如下:

create view other as select a.name, a.age from user as a;

这样的话,使用sql语句:select * from other; 最多就只能获取name和age的数据,其他的数据就获取不了了。

作用四:让数据更加清晰,想要什么样的数据,就创建什么样的视图。

MySQL中的函数

什么是函数

mysql中的函数与存储过程类似,都是一组SQL集;

与存储过程的区别

函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回值;

函数可以嵌入到sql语句中使用,而存储过程不能;

函数一般用于实现较简单的有针对性的功能(如求绝对值、返回当前时间等),存储过程用于实现复杂的功能(如复杂的业务逻辑功能);

mysql自带函数

mysql数据库中提供了很丰富的函数。mysql函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可抄以简化用户的操作。

示例:

1.求绝对值ABS

ff5a9754bfb3bec3390aef6446a570dd.png

2.求ASCII

b2aecde32af24a3d84346f0872d9762e.png

3.时间相关(NOW、CURRENT_DATE、CURRENT_TIME)

8727eb401c84b3023cca278f7e94039e.png

自定义函数

自定义个函数,判断输入参数是否大于等于10:

--------------------------------Function structure for `func_compare`------------------------------

DROP FUNCTION IF EXISTS`func_compare`;

DELIMITER ;;CREATE DEFINER=`root`@`localhost` FUNCTION `func_compare`(a int) RETURNS varchar(200) CHARSET utf8BEGIN#Routine body goes here...IF a >= 10 THEN

RETURN '大于等于10';ELSE

RETURN '小于10';END IF;END;;

DELIMITER ;

验证函数:

SELECT func_compare(9), func_compare(11)

执行结果:

6331318edc4b3dcd1e36fcc34b2b4e40.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值