行业资讯 2025年08月6日
0 收藏 0 点赞 131 浏览 2027 个字
摘要 :

文章目录 写在前面 一、创建视图 二、创建触发器 三、创建存储过程 四、创建存储函数 总结 本文主要讲解关于MySQL如何创建视图、触发器、存储过程和存储函数相关内容,……




本文主要讲解关于MySQL如何创建视图、触发器、存储过程和存储函数相关内容,让我们来一起学习下吧!

写在前面

作为一名开发人员,我想大部分人对数据库的操作,也仅仅限于增删查改的sql语句,可能已经很少人会用到一些更深入的一些操作了。

例如:触发器,存储过程,存储函数,可能视图也会有人,偶尔会用到,其他几个估计就更少了。

最近在备考软考-数据库系统工程师,发现这些数据库对象,用的比较少,现在来回顾一下吧!!!

一、创建视图

创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。

create view <视图名> as <select 语句>

示例:

create view view_students_info
as select * from tb_students_info;

在 tb_students_info 表上创建一个名为 view_students_info 的视图

二、创建触发器

mysql中,可以使用create trigger语句来创建触发器。触发器语句的基本语法如下:

create trigger trigger_name trigger_time trigger_event on table_name for each row trigger_body;
  • trigger_name是触发器的名称;
  • trigger_time是触发器的执行时间,可以是before或after;
  • trigger_event是触发器的事件,可以是insert、update或delete;
  • table_name是触发器所在的表名,不能创建在视图上;
  • trigger_body是触发器的SQL语句。

例如,下面的触发器在employee表上创建了一个before insert的触发器, 当有新的员工加入时,自动将入职时间设置为当前时间:

create trigger set_join_date before insert on employee for each row
begin
SET NEW.join_date = NOW();
end;

三、创建存储过程

create procedure 存储程名([[IN|OUT|INOUT] 参数名 数据类型],[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过程体

  • IN:参数的值必须在调用存储过程时指定,不能被返回
  • OUT:该值可在存储过程内部被改变,并可返回
  • INOUT:调用时指定,并且可被改变和返回 过程体: 过程体的开始与结束使用BEGIN与END进行标识。

示例:

delimiter $$
create procedure test_procedure (IN name VARCHAR(30), OUT total int)
begin
select count(*) into total from students where student_name=name;
end $$
delimiter ;

delimiter $$语句可以改写 MySQL 的默认 SQL 结束标记(;)为指定字符,这是因为我们在存储过程中往往要编写多条 SQL,而这些 SQL 的结束标识都是;

而;本身又是 SQL 的结束标识,在存储过程创建语句中同样会发挥作用,这就会导致存储过程的创建语句半中被结束,必然会运行失败。

四、创建存储函数

create function 函数名(参数列表) returns 返回类型 begin 方法体 end

注意:

  • 1.参数列表 包含两部分:参数名 参数类型(输入参数,不能有输出参数)
  • 2.函数体: 肯定会有return语句,如果没有会报错。如果return语句没有放在函数体的最后也不报错,但不建议。
  • 3.函数体中仅有一句话,则可以省略begin end
  • 4.使用 delimiter语句设置结束标记
  • 5.函数有且仅有一个返回值,这点和存储过程有所区别。
delimiter $$
drop function if exists genPerson$$
create function genPerson(name varchar(20)) returns varchar(50)
begin
  declare str varchar(50) default \'\';
  set @tableName=name;
  set str=concat(\'create table \', @tableName,\'(id int, name varchar(20));\');
  return str;
end $$
delimiter ;

create function 创建存储函数genPerson,函数的参数是name,返回值是varchar(50)。

函数体放在begin 与 end之间。

declare 声明变量,str类型是varchar(50),默认值是空。

return返回拼接后的字符串str。

总结

以上就是关于MySQL如何创建视图、触发器、存储过程和存储函数相关的全部内容,希望对你有帮助。欢迎持续关注潘子夜个人博客,学习愉快哦!

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9828.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号