前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 视图、过程、函数

MySQL 视图、过程、函数

作者头像
lpe234
发布2020-07-27 17:26:03
7100
发布2020-07-27 17:26:03
举报
文章被收录于专栏:若是烟花

简介

视图
  • 通俗的讲,视图就是一条SELECT语句执行后返回的结果集。
  • 方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;
  • 更加安全,数据库授权命令不能限定到特定行和特定列,但是通过合理创建视图,可以把权限限定到行列级别
过程
  • 存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
  • 通过吧处理封装在容易使用的单元中,简化复杂的操作
  • 由于不要求反复建立一系列处理步骤,这保证了数据的完整性。如果开发人员和应用程序都使用了同一存储过程,则所使用的代码是相同的。还有就是防止错误,需要执行的步骤越多,出错的可能性越大。防止错误保证了数据的一致性。
  • 简化对变动的管理。如果表名、列名或业务逻辑有变化。只需要更改存储过程的代码,使用它的人员不会改自己的代码了都。
  • 提高性能,因为使用存储过程比使用单条SQL语句要快
  • 存在一些职能用在单个请求中的MySQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码
函数
  • UDF 当自带函数不能满足需要时,你就需要创建了...
环境
代码语言:javascript
复制
➜  ~ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 56
Server version: 5.7.16 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

视图

创建视图

代码语言:javascript
复制
# 只是创建一个简单的视图
CREATE VIEW `user_view` AS
SELECT name FROM table_xxx

示例:

代码语言:javascript
复制
mysql> SELECT name FROM user_view;
+------+
| name |
+------+
| 1    |
| 3    |
| 5    |
| 6    |
| 7    |
+------+
5 rows in set (0.00 sec)

过程

创建存储过程

代码语言:javascript
复制
# 该存储过程比较简单,接收一个varchar(16)的参数,插入table_x表
CREATE PROCEDURE `ADD_USER` (name VARCHAR(16))
BEGIN

IF name IS NULL THEN 
	SET name = '(empty)';
END IF;

INSERT INTO table_x(name) VALUES(name);

END

示例:

代码语言:javascript
复制
# 使用call 即可调用存储过程
mysql> call ADD_USER('xxx');

函数

创建函数

代码语言:javascript
复制
# 该函数的功能比较简单,判断传入的int型参数大于或者小于5.
CREATE FUNCTION `THAN_FIVE` (id INT) 
RETURNS VARCHAR(10)
BEGIN
	DECLARE result VARCHAR(10) DEFAULT 0;
	IF id < 5 THEN 
		SET result = '小于5';
	END IF;
	IF id > 5 THEN
		SET result = '大于5';
	END IF;
    
	RETURN result;
END

示例:

代码语言:javascript
复制
mysql> select THAN_FIVE(id), id, name from b;
+---------------+----+------+
| THAN_FIVE(id) | id | name |
+---------------+----+------+
| 小于5         |  1 | 1    |
| 小于5         |  2 | 3    |
| 0             |  5 | 5    |
| 大于5         |  6 | 6    |
| 大于5         |  7 | 7    |
+---------------+----+------+
5 rows in set (0.00 sec)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 视图
  • 过程
  • 函数
  • 环境
  • 视图
  • 过程
  • 函数
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档