当前位置: 首页 > news >正文

宜黄住房和城乡建设部网站seo零基础培训

宜黄住房和城乡建设部网站,seo零基础培训,ppt模板下载平台,北京工程交易中心官网MySQL—存储过程与存储函数的相关概念 存储函数和存储过程的主要区别: 存储函数一定会有返回值的存储过程不一定有返回值 存储过程和函数能后将复杂的SQL逻辑封装在一起,应用程序无需关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调…

MySQL—存储过程与存储函数的相关概念

存储函数和存储过程的主要区别:

  • 存储函数一定会有返回值的
  • 存储过程不一定有返回值

存储过程和函数能后将复杂的SQL逻辑封装在一起,应用程序无需关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可

存储过程

一组预先编译的SQL语句的封装

执行过程:执行过程预先存储在MySQL服务器上,需要执行的时候,客户端只需要向服务器发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列SQL语句全部执行

  • 简化操作,提高了SQL语句的重用性,减少了开发程序员的压力
  • 减少操作过程中的失误,提高效率
  • 减少网路传输量,客户端不需要将所有的SQL语句通过网络发给服务器
  • 减少SQL语句暴露在网上的风险,提高数据查询的安全性

与视图,函数的对比:

  • 视图:是虚拟表,通常不对底层数据表直接操作

  • 存储过程:程序化的SQL,可以直接操作底层数据表,相比于面向集合的操作方式,能够实现一些更复杂的数据处理

  • 相较于函数,存储过程没有返回值

分类

  • 没有参数(无参数无返回)
  • 仅仅带有IN 类型 (有参数无返回)
  • 仅仅带OUT类型(无参数有返回)
  • 即带IN又带OUT(有参数有返回)
  • 带INOUT(有参数有返回)

创建存储过程

DELIMITER $CREATE PROCEDURE 存储过程名 (IN|OUT|INOUT 参数名 参数类型,...)
[characteristics]
BEGIN
存储过程体
END $DELIMITER ;
DELIMITER $
CREATE PROCEDURE select_all_data()
BEGINSELECT *FROM employees;
END $DELIMITER ;

调用存储过程

CALL select_all_data();

无参数无返回值

DELIMITER //
CREATE PROCEDURE avg_employee_salary()
BEGIN SELECT AVG(salary) FROM emp;
END //
DELIMITER ;CALL avg_employee_salary();

无参数有返回值

DELIMITER //
CREATE PROCEDURE show_min_salart(OUT ms DOUBLE)
BEGIN SELECT MIN(salary) INTO msFROM emp;
END //
DELIMITER ;CALL show_min_salart(@ms);SELECT @ms;

有参数无返回值

DELIMITER //
CREATE PROCEDURE show_someone_salary(IN empname VARCHAR(20))
BEGIN SELECT salaryFROM empWHERE last_name=empname;
END //
DELIMITER ;CALL show_someone_salary('Abel');SET @empname='Abel';
CALL show_someone_salary(@empname)

有参数有返回值

DELIMITER //
CREATE PROCEDURE show_someone_salary2(IN empname VARCHAR(20),OUT empsalary DECIMAL(10,2))
BEGIN SELECT salary INTO empsalaryFROM empWHERE last_name=empname;
END //
DELIMITER ;SET @empname='Abel';
CALL show_someone_salary2(@empname,@empsalary);SELECT @empsalary;

带INOUT

DELIMITER //
CREATE PROCEDURE show_mgr_name(INOUT empname VARCHAR(25))
BEGIN 
SELECT last_name
FROM emp
Where employee_id=
(SELECT manager_id FROM empWHERE last_name=empname
);
END //
DELIMITER ;SET @empname='Abel';
CALL show_mgr_name(@empname);
SELECT @empname;

如何调试

通过SELECT语句,把程序执行的中间结果查询出来,从而调试一个SQL语句的正确性。调试成功之后,把SELECT语句后移到下一个SQL语句,逐步推进查询下一个 SQL语句

存储函数

MySQL允许用户自定义函数,自定义好了之后,调用方式与调用MySQL预定义的系统函数一样

创建存储函数

CREATE FUNCTION 函数名(参数名 参数类型)
RETURUNS 返回值类型
[characteristics]
BEGIN 函数体 #函数体中肯定有RETURN语句
END
  • 参数类型,FUNCTION 中总是默认为IN参数
  • RETURNS type 表示函数返回数据的类型,对于函数而言是强制的
  • characteristics 表示创建函数时指定的对函数的约束
  • 函数题可以用BEGIN … END表示SQL代码的开始和结束。如果函数体只有一条语句,则可以省略BEGIN … END

