book内容:
id
|
name
|
appraisal
|
1
|
max
|
A
|
2
|
max
|
B
|
3
|
kelongmao
|
C
|
4
|
zero
|
D
|
5
|
kelongmao
|
E
|
6
|
max
|
F
|
7
|
zero
|
G
|
8
|
kelongmao
|
H
|
9
|
zero
|
I
|
book2 内容:
id
|
name
|
appraisal
|
1
|
max
|
ABF
|
2
|
zero
|
DG
|
3
|
kelongmao
|
CEH
|
create table book(
id int primary key,
name varchar(20),
appraisal varchar(20)
);
create table book2(
id int primary key,
name varchar(20),
appraisal varchar(20)
);
insert into book values(1, 'max', 'A');
insert into book values(2, 'max', 'B');
insert into book values(3, 'kelongmao', 'C');
insert into book values(4, 'zero', 'D');
insert into book values(5, kelongmao, 'E');
insert into book values(6, 'max', 'F');
insert into book values(7, 'zero', 'G');
insert into book values(8, 'kelongmao', 'H');
insert into book values(9, 'zero', 'I');
用Sql实现,将book的评论合并,填写到book2表中:
实现方案: mysql 存储过程
测试环境: mysql 数据库
存储过程如下:
DELIMITER $$
DROP PROCEDURE IF EXISTS getUserInfo $$
CREATE PROCEDURE getUserInfo(count int)
BEGIN
declare _id1 int;
declare _name1 varchar(20);
declare _app1 varchar(20);
declare _name2 varchar(20);
declare _app2 varchar(20);
declare _app3 varchar(20);
declare _app4 varchar(20);
DECLARE rs_cursor CURSOR FOR select * from book order by name;
open rs_cursor;
cursor_loop:loop
FETCH rs_cursor into _id1, _name1, _app1;
set count = count - 1;
if _name2 is NULl then
set _name2 = _name1;
set _app2 = _app1;
set _app3 = _app1 ;
elseif STRCMP(_name2 , _name1)<>0 then
insert into book2 values(_id1, _name2, _app3);
set _name2 = _name1;
set _app3 = _app1 ;
else
set _app3 = concat( _app1,_app3 );
end if;
if count < 1 then
insert into book2 values(_id1, _name2, _app3);
end if;
end loop cursor_loop;
close rs_cursor;
END$$
DELIMITER ;
调用存储过程如下:
call getUserInfo(9);
9 的的来:
select count(*) from book; --获得book中的书目条数
备注:
mysql 中调用存储过程的语句: call, 而不是exec
sql中打印数据的语句: select
赋值语句: set
执行.sql脚本: source d:\test.sql
分享到:
相关推荐
8. **MySQL游标** (05 MySQL游标.pptx) - 游标的概念和使用:学习如何在循环中逐行处理查询结果,提供更灵活的数据处理能力。 9. **50道myaql不全 不保证准确性.txt** 和 **MySql第二章练习.txt** - 这些可能是...
- **5.1版本:**增加了视图、函数、存储过程、游标、触发器和事务等功能。 - **5.0版本:**引入了子查询和索引优化。 - **4.1版本:**支持合并查询。 - **4.0版本:**实现了外键和约束功能。 #### 四、MySQL体系...
这些知识点涵盖了SQL查询、变量定义、存储过程、数据操作等多个方面,下面将逐一进行详细的解析。 ### SQL查询与数据操作 1. **补全语句**: `SELECT vend_id, COUNT(*) FROM products WHERE prod_price >= 10 ...
根据提供的文档信息,我们...通过以上内容,我们不仅了解了MySQL数据库中的一些基本概念,还深入探讨了存储过程、游标、用户权限管理和数据库设计等多个方面,这对于准备计算机二级考试的学生来说是非常重要的知识点。
MySQL笔记1主要涵盖了数据库基础、MySQL简介、使用MySQL连接、数据检索、排序、过滤、通配符与正则表达式、计算字段、函数、汇总数据、分组、子查询、联结、全文本搜索、数据插入、更新与删除、创建和操纵表、视图、...
在本项目中,我们主要探讨如何使用Python编程语言将Excel数据高效地导入到MySQL数据库中。这是一项在数据处理和分析领域中常见的任务,尤其适用于毕业设计或计算机科学相关的课程作业。下面,我们将详细介绍实现这一...
7.4.1存储过程和函数278 7.4.2触发器279 7.4.3事件281 7.4.4在存储程序中保留注释283 7.5游标283 7.6绑定变量284 7.6.1绑定变量的优化286 7.6.2SQL接口的绑定变量286 7.6.3绑定变量的限制288 7.7用户自定义...
6. **跨数据库兼容性**:不同的数据库管理系统(如MySQL、Oracle、SQL Server等)对存储过程的支持和语法有差异,这在迁移或跨平台开发时会带来额外的工作。 7. **版本控制**:在团队协作中,版本控制对于存储过程...
理解如何声明、打开、读取和关闭游标,以及在存储过程中如何使用它们。 8. **触发器**:触发器是数据库自动执行的预定义操作,当特定的DML(INSERT、UPDATE、DELETE)事件发生时触发。它们可以实现业务规则的自动化...
在存储过程中,他们定义了一个`CONTINUE HANDLER`来捕获`NOT FOUND`异常,当游标遍历完所有记录时,`NOT FOUND`会被触发,设置`done`为1,从而结束循环。然而,实际情况可能是循环逻辑的错误导致了多一次的迭代。...
通过本次实验,学生不仅掌握了SQL的基本查询语法,还学习了如何使用存储过程和存储函数进行更复杂的数据库操作。这有助于提升学生在实际项目中处理数据的能力,为后续的数据库管理与开发工作奠定了坚实的基础。 ...
MySQL提供了自定义函数的能力,比如创建用户定义的变量、游标和条件控制流程。 4. **触发器** 触发器是一种在特定数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行的SQL语句集合,可以用来实现业务规则的...
3. **存储引擎选择**:根据具体应用场景选择合适的存储引擎(InnoDB、MyISAM等)。 4. **安全性和备份策略**:定期备份数据,并实施严格的访问控制策略。 通过对以上知识点的学习和实践,可以有效地提升MySQL数据库...
3. 存储过程(Stored Procedure):存储过程是一组预编译的SQL语句,可以视为数据库中的函数,用于执行特定任务。优点包括提高性能、减少网络通信、增强安全性和模块化设计。缺点则包括调试困难、可移植性差和可能的...
在微软SQL Server中,除了标准的SQL语法,还会涉及一些特有的功能,如Transact-SQL (T-SQL),它是SQL Server的扩展,包含更多用于数据库管理和编程的元素,如存储过程、触发器和游标。而在MySQL中,学员会学习到如...