品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

环球观热点:MySQL 视图、函数和存储过程详解

2023-06-02 14:56:34 来源:脚本之家
目录
一、视图二、函数三、存储过程

MySQL 是一种流行的关系型数据库管理系统,其具有强大的功能和灵活性,使其成为了许多企业和个人喜爱的数据库选择。在 MySQL 中,视图、函数和存储过程是常见的数据库对象,它们都有助于提高数据的处理效率和可重用性。

一、视图

视图是一种虚拟表,它是根据 SQL 语句检索出的结果集,与物理表不同的是,它并不在数据库中实际存在。视图的作用是为了简化复杂的查询,将多表关联和过滤操作集中到一个视图中,然后通过查询该视图来获取需要的结果。视图具有以下几个特点:


(资料图)

视图不存储数据,而是根据 SELECT 语句的结果动态生成的;
视图只能读取,不能写入;
视图可以基于一个或多个表创建。
下面是一个视图的创建示例:

CREATE VIEW vw_employee AS SELECT
e.emp_no,
e.first_name,
e.last_name,
d.dept_name 
FROM
	employees e
	JOIN departments d ON e.dept_no = d.dept_no;

该语句创建了一个名为 vw_employee 的视图,它包含了 employees 和 departments 两个表中的数据,可以用以下语句查询该视图:

SELECT * FROM vw_employee;

二、函数

函数是一种可重用的程序单元,它封装了一段特定的逻辑,可以用于完成特定的任务。在 MySQL 中,函数分为两类:标量函数和聚合函数。标量函数返回单个值,而聚合函数返回一个聚合值,如 COUNT、SUM、AVG 等。函数具有以下几个特点:

函数具有输入和输出,可以接收参数并返回结果;
函数可以调用其他函数;
函数可以嵌套调用。
下面是一个标量函数的创建示例:

CREATE FUNCTION get_employee_name ( emp_no INT ) RETURNS VARCHAR ( 50 ) BEGIN
	DECLARE
		emp_name VARCHAR ( 50 );
	SELECT
		CONCAT_WS( " ", first_name, last_name ) INTO emp_name 
	FROM
		employees 
	WHERE
		emp_no = emp_no;
RETURN emp_name;
END;

该语句创建了一个名为 get_employee_name 的标量函数,它接收一个员工编号,返回该员工的姓名。
调用该函数:

SELECT get_employee_name (100001);

三、存储过程

存储过程是一组预定义的 SQL 语句集合,它们被封装在一个单元内,可以被重复调用。存储过程可以接收输入参数和输出参数,它们具有以下几个特点:

存储过程可以包含多条 SQL 语句,可以完成复杂的任务;
存储过程可以在服务器端执行,减少网络传输的开销;
存储过程可以被多个应用程序共享。
下面是一个使用存储过程的示例,假设我们有以下三个表:

employees 表:存储员工的基本信息

CREATE TABLE employees (
  emp_no INT PRIMARY KEY,
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  gender ENUM("M", "F"),
  birth_date DATE,
  hire_date DATE
);

插入一些数据:

INSERT INTO employees VALUES
(10001, "Georgi", "Facello", "M", "1953-09-02", "1986-06-26"),
(10002, "Bezalel", "Simmel", "F", "1964-06-02", "1985-11-21"),
(10003, "Parto", "Bamford", "M", "1959-12-03", "1986-08-28"),
(10004, "Chirstian", "Koblick", "M", "1955-01-05", "1986-12-01"),
(10005, "Kyoichi", "Maliniak", "M", "1959-09-12", "1989-09-12"),
(10006, "Anneke", "Preusig", "F", "1953-04-20", "1989-06-02"),
(10007, "Tzvetan", "Zielinski", "F", "1957-05-23", "1989-02-10");

departments 表:存储部门的基本信息

CREATE TABLE departments (
  dept_no CHAR(4) PRIMARY KEY,
  dept_name VARCHAR(50)
);

插入一些数据:

INSERT INTO departments VALUES
("d001", "Marketing"),
("d002", "Finance"),
("d003", "Human Resources"),
("d004", "Production"),
("d005", "Development"),
("d006", "Quality Management"),
("d007", "Sales"),
("d008", "Research");

dept_emp 表:存储员工与部门的关系

CREATE TABLE dept_emp (
  emp_no INT,
  dept_no CHAR(4),
  from_date DATE,
  to_date DATE,
  PRIMARY KEY (emp_no, dept_no)
);

插入一些数据:

INSERT INTO dept_emp VALUES
(10001, "d001", "1986-06-26", "9999-01-01"),
(10002, "d001", "1985-11-21", "9999-01-01"),
(10003, "d002", "1986-08-28", "9999-01-01"),
(10004, "d005", "1986-12-01", "9999-01-01"),
(10005, "d005", "1989-09-12", "9999-01-01"),
(10006, "d006", "1989-06-02", "9999-01-01"),
(10007, "d007", "1989-02-10", "9999-01-01");