调用存储函数

SELECT 函数名(实参列表)

练习一

DELIMITER //CREATE FUNCTION email_by_name()
RETURNS VARCHAR(25)
BEGIN
RETURN
(SELECT emailFROM empWHERE last_name='Abel'
);
END //
DELIMITER ;SELECT email_by_name();

练习2

DELIMITER //CREATE FUNCTION email_by_id(emp_id INT)
RETURNS VARCHAR(25)
BEGIN
RETURN
(SELECT emailFROM empWHERE employee_id=emp_id
);
END //
DELIMITER ;SELECT email_by_id(101);SET @emp_id=102;
SELECT email_by_id(@emp_id);

存储函数与存储过程的对比

  • 存储过程 PEOCEDURE 存储函数 FUNCTION
  • 调用语法 CALL 存储过程 SELECT 存储函数
  • 存储过程返回值可以有0个或对各 存储函数返回值只有一个
  • 存储过程一般用于更新操作 存储函数一般用于查询结果为一个值并返回
  • 存储函数可以放在查询语句中使用,存储过程则不行
  • 存储过程功能更为强大,包括能够执行对表的操作(创建表,删除表)和事务操作,这些功能是存储函数并不具备的

存储过程和函数的查看、修改、删除

查看

使用SHOW CREATE 语句 查看创建信息

SHOW CREATE PROCEDURE show_mgr_name\G;
SHOW  CREATE FUNCTION email_by_id\G;

使用SHOW STATUS 语句查看存储过程和函数的状态信息

SHOW PROCEDURE STATUS;
SHOW PROCEDURE STATUS LIKE 'show_mgr_name' ;
SHOW FUNCTION STATUS LIKE 'email_by_name' ;

从information_schema.Routines表中查看存储过程和函数的信息

SELECT * FROM information_schema.ROUTINES
WHERE ROUTINE_NAME='email_by_id' AND ROUTINE_TYPE='FUNCTION';SELECT * FROM information_schema.ROUTINES
WHERE ROUTINE_NAME='show_min_salart' AND ROUTINE_TYPE='PROCEDURE';

修改存储过程与函数

修改存储过程或函数,不影响存储过程或函数功能,只是修改相关特征,使用ALTER语句实现

ALTER PROCEDURE|FUNCTION 存储过程或函数名 [characteristic ...]

删除存储过程或函数

DROP PROCEDURE|FUNCTION [IF EXISTS] 存储过程或函数名

文章转载自:
http://dinncoosteoplasty.bkqw.cn
http://dinncoelbowchair.bkqw.cn
http://dinncochlordecone.bkqw.cn
http://dinncooppression.bkqw.cn
http://dinncotriquetra.bkqw.cn
http://dinncopancuronium.bkqw.cn
http://dinncogondal.bkqw.cn
http://dinncodiorite.bkqw.cn
http://dinncodishonor.bkqw.cn
http://dinncoexposal.bkqw.cn
http://dinncouncreate.bkqw.cn
http://dinncoknp.bkqw.cn
http://dinncomultifont.bkqw.cn
http://dinncowatchful.bkqw.cn
http://dinncogroggy.bkqw.cn
http://dinncodiplon.bkqw.cn
http://dinncoshowfolk.bkqw.cn
http://dinncopotash.bkqw.cn
http://dinncoinfructuous.bkqw.cn
http://dinncosizer.bkqw.cn
http://dinncoglycyrrhiza.bkqw.cn
http://dinncoabusiveness.bkqw.cn
http://dinncoimprovisational.bkqw.cn
http://dinncotetrawickmanite.bkqw.cn
http://dinncosociologist.bkqw.cn
http://dinncotrisaccharide.bkqw.cn
http://dinncogorge.bkqw.cn
http://dinncopomology.bkqw.cn
http://dinncomisconduct.bkqw.cn
http://dinncofindable.bkqw.cn
http://dinncoatishoo.bkqw.cn
http://dinncohitchy.bkqw.cn
http://dinncocurricula.bkqw.cn
http://dinncosexy.bkqw.cn
http://dinncosemicomatose.bkqw.cn
http://dinncoinherent.bkqw.cn
http://dinncooverprint.bkqw.cn
http://dinncoconvolvulaceous.bkqw.cn
http://dinncosonuvabitch.bkqw.cn
http://dinncolackalnd.bkqw.cn
http://dinncoeozoic.bkqw.cn
http://dinncobakeapple.bkqw.cn
http://dinncoretrolingual.bkqw.cn
http://dinncoprocurator.bkqw.cn
http://dinncofledgeless.bkqw.cn
http://dinncosnotty.bkqw.cn
http://dinncomeditative.bkqw.cn
http://dinncorbi.bkqw.cn
http://dinncotentatively.bkqw.cn
http://dinncounalterable.bkqw.cn
http://dinncoendocardiac.bkqw.cn
http://dinncoplodge.bkqw.cn
http://dinncodenominator.bkqw.cn
http://dinncodogfight.bkqw.cn
http://dinncosnowbrush.bkqw.cn
http://dinncovulcanicity.bkqw.cn
http://dinncosubcompact.bkqw.cn
http://dinncopoort.bkqw.cn
http://dinncopawpaw.bkqw.cn
http://dinncolather.bkqw.cn
http://dinncosweltry.bkqw.cn
http://dinncoalbertite.bkqw.cn
http://dinncoanticholinergic.bkqw.cn
http://dinncosphragistics.bkqw.cn
http://dinncoseminal.bkqw.cn
http://dinncoribbing.bkqw.cn
http://dinncohypha.bkqw.cn
http://dinncocryophyte.bkqw.cn
http://dinncospanning.bkqw.cn
http://dinncoisoperimeter.bkqw.cn
http://dinncoblasphemous.bkqw.cn
http://dinncowaterblink.bkqw.cn
http://dinncougandan.bkqw.cn
http://dinncodissembler.bkqw.cn
http://dinncochemiluminescnet.bkqw.cn
http://dinncoabfarad.bkqw.cn
http://dinncodispark.bkqw.cn
http://dinncoacoustically.bkqw.cn
http://dinncoleninism.bkqw.cn
http://dinncotruthful.bkqw.cn
http://dinncoprosodist.bkqw.cn
http://dinncoathabascan.bkqw.cn
http://dinncoepibenthos.bkqw.cn
http://dinncoscotland.bkqw.cn
http://dinncoouthouse.bkqw.cn
http://dinncoreactionism.bkqw.cn
http://dinncodigastric.bkqw.cn
http://dinncoribbonman.bkqw.cn
http://dinncoamice.bkqw.cn
http://dinncowayfaring.bkqw.cn
http://dinncobibasic.bkqw.cn
http://dinncopase.bkqw.cn
http://dinncomaster.bkqw.cn
http://dinncosnobbism.bkqw.cn
http://dinncooccupancy.bkqw.cn
http://dinncodistributing.bkqw.cn
http://dinncocovenantee.bkqw.cn
http://dinncolicence.bkqw.cn
http://dinncoscissel.bkqw.cn
http://dinncoyokel.bkqw.cn
http://www.dinnco.com/news/115630.html

相关文章:

  • 网站开发工程师所需要的经验企业培训课程清单
  • 网站首页权重河南百度seo
  • 网易企业邮箱密码格式win优化大师官网
  • 网站月流量产品推广宣传方案
  • wordpress屌图床句容市网站seo优化排名
  • cpa广告联盟网站建设网络营销的专业知识
  • 怎么做代理ip网站陕西seo顾问服务
  • 教学设计代做去什么网站十五种常见的销售策略
  • 广东专业做网站排名哪家好链接转二维码
  • 重庆网站建设cq网络营销技巧培训班
  • 全国旅游大型网站建设推广形式有哪几种
  • 黄浦专业做网站微信附近人推广引流
  • wordpress标题连接符天津seo代理商
  • 自己的电脑做网站空间视屏品牌推广方案范文
  • 没有服务器怎么先做网站互联网营销师国家职业技能标准
  • 做视频的网站那几个盈利了海南百度推广开户
  • 电商供应链网站贵州seo培训
  • 网络科技公司网站源码腾讯广告推广平台入口
  • 大连网络备案做网站网络营销企业案例分析
  • 如何做授权网站申请域名
  • 网站建立企业中国楼市最新消息
  • 项目网站基础设施建设如何在百度推广自己
  • 中国住房和建设部网站seo建站营销
  • 网站制作群系统seo自然优化排名技巧
  • 网站设计开发制作利尔化学股票
  • python做个人网站最彻底的手机优化软件
  • 个人备案 网站名称 例子免费的短视频app大全
  • 动态网站课程设计百度极速版客服人工在线咨询
  • 东丰在线网站建设宁波seo关键词优化教程
  • 用thinkphp做的网站推广app的单子都在哪里接的