两天前同事的一个日志模块事件备份老是报内存溢出错误,正好有点时间研究了一下。日志的备份时查询所有的记录,写到一个文件了。(虽然从实用的角度,数据库备份有很多中非常有效方法,请先不要鄙视这种做法:尊重真理一样尊重需求才是一个好的工程师)
Mysql触发器:
当对表格进行某张表格进行插入、更新、删除的之前、之后对数据库进行一些操作,比如:添加用户的时候记录插入一条日志记录到日志表。
Mysql存储过程:
存储过程是一段复杂的SQL语句,可以包装成函数的形式,让后代码中只要回调这个函数就行,可以实现分页、数据备份什么的。
这里只是一个简单的笔记,相关的资料网上很多,建议边用边查。
select * into outfile "d:\\Windows.txt" from t_windows;
LOAD DATA INFILE "d:\\Windows.txt" INTO TABLE t_windows;
完整的分页存储过程:
CREATE PROCEDURE p_pageList (
m_pageNo int , //页数
m_perPageCnt int , //每页的记录数
m_column varchar(1000) , //查询的字段
m_table varchar(1000) , //要分页的表
m_condition varchar(1000), //分页条件
m_orderBy varchar(200) , //分组
out m_totalPageCnt int //总记录数
)
BEGIN
SET @pageCnt = 1; // 总记录数
SET @limitStart = (m_pageNo - 1)*m_perPageCnt; //起始记录数
SET @limitEnd = m_perPageCnt; //每页记录数
SET @sqlCnt = CONCAT('select count(1) into @pageCnt from ',m_table); // concat 字符串函数,这条语句很关键,用来得到总数值
SET @sql = CONCAT('select ',m_column,' from ',m_table); //查询的字段
IF m_condition IS NOT NULL AND m_condition <> '' THEN
SET @sql = CONCAT(@sql,' where ',m_condition);
SET @sqlCnt = CONCAT(@sqlCnt,' where ',m_condition);
END IF;
IF m_orderBy IS NOT NULL AND m_orderBy <> '' THEN
SET @sql = CONCAT(@sql,' order by ',m_orderBy);
END IF;
SET @sql = CONCAT(@sql, ' limit ', @limitStart, ',', @limitEnd); //查询语句
PREPARE s_cnt from @sqlCnt; //预定义语句
EXECUTE s_cnt; //执行
DEALLOCATE PREPARE s_cnt; //释放资源
SET m_totalPageCnt = @pageCnt; //总记录数
PREPARE record from @sql;
EXECUTE record;
DEALLOCATE PREPARE record;
END
每个人的需求不同,不要指望拷贝下去就可以使用,仿照格式套路自己多调式调式。
分享到:
相关推荐
Mysql存储过程游标触发器
MySQL 存储过程和触发器详解 MySQL 存储过程是指一组为了完成特定功能的 SQL 语句集合。存储过程的优点包括: 1. 封装性:存储过程可以将多个 SQL 语句封装在一起,方便调用和维护。 2. 可增强 SQL 语句的功能和...
通过这些实验步骤,学生能够深入理解存储过程和触发器的工作原理及其在实际数据库应用中的作用。同时,这些操作也展示了如何在数据库管理系统中编写和管理这些数据库对象,有助于提升数据库设计和管理能力。
MySQL中的存储过程和触发器是数据库管理中两个重要的概念,它们极大地增强了数据库的功能和灵活性。 存储过程是一种预编译的SQL语句集合,它可以视为数据库中的一个可执行对象。存储过程有以下几个显著优点: 1. *...
MySQL中的存储过程和触发器是数据库管理中两个重要的高级特性,它们极大地增强了数据库的灵活性和安全性,同时也优化了性能。 **存储过程**是预编译的SQL语句集合,存储在数据库服务器上,可以在需要时被调用执行,...
通过深入学习和掌握MySQL的函数、触发器和存储过程,开发者能够更加高效地管理和操作数据库,解决复杂的数据处理问题,提升应用程序的性能。在实际项目中,熟练运用这些特性是数据库设计和优化的关键。通过"mysql...
文件“MySQL存储过程.pdf”和“OReilly.MySQL.Stored.Procedure.Programming.rar”可能会提供关于如何创建、调用和管理MySQL存储过程的详细指南,而“MySQL触发器.rar”则可能包含触发器的创建、使用和优化方面的...
MySQL是目前最流行的开源关系型数据库管理系统之一,它提供了...在本文中,我们学习了MySQL存储过程的定义和优点,触发器的概念,以及事务的基本原理。通过这些高级特性,我们可以开发出更稳定、高效的数据库应用程序。
调试存储过程和触发器是开发和优化数据库应用程序的关键步骤。以下是使用Toad进行调试的基本步骤和要求: **调试需求:** 1. **SYS.DBMS_DEBUG** 库必须可用。这是Oracle提供的调试API,用于设置断点和检查变量。 2...
总的来说,通过学习“mysql经典教程+mysql存储过程讲解”,你不仅可以掌握MySQL的基础操作,还能深入了解如何利用存储过程、触发器和游标来实现更复杂的数据管理策略。这将有助于你成为一名更高效的数据库管理员或...
综上所述,MySQL中的索引、视图、触发器、游标、事务和存储过程都是高级特性,这些工具可以帮助开发人员更好地管理和操作数据库。通过对这些概念的理解和实践,可以大幅提升数据库应用的性能和可靠性。
#### 二、MySQL存储过程 存储过程是一组预编译的SQL语句,它们可以作为一个单元调用并执行。使用存储过程可以提高代码重用性和执行效率,并且可以封装复杂的逻辑处理。 **示例:** 本例中创建了一个存储过程`sp_...
《MySQL数据库项目式教程》项目七++存储过程与触发器
综上所述,实验报告详细介绍了MySQL中存储过程的创建与调用,使用游标、异常处理及参数传递等高级特性。通过这些内容,读者能够更好地理解MySQL数据库中存储过程和函数的高级用法,提高数据库编程能力。
本文实例讲述了mysql触发器之创建多个触发器操作。分享给大家供大家参考,具体如下: 这次记录的内容mysql 版本必须得是5.7.2+的哈,之前的会不好使的。废话不多说,咱们开始正文哈。 在mysql 5.7.2+版本之前,我们...
MySQL是世界上最流行的开源关系型数据库管理系统之一,它包含多种功能,如函数、存储过程、触发器和游标,这些功能极大地增强了数据库管理的灵活性和效率。以下是对这些概念的详细解释: 1. **MySQL函数**:MySQL...
MySQL触发器是数据库管理系统提供的一种机制,用于在特定的数据操作(如INSERT、UPDATE、DELETE)发生之前或之后...学习更多关于MySQL的内容,包括查询技巧、事务处理以及存储过程,将有助于进一步提升数据库管理能力。
### MySQL中的存储过程和触发器的概念及其作用 #### 存储过程 存储过程(Stored Procedure)是MySQL中一种重要的数据库对象,它本质上是一段预先定义并编译好的SQL语句集合,存储在数据库服务器上。当需要执行这些...
实验是在MySQL 8.0.23环境下进行的,要求参与者具备一定的存储过程和触发器基础知识,以及如何在MySQL中创建和执行它们的技能。 **实验步骤** 实验分为两大部分:存储过程的创建和执行,以及触发器的设定和测试。...