现在,我们可以创建一个存储过程来查询某个部门中的员工数量和员工详细信息:

CREATE PROCEDURE get_employee_by_dept ( IN dept_name VARCHAR ( 50 ), OUT employee_count INT ) BEGIN
	SELECT
		COUNT(*) INTO employee_count 
	FROM
		employees e
		JOIN dept_emp de ON e.emp_no = de.emp_no
		JOIN departments d ON de.dept_no = d.dept_no 
	WHERE
		d.dept_name = dept_name;
	SELECT
		e.emp_no,
		e.first_name,
		e.last_name,
		e.gender,
		e.birth_date,
		e.hire_date 
	FROM
		employees e
		JOIN dept_emp de ON e.emp_no = de.emp_no
		JOIN departments d ON de.dept_no = d.dept_no 
	WHERE
	d.dept_name = dept_name;
END;

该语句创建了一个名为 get_employee_by_dept 的存储过程,它接收一个部门名称作为输入参数,并返回该部门中的员工数量和员工详细信息。

调用该函数

CALL get_employee_by_dept("Development", @employee_count);
SELECT @employee_count;

在实际应用中,视图、函数和存储过程都可以发挥重要的作用。例如,在一个复杂的企业应用中,可能需要从多个表中获取数据,并对其进行过滤和聚合操作,这时可以使用视图来简化复杂的查询。另外,如果有一些常用的业务逻辑需要重复使用,可以将其封装为函数或存储过程,以提高代码的重用性和可维护性。

总之,视图、函数和存储过程都是 MySQL 中非常重要的数据库对象,它们可以提高数据库的效率和可重用性,使开发人员更加高效地处理数据。在实际应用中,可以根据具体的业务需求,灵活地使用这些对象,以提高数据处理的效率和质量。

到此这篇关于MySQL视图、函数和存储过程的文章就介绍到这了,更多相关MySQL视图、函数和存储过程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:

(责任编辑:)

相关文章

环球观热点:MySQL 视图、函数和存储过程详解

​视图、函数和存储过程都是MySQL中非常重要的数据库对象,它们可以提高数据库的效率和可重用性,使开发人员

2023-06-02 14:56:34

全球讯息:产业人才“双向奔赴”促发展

​内蒙古包头稀土高新区:(引题)产业人才“双向奔赴”促发展(主题)产业是经济发展的命脉,人才是服务发展

2023-06-02 13:18:02

一战造9纪录登全美第一热搜!约基奇剑指FMVP,一冠封神超天王?

​一战造9纪录登全美第一热搜!约基奇剑指FMVP,一冠封神超天王?

2023-06-02 12:45:33

发热、支气管肺炎患儿近期增多,医生:这种情况应及时就医—

​近期发热、支气管肺炎的患儿增多。中日友好医院护理部副主任郑智提醒,如果发热患儿精神状态不佳应及时就医

2023-06-02 11:25:36

二轮电动车需要驾驶证吗(电动车需要驾驶证吗) 微资讯

​想必现在有很多小伙伴对于电动车需要驾驶证吗方面的知识都比较想要了解,那么今天小好小编就为大家收集了一

2023-06-02 11:13:19

港交所 AIGC 第一股要来了!谷歌、歌尔参投,年营收 5 亿元

​智东西(公众号:zhidxcom)作者|程茜编辑|心缘智东西6月2日报道,本周二,国内AI创企出门问问港交所IPO获

2023-06-02 10:36:35

最新快讯!孩子王(301078.SZ):KidsGPT智能顾问已在六一童玩节期间通过孩子王APP等上线应用

​格隆汇6月2日丨有投资者在投资者互动平台向孩子王(301078 SZ)提问,“公司发起的童玩节已接近尾声,期间公

2023-06-02 09:42:34

当前讯息:剪花朵简单方法_剪花朵

​你们好,最近小未来发现有诸多的小伙伴们对于剪花朵简单方法,剪花朵这个问题都颇为感兴趣的,今天小活为大

2023-06-02 09:08:31

北京新能源小客车申请资格_北京小客车新能源指标怎么申请成功

​登录城市小客车指标控制管理信息系统,进入用户中心;申请指标,在指标分配功能区选择人员类型,点击进入指

2023-06-02 08:15:59

张之臻晋级法网32强,再创中国男子网球历史

​△张之臻晋级瞬间北京时间6月1日晚,2023法国网球公开赛继续进行第二轮比赛争夺。在男单第二轮的一场比赛中

2023-06-02 07:43:31

马龙谈巴特勒兑现去年抢七失利后诺言:他强硬冷血 是一名战士

​马龙谈巴特勒兑现去年抢七失利后诺言:他强硬冷血是一名战士直播吧5月31日讯今天,是掘金的训练日,训练结

2023-06-02 06:43:59

脸的英文_鱼的英文

​1、鱼[yú]n barracuda;cerovi fishmisc ichthyo-双语例句:1 那条鱼正

2023-06-02 05:51:23

每日讯息!word怎么自动生成目录和页码_word插入目录

​1、工具:word2007步骤:打开word2007,点开左侧目录。2、选一款自动目录。3、或者,如果需要对目录的格式什

2023-06-02 04:47:09

瑞风新能源(00527):李天海及彭子玮退任执行董事

​瑞风新能源(00527)公布,由于在股东周年大会上重选李天海及彭子玮为执行董事的决

2023-06-02 04:45:30

环球简讯:湖北省第一届“万步有约”谷城赛区健走激励大赛正式启动

​湖北日报客户端讯(通讯员詹丽李杰敏邓植元廖俊)5月31日上午,湖北省第一届“万步有约”谷城赛区健走激励

2023-06-02 03:04:54

什么原因引起尿酸高的(什么原因引起尿酸高)

​今天小编岚岚来为大家解答以上的问题。什么原因引起尿酸高的,什么原因引起尿酸高相信很多小伙伴还不知道,

2023-06-02 02:43:31

世界讯息:凡人微光|“童”款互动

​策划:郭依格、王曚、廖清、张鹏、沙琳、刘子畅统筹:焦旭锋、张书旗、乔煜城、张伟豪终审:冯璇编辑:卓越

2023-06-02 01:59:12

暗黑破坏神 4 社区在游戏发布前在其他大陆打印 T 恤、烘烤蛋糕和购买鸡肉

​距离暗黑破坏神4的抢先体验版发布还有一天多的时间,但现在就完全走出你的葫芦永远不会太早。当沙子从沙漏

2023-06-02 01:49:12

注意!万兴科技:实际控制人吴太兵计划减持公司股份不超过206万股|当前热闻

​万兴科技(SZ300624,收盘价:149 81元)6月1日晚间发布公告称,控股股东、实际控制人吴太兵先生直接持有万

2023-06-02 00:19:23

已下达!逾2亿元!

​5月30日,记者从盟林草局获悉,自治区财政厅日前下达我盟2023年内蒙古西部荒漠综合治理(一期)中央基建投

2023-06-01 23:21:35

闯黄灯算违章吗2020(闯黄灯算违章吗2021)|世界快消息

​大家好,小乐来为大家解答以上的问题。闯黄灯算违章吗2020,闯黄灯算违章吗2021这个很多人还不知道,现在让我

2023-06-01 23:03:33

迎泽关注丨迎泽区召开深化危险化学品安全风险集中治理暨安全生产月工作安排部署会

​6月1日,迎泽区召开深化危险化学品安全风险集中治理暨安全生产月工作安排部署会,传达贯彻省、市相关会议精

2023-06-01 21:48:45

农业农村部:研究攻克制约多收多用国产大豆面临的瓶颈问题 持续做大做强国产大豆产业

​农业农村部部长唐仁健5月31日在天津开展大豆压榨加工贸易专题调研。他强调,国产大豆产业要实现良性循环、

2023-06-01 20:37:57

多处“失控”!断电!疏散近1.85万人!这里野火肆虐,浓烟飘往美国……|全球热门

​截至当地时间5月30日,加拿大东部新斯科舍省仍有13处野火在燃烧,野火产生的浓烟飘往美国,预计将影响美国

2023-06-01 20:06:16

中企承建的孟加拉国首个大型风电场投产发电-世界视讯

​近日,由中国电建所属成都院EPC建设、上海电建承建的孟加拉国科巴风电项目顺利实现投产发电,这是中国企业

2023-06-01 19:40:48

全球球精选!国球汇官网 国球汇

​1、乒乓国球会是正品。2、你可以放心的购买。本文到此分享完毕,希望对大家有所帮助。

2023-06-01 19:27:35

【元宇宙之约】戴尔中国研究院首席科学家李三平:通用大模型不是戴尔的首选-当前聚焦

​财联社6月1日讯(记者徐赐豪)ChatGPT问世后,各大公司争相开发大模型,但作为老牌科技公司的戴尔似乎没有

2023-06-01 17:49:43

住建部又出“新规”,赶紧来看看你能不能受益

​住建部又出“新规”,赶紧来看看你能不能受益,新房,住建部,房地产,旧房改造

2023-06-01 17:06:45

世界快看:猫眼倒卖转让演出经营权遭行政处罚 没收违法所得并被罚7万元

​中国网科技5月31日讯(记者李婷)天眼查App显示,近日,天津猫眼现场科技有限公司收到一份行政处罚通知书((京

2023-06-01 16:16:56

海螺水泥(600585)6月1日主力资金净卖出2907.96万元

​截至2023年6月1日收盘,海螺水泥(600585)报收于25 0元,下跌0 24%,换手率0 31%,成交量12 51万手,成交额3 13亿元。

2023-06-01 15:38:53