首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MY SQL存储过程、游标、触发器--Java学习网

因为存储过程实际上是一种函数,所以存储过程名后面要有()符号 删除存储过程 DROP PROCEDURE productpricing ; //删除存储过程后面不需要跟(),只给出存储过程名...productpricing(@pricelow , @pricehigh , @priceaverage); 这条CALL语句给出3个参数,它们是存储过程将保存结果的3个变量的名字 变量名...在存储过程复杂性增加时,这样很重要。在存储体中,用DECLARE语句定义了两个局部变量。...游标(cursor)是一个存储在MYSQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。...创建触发器 创建触发器需要给出4条信息 1 唯一的触发器名; //保存每个数据库中的触发器名唯一 2 触发器关联的表; 3 触发器应该响应的活动(DELETE、INSERT或

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL高级篇-容易忽略的核心内容变量

    在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。   在MySQL数据库中,变量分为系统变量以及用户自定义变量 。...静态变量(在 MySQL 服务实例运行期间它们的值不能使用 set 动态修改)属于特殊的全局系统变量。   每一个MySQL客户机成功连接MySQL服务器后,都会产生与之对应的会话。...FROM score; SELECT @avggrade; SELECT @bobo; #查看某个未声明的变量时,将得到NULL值 2.3 局部变量 定义:可以使用 DECLARE 语句定义一个局部变量...myparam INT DEFAULT 100; 变量赋值 方式1:一般用于赋简单的值 SET 变量名=值; SET 变量名:=值; 方式2:一般用于赋表中的字段值 SELECT 字段名或表达式 INTO...变量名 FROM 表; 使用变量 SELECT 局部变量名; 案例讲解: 案例1:声明局部变量,并分别赋值为student表中id为902的name和department DELIMITER //

    80920

    MySQL 存储过程

    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数...1.2、存储过程特点 用来完成较复杂业务 比较灵活,易修改,好编写,可编程性强 编写好的存储过程可重复使用 1.3、存储过程优缺点 优点 存储过程在创建的时候直接编译,sql语句每次使用都要编译,效率高...存储过程可以被重复使用。 存储过程只连接一次数据库,sql语句在访问多张表时,连接多次数据库。 存储的程序是安全的。存储过程的应用程序授予适当的权限。...格式: declare 变量名 变量类型 default 默认值; #声明变量 set 变量名=值; #变量赋值 select 字段名 into 变量名 from 数据库表; #查询表中字段,完成变量赋值...select 变量名; #显示变量 案例: 查看员工表中id=1的员工的姓名 create procedure emp_name() begin declare ename varchar(20)

    37.3K20

    MySQL系列:(3)MySQL加强

    ,约束别人的表称为主表,外键设置在副表上的!!!...如果在T_Persons表中的name字段中存储“李东华”,在oldname字段中存储“李叶蛾”,就会符合第一范式。 第二范式: 在第一范式的基础上,要求每张表只表达一个意思。...: select @@变量名 修改全局变量: set 变量名=新值 全局变量中的两个值:character_set_client和character_set_results。...如果连接断开,那么会话变量全部丢失! 定义会话变量: set @变量=值 查看会话变量: select @变量 局部变量: 在存储过程中使用的变量就叫局部变量。...只要存储过程执行完毕,局部变量就丢失!! 4、存储过程 4.1、什么是存储过程 存储过程,是带有逻辑的sql语句。

    74910

    mysql存储过程实例_sql存储过程创建实例详解

    (如果该存储过程带有参数)来调用执行它。...存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2).存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。...在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。...关于MySQL的存储过程 存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。...如果我们想知道,某个存储过程的详细,那我们又该怎么做呢?是不是也可以像操作表一样用describe 表名进行查看呢?

    2.3K20

    数据库中的存储过程、游标、触发器与常用的内置函数

    ) (1)after insert 触发器,在插入数据之后获得@id变量以显示最新的自增长ID (2)after delete 触发器,把被删除的行数据保存在一个存档表中 (3)before update...(如果该存储过程带有参数)来执行它。...(2)作用 存储过程吧处理封在容易使用的单元中,简化复杂的操作; 确保大家都使用到统一的代码; 独立授权,简化管理,增加安全性; 编译执行,提高性能。...#(5)AFTER DELETE #(6)AFTER UPDATE 3.2 示例(本节使用MySQL描述) (1)after insert 触发器,在插入数据之后获得@id变量以显示最新的自增长ID...(date,interval expr type) 在date的基础上添加expr时间间隔,如:SELECT ADDDATE(NOW(), INTERVAL 1 DAY); 在date的基础上减去expr

    1.4K40

    Mysql-2

    MySQL用户数据和权限有修改后,搜索希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令 */ MySQL权限管理 授权 --语法格式: grant 权限列表 on 库名...所谓视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储数据值的形式存在。...行和列的数据来自定义视图的查询所引用基本表,并且在具体使用视图时动态生成。  视图有如下特点;       1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系。      ...(如果该存储过程带有参数)来调用执行它。...一、存储过程   存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户 通过指定存储过程的名字并给出参数(如果该存储过程带有参数

    2.7K50

    Mysql存储过程

    如果表名、列名或业务逻辑有变化。只需要更改存储过程的代码,使用它的人员不会改自己的代码了都。...BEGIN和END语句用来限定存储过程体,过程体本身是个简单的SELECT语句  在MYSQL处理这段代码时会创建一个新的存储过程productpricing。没有返回数据。... 变量名  所有的MySQL变量都必须以@开始  使用变量 SELECT @priceaverage ; SELECT @pricelow , @pricehigh...建立智能的存储过程  上面的存储过程基本都是封装MySQL简单的SELECT语句,但存储过程的威力在它包含业务逻辑和智能处理时才显示出来  例如:你需要和以前一样的订单合计,...在存储过程复杂性增加时,这样很重要。在存储体中,用DECLARE语句定义了两个局部变量。

    6.1K30

    【重学 MySQL】七十五、揭秘存储过程的分类与实战案例,让你的数据库操作更高效!

    在MySQL数据库中,存储过程是一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。...复杂存储过程通常用于业务逻辑复杂、数据关联度高的场景,比如报表生成、数据处理等。 MySQL存储过程的实战案例 创建和调用无参数的存储过程 案例要求:向boys表中插入数据。...('小昭'); 创建和调用带OUT模式参数的存储过程 案例要求:根据女生名,返回对应的男生名。...b*2; END$ 调用存储过程: SET @c=2; SET @d=10; call mypr05(@c,@d); select @c, @d; 通过以上分类和实战案例,相信你对MySQL存储过程有了更深入的了解...在实际应用中,可以根据业务需求选择合适的存储过程类型,并通过创建、调用、删除和查看等操作来管理存储过程,从而提高数据库操作的效率和性能。

    10710

    【Python】高级笔记第三部分:数据库的视图、函数、事务和安全

    视图可以理解为一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录。...定义局部变量 : 在函数内部设置 declare [变量名] [变量类型]; 局部变量使用 set 赋值或者使用 into 关键字。...类型参数可以接收变量也可以接收常量,传入的参数在存储过程内部使用即可,但是在存储过程内部的修改无法传递到外部。...OUT 类型参数只能接收一个变量,接收的变量不能够在存储过程内部使用(内部为NULL),但是可以在存储过程内对这个变量进行修改。因为定义的变量是全局的,所以外部可以获取这个修改后的值。...INOUT 类型参数同样只能接收一个变量,但是这个变量可以在存储过程内部使用。在存储过程内部的修改也会传递到外部。

    80330

    MySQL存储过程

    存储过程的优点: (1).增强SQL语言的功能和灵活性:存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。...在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。...MySQL的存储过程 存储过程是数据库的一个重要的功能,MySQL 5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。...用户变量 用户变量一般以@开头 注意:滥用用户变量会导致程序难以理解及管理 #在MySQL客户端使用用户变量 SELECT 'Hello World' into @x; SELECT @x; SET...MySQL存储过程的控制语句 变量作用域 内部变量在其作用域范围内享有更高的优先权,当执行到end时,内部变量消失,不再可见了,在存储 过程外再也找不到这个内部变量,但是可以通过out参数或者将其值指派给会话变量来保存其值

    13.7K30

    MySQL5_存储过程-sql编程-函数-触发器-用户管理

    文章目录 MySQL_存储过程-sql编程-函数-触发器-用户管理 建立表 1.存储过程(procedure) (1)创建存储过程 (2)参数的类别 (3)删除存储过程 (4)查看存储过程的信息 (5)...局部变量 (6)全局变量(用户变量) (7)系统变量 (8)带有输出参数的存储过程 (9)带有输入输出参数的存储过程 2.SQL编程(了解) (1) if-elseif-else语句 (2) case-when...sid=param; end// #调用 call pro_2(5)// (2)参数的类别 在存储过程中,没有return,如果需要返回值,通过输出参数来实现 在MySQL中,参数分为3类,输入参数...#带有out关键字的参数,在存储过程运行结束以后,默认返回 create procedure pro_6(in num int,out result int) begin set result=num...myfun_1(100,200)// #删除函数 drop function myfun_1// 4.触发器 1、触发器是一个特殊的存储过程 2、不需要直接调用,在MySQL自动调用的 3、是一个事务

    1.3K20

    sql期末复习整理

    -- 基本查询select 显示的字段 from xxx表名;-- 条件查询select * from 表名where 条件;-- 分组查询select * from 表名group by 按什么分组?...(ssex 按照性别分组) 一般与聚合函数连用.-- 分组之后 在筛选select * from 表名group by 按什么分组?...,指出类型,给联系命名并给出联系的属性(3分)(3) 画出E-R图(5分)(4) 将E-R图转换为关系模式,给出每个表的主键及数据库中的各个外部关系键。...在一个SELECT语句中,当WHERE子句、GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序如何?6. 在使用JOIN关键字指定的连接中,怎样指定连接的多个表的表名?...简述在MySQL中创建索引、查看索引和删除索引的语句。MySQL编程技术1. 什么是存储过程?简述存储过程的特点。2. 存储过程的参数有哪几种类型?分别写出其关键字。3. 用户变量和局部变量有何区别?

    29610

    MySQL 之存储过程

    存储过程是数据库存储的一个重要的功能,MySQL在5.0以前的版本不支持存储过程,存储过程可以在大大提高数据库处理速度的同时提高数据库编程的灵活性。 1、什么是存储过程?...可增强:SQL 语句的功能和灵活性 存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。...-> declare summary int; # 定义一个变量名 -> set n=0; # 设置变量的初始值为0 -> set...case的存储过程 该存储过程实现结果为:当传入的值为偶数时,输出t1表中s_id列为偶数的行,如果传入的值为奇数,输出s_id列为奇数的行,否则输出空 mysql> delimiter // mysql...SHOW SHOW CREATE PROCEDURE 存储过程名 # 查看某个存储过程的详细信息 9、附加:如何复制表 方法1:like方法能一模一样的将一个表的结果复制生成一个新表

    2.6K30

    MySQL 教程下

    因为存储过程实际上是一种函数,所以存储过程名后需要有()符号(即使不传递参数也需要)。...存储过程的代码位于BEGIN和END 语句内,如前所见,它们是一系列 SELECT 语句,用来检索值,然后保存到相应的变量(通过指定 INTO 关键字)。 用 DECLARE 语句可定义局部变量。...DECLARE 要求指定变量名和数据类型,它也支持可选的默认值。 COMMENT 关键字 存储过程在CREATE PROCEDURE语句中可包含了一个COMMENT值。...游标(cursor)是一个存储在 MySQL 服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。...创建触发器 在创建触发器时,需要给出 4 条信息: ❑ 唯一的触发器名; ❑ 触发器关联的表; ❑ 触发器应该响应的活动(DELETE、INSERT 或 UPDATE); ❑ 触发器何时执行(

    1.1K10

    MySQL命令,一篇文章替你全部搞定

    而这两个方面又可以细分如下: MySQL常用语句 表(或者数据库)的CRUD 表数据的CRUD,其中表数据查询使用最多,也更复杂。...存储过程简单来说,就是为了复用性或者实现复杂的业务功能,而保存的一条或多条MySQL语句的集合,可将其视为批文件; 为什么使用存储过程?...注意MySQL中定义变量时都是变量名在前,数据类型在后。 3. 存储过程具体逻辑写在BEGIN END之间; 4. 将值赋给变量使用INTO关键字; 5....如果存储过程中定义了OUT类型的输入参数,那么在执行存储过程时需要传入变量,如这里@total,并且变量都是用@开始的。...创建触发器时需要给出最重要的四条信息:1.全局唯一的触发器名;2.触发器关联的表;3.触发器在何时执行(操作执行之前或者之后)4.触发器应该响应的活动(DELETE, INSERT或者UPDATE);

    2.6K20

    MySQL 简单查询语句执行过程分析(二)查询准备阶段

    本文是 MySQL 简单查询语句执行过程分析 6 篇中的第 2 篇,第 1 篇请看这里: MySQL 简单查询语句执行过程分析(一)词法分析 & 语法分析 这一篇主要讲的内容是一条简单查询语句,在查询准备阶段会干哪些事情...MySQL 打开表的过程比较复杂,读取 frm 文件并进行处理的一个方法就有 1700+ 行代码,还不包括调用的其它方法。...正是因为打开表的过程复杂,而代码复杂意味着执行效率下降,这对于 MySQL 来说是不能接受的,所以必定要有优化手段。...2. select * 替换为表字段 我们在写 select 语句的过程中,经常会用到星号(*),表示查询表中所有字段,但是表中并没有一个星号字段用来表示所有字段,所以在查询准备阶段,会把星号替换为表中的所有字段...只有像 where 数据库名.表名.字段名 > 49276 这样,字段前面带有限定的数据库名和表名时,找到一个字段之后,才能立马结束查找过程,而不用遍历整个查询语句中使用到的所有表。

    1.1K20

    select count(*) 底层到底干了啥?

    在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为 O(N),其中 N 为表的行数。...正如我们如果用脚本/程序来进行逐行的扫表操作,实现上就会涉及下面 2 个 SQL: ? 具体涉及到此例的代码,SQL 层到存储引擎层的调用关系,读取阶段的调用栈如下:(供参考) ?...SELECT COUNT(col_name) FROM t col_name 可以是主键、唯一键、非唯一键、非索引字段 (2)如果 COUNT 中带有 * ,则会判断这部分的整行是否为 NULL,如果判断参数为...3、SELECT COUNT( * ) FROM t 会直接读取内存中的表 t 对应的 count 变量值。...共性:共性存在于 SQL 层,即 SQL 解析之后的数据结构是一致的,count 变量都是存在于作为结果列的 Item_sum_count 类型对象中;返回给客户端的过程也类似 – 对该 count 变量进行赋值并经由

    1.3K20

    MySQL(十一)视图及存储过程

    1、使用视图的好处 ①重用SQL语句; ②简化复杂的SQL操作(可以方便的重用它而不必知道它的基本查询细节); ③使用表的组成部分而不是整个表; ④保护数据(可以给用户授予表的部分访问权限而不是整个表的访问权限...),'(',RTrim(vend_country),')') AS vend_title from vendors order by vend_name; 这条SQL语句使用select语句创建视图,在单个组合计算列中返回供应商名和位置...1、为什么要使用存储过程(简单、安全、高性能) ①通过把处理封装在容易使用的单元中,简化复杂的操作; ②不要求建立一些列处理步骤,保证了数据的完整性; ③简化对变动的管理(如果表名、列名或业务逻辑变更,...begin和end语句用来限定存储过程体,过程本身仅是一个select语句以及avg()函数。 注意事项:MySQL命令行客户机的分隔符 默认的MySQL语句分隔符为;。...; 这条语句删除刚才创建的存储过程;注意,后面没有使用(),只给出存储过程名。

    73510
    领券