• 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

  • 相关阅读:
    JasperReports项目中的应用
    请问两个div之间的上下距离怎么设置
    Spring MVC Flash Attribute 的讲解与使用示例
    8.ireport 取消自动分页,detail不分页
    python网络爬虫学习笔记
    ShareSDK for Android 2.3.8它已发表
    OllyDbg 使用注意事项 (十)
    ListView的cacheColorHint与listSelector物业和fragment里面onActivityResult问题没有响应
    Hdu 3341 Lost's revenge (ac+自己主动机dp+hash)
    PhoneGap 开发与应用 上传 App Store 在
  • 原文地址:https://www.cnblogs.com/donleo123/p/12856061.html
Copyright © 2020-2023  润新知