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

2.求ASCII

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

  • 自定义函数

   自定义个函数,判断输入参数是否大于等于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 utf8
BEGIN
    #Routine body goes here...
  IF a >= 10 THEN
        RETURN '大于等于10';
  ELSE
      RETURN '小于10';
  END IF;
END
;;
DELIMITER ;
复制代码

验证函数:

SELECT func_compare(9), func_compare(11)

执行结果:

 

参考链接:https://www.cnblogs.com/duanrantao/p/9330920.html

http://baijiahao.baidu.com/s?id=1598694746553095044&wfr=spider&for=pc

 

posted @   donleo123  阅读(979)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示