mysql创建存储过程

Mysql的函数使用方法

你说的曾经没有我的故事 提交于 2020-02-14 02:45:20
今天有点临时需求要计算一张表的结果,不想写代码,想到了mysql的自定义函数。碰到了很多问题,为了方便一下使用,在此记录一下。 需求:一张表中,有比分,需要查询出比赛id和比赛结果。 分析: 单表查询没啥的,困难就困难在怎么判断比分之后返回想要的结果。 这里我把比赛结果分别定义代号,1主场胜、2平局、3客场胜 函数逻辑: 接收两个参数,判断参数的大小,分别返回结果。 实现: Navicat操作: navicat for mysql 工具内--创建函数 这里分别是存储过程和函数,我们选择函数 设置参数,这里的参数是接收的参数,例如 count(id) 接收一个参数 下一步,设置返回类型 点击完成即可。会出现以下界面 现在开始在BEGIN ..END;;中间写逻辑,具体语法需要百度。 我这里主要是if...elseif..else的逻辑,代码如下: 保存--getMatchResult。如果语法有错误,保存会报错,根据提示信息去查找错误。 使用函数: 我这里为了方便,直接写了两个参数,结果跟预想一样。 第一个参数是主场分数,第二个参数是客场分数, 3表示客场胜。 Mysql 创建函数 进入mysql shell,因为中间有很多分号,所以需要使用delimiter分界。该命令表示,把默认的分号执行改成其他符号执行。 这里使用demiter修改分解符为// ,如果还是使用分号分界则报错了

MySQL 存储过程 详解

不打扰是莪最后的温柔 提交于 2020-02-14 01:48:38
什么是 MySQL 存储例程? 存储例程是存储在数据库服务器中的一组sql语句,通过在查询中调用一个指定的名称来执行这些sql语句命令。 为什么要使用 MySQL 存储过程? 我们都知道应用程序分为两种,一种是基于web,一种是基于桌面,他们都和数据库进行交互来完成数据的存取工作。假设现在有一种应用程序包含了这两 种,现在要修改其中的一个查询sql语句,那么我们可能要同时修改他们中对应的查询sql语句,当我们的应用程序很庞大很复杂的时候问题就出现这,不易维护!另外把sql查询语句放在我们的web程序或桌面中很容易遭到sql注入的破坏。而存储例程正好可以帮我们解决这些问题。 基本语法 声明语句结束符,用于区分; DELIMITER // 声明存储过程CREATE PROCEDURE demo_in_parameter(IN p_in int) 存储过程开始和结束符号 BEGIN .... END 变量赋值 SET @p_in=1 变量定义 DECLARE l_int int unsigned default 4000000; 存储过程简单示例: DELIMITER // CREATE PROCEDURE proc1(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM user; END // DELIMITER ; 注: (1)这里需要注意的是

MySQL数据库-初始数据库,库操作,表操作

限于喜欢 提交于 2020-02-13 22:38:36
初识数据库 数据库管理软件的由来: 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。 数据库概述 1 什么是数据(Data) 描述事物的符号记录称为数据 2 什么是数据库(DataBase,简称DB) 数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的 3 什么是数据库管理系统(DataBase Management System 简称DBMS) 在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键 这就用到了一个系统软件---数据库管理系统 4 数据库服务器、数据管理系统、数据库、表与记录的关系 记录:1 刘海龙 324245234 22(多个字段的信息组成一条记录,即文件中的一行内容) 表:student,scholl,class_list(即文件) 数据库:oldboy_stu(即文件夹) 数据库管理系统:如mysql(是一个软件) 数据库服务器:一台计算机(对内存要求比较高) 总结: 数据库服务器-:运行数据库管理软件

Mysql—存储过程

坚强是说给别人听的谎言 提交于 2020-02-11 00:51:59
存储过程   含义: 一组预先编译好的SQL语句的集合,理解成批处理语句   好处:     1、提高代码的重用性     2、简化操作     3、减少了编译次数并且减少了和数据库连接的次数,提高了效率 一、创建语法: CREATE PROCEDURE 存储过程名称(参数列表)   BEGIN     存储过程体(一组合法的SQL语句)   END   注意:  1、参数列表包含三部分     参数模式 参数名 参数类型     举例:       IN setuname VARCHAR(20)     参数模式:       IN:该参数可以作为输入, 也就是这参数需要调用方传入值       OUT:该蚕食可以作为输出,也就是该参数可以作为返回值       INOUT:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值。   2、如果存储过程中只有一条语句 BEGIN END可以省略   存储过程体重的每条SQL语句的结尾要求必须加分号   存储过程的结尾可以使用DELIMITER 重新设置   语法:     DELIMITER 结束标记     案例:     DELIMITER $    二、调用语法:   CALL 存储过程名(参数列表);     1、空参列表     案例:插入到admin表中五条记录     DELIMITER $   

面试你所要知道的:MySQL存储过程

我与影子孤独终老i 提交于 2020-02-09 13:00:35
存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。 存储过程的优点: (1).增强SQL语言的功能和灵活性:存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2).标准组件式编程:存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3).较快的执行速度:如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 (4).减少网络流量:针对同一个数据库对象的操作

mysql数据库-进阶-长期维护

雨燕双飞 提交于 2020-02-08 01:49:08
############### 视图 ############## """ 1.视图 视图:是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据 视图有如下特点; 1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系。 2. 视图是由基本表(实表)产生的表(虚表)。 3. 视图的建立和删除不影响基本表。 4. 对视图内容的更新(添加、删除和修改)直接影响基本表。 5. 当视图来自多个基本表时,不允许添加和删除数据。 1.创建视图 create view 视图名称 as sql 查询语句 2.使用视图 select * from 视图名称; 3.更新视图 alter view 视图名称 AS SQL语句 4. 删除视图 drop view ren_view; """ ############### 触发器 ############## """ 2.触发器-trigger 触发器:监视某种情况,并触发某种操作。 触发器创建语法四要素: 1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 1.创建触发器语法 create trigger triggerName after/before insert/update

mysql存储过程基础

别说谁变了你拦得住时间么 提交于 2020-02-07 19:23:31
存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。 存储过程的优点: (1). 增强SQL语言的功能和灵活性 :存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 标准组件式编程 :存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 较快的执行速度 :如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 (4).减少网络流量

MySQL批量插入数据脚本

坚强是说给别人听的谎言 提交于 2020-02-07 04:14:08
函数和存储过程:用sql脚本语言所写的数据库编程,函数有返回值,存储过程无返回值 往表里插入1000W数据: 1、建表 2、设置参数log_bin_trust_function_creators 3、创建函数,保证每条数据都不同(DELIMITER 表 示 定 义 m y s q l 语 句 以 表示定义mysql语句以 表 示 定 义 m y s q l 语 句 以 为结束符) 随机产生字符串 随机产生部门编号 4、创建存储过程: 创建往emp表里插入数据的存储过程 创建往dept表中插入数据的存储过程 5、调用存储过程 dept(mysql结束符改回;) emp 来源: CSDN 作者: 昔拉天使 链接: https://blog.csdn.net/qq_39885372/article/details/104199003

MySQL学习笔记——〇四

妖精的绣舞 提交于 2020-02-06 01:15:42
今天我们继续对MySQL内容进行一些补充,但是今天所讲的内容已经不是平时常用的了。 先穿插一条指令贯穿了今天所讲的所有知识点: MySQL结束符 结束符delimiter其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。 但是在今天的知识点中我们经常需要用到begin...end这种结构体,那么在结构体中的sql语句后的分号就不能作为结束符了,我们需要随便设置一个结束符,在结构体结束后再换回分号。 MySQL视图(View) 如果我们在日常进行数据库维护过程中需要一个重复的虚拟表,这个虚拟表的构建过程我们要敲很多次,MySQL给我们提供了一个对齐进行优化的方法_视图(View)。 视图的创建 比方我们今天需要对一个用户表中id>10的用户进行操作,这个操作要重复好多好多次,那么我们就要写好多次这样的代码 select *from (select * from table where id>10) as t; 这个时候,为了提高效率,我们就可以创建一个视图 create view v1 as select * from table where id>10; 这个时候我们只需要调用v1就可以了。 注意:视图是一个虚拟的表,是动态的

我的MYSQL学习心得(十) 自定义存储过程和函数

一曲冷凌霜 提交于 2020-02-01 20:20:30
自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL。 所以UDF是对MySQL功能的一个扩展 创建和删除自定义函数语法: 创建UDF:    CREATE [AGGREGATE] FUNCTION function_name(parameter_name type,[parameter_name type,...])    RETURNS {STRING|INTEGER|REAL}   runtime_body 简单来说就是:    CREATE FUNCTION 函数名称(参数列表)   RETURNS 返回值类型   函数体 删除UDF:    DROP FUNCTION function_name 调用自定义函数语法:    SELECT function_name(parameter_value,...) 语法示例: 创建简单的无参UDF CREATE FUNCTION simpleFun()RETURNS VARVHAR(20) RETURN "Hello World!"; 说明: UDF可以实现的功能不止于此,UDF有两个关键点,一个是参数,一个是返回值, UDF可以没有参数,但UDF必须有且只有一个返回值 在函数体重我们可以使用更为复杂的语法,比如