首页 > 技术文章 > MySQL中的View视图以及函数的作用

donleo123 2020-05-09 11:06 原文

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

 

推荐阅读