47 张图带你 MySQL 进阶!!! (6)

47 张图带你 MySQL 进阶!!!

然后我们创建视图

create view v1 as select * from product;

然后我们查看一下 v1 视图的结构

47 张图带你 MySQL 进阶!!!

可以看到我们把 product 中的数据放在了视图中,也相当于是创建了一个 product 的副本,只不过这个副本跟表无关。

视图使用

show tables;

也能看到所有的视图。

删除视图的语法是

drop view v1;

47 张图带你 MySQL 进阶!!!

能够直接进行删除。

视图还有其他操作,比如查询操作

你还可以使用

describe v1;

47 张图带你 MySQL 进阶!!!

查看表结构

更新视图

update v1 set name = "grape" where id = 1;

47 张图带你 MySQL 进阶!!!

存储过程

MySQL 从 5.0 开始起就支持存储过程和函数了。

那么什么是存储过程呢?

存储过程是在数据库系统中完成一组特定功能的 SQL 语句集,它存储在数据库系统中,一次编译后永久有效。那么使用存储过程有什么优点呢?

使用存储过程具有可封装性,能够隐藏复杂的 SQL 逻辑。

存储过程可以接收参数,并返回结果

存储过程性能非常高,一般用于批量执行语句

使用存储过程有什么缺点?

存储过程编写复杂

存储过程对数据库的依赖性比较强,可移植性比较差

存储过程使用 存储过程创建

在认识到存储过程是什么之后,我们就来使用一下存储过程,这里需要先了解一个小技巧,也就是 delimiter 的用法,delimiter 用于自定义结束符,什么意思呢,如果你使用

delimiter $$

的话,那么你在 sql 语句末使用 ; 是不能使 SQL 语句执行的,不信?我们可以看下

47 张图带你 MySQL 进阶!!!

可以看到,我们在 SQL 语句的行末使用了 ; 但是我们却没有看到执行结果。下面我们使用

delimiter ;

恢复默认的执行条件再来看下

47 张图带你 MySQL 进阶!!!

我们创建存储过程首先要把 ; 替换为 $$,下面是一个存储过程的创建语句

mysql> delimiter $$ mysql> create procedure sp_product() -> begin -> select * from product; -> end $$

47 张图带你 MySQL 进阶!!!

存储过程实际上是一种函数,所以创建完毕后,我们可以使用 call 方法来调用这个存储过程

47 张图带你 MySQL 进阶!!!

因为我们上面定义了使用 delimiter $$ 来结尾,所以这里也应该使用。

存储过程也可以接受参数,比如我们定义一种接收参数的情况

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssjff.html