MySQL存储结构的使用
2024-09-06 15:36:55
前言
今天公司老大让我做一个MySQL的调研工作,是关于MySQL的存储结构的使用。这里我会通过3个样例来介绍一下MySQL中存储结构的使用过程,以及一些须要注意的点。
笔者环境
系统:Windows 7
MySQL:MySQL 5.0.96
准备工作
1.新建两张数据表:student1, student2
新建student1
DROP TABLE IF EXISTS student1;
CREATE TABLE student1 (
id INT NOT NULL auto_increment,
name TEXT,
age INT,
PRIMARY KEY(id)
);
新建student2
DROP TABLE IF EXISTS student2;
CREATE TABLE student2 (
id INT NOT NULL auto_increment,
name TEXT,
age INT,
PRIMARY KEY(id)
);
2.向student1中新增数据
INSERT INTO student1 (name, age) VALUES ('xiaoming', 18);
INSERT INTO student1 (name, age) VALUES ('xiaohong', 17);
INSERT INTO student1 (name, age) VALUES ('xiaogang', 19);
INSERT INTO student1 (name, age) VALUES ('xiaoyu', 18);
INSERT INTO student1 (name, age) VALUES ('xiaohua', 20);
实现功能说明
1.打印student1中的部分信息
2.把student1中的部分数据拷贝到student2中
3.传入參数作为限制条件,把student1中的部分数据拷贝到student2中
注意事项
在编写存储结构的时候。我们不能以分号(;)结束。由于我们的SQL语句就是以分号(;)结尾的。这里我们要改动一下存储结构的结束符号(&&)。
这里我们使用MySQL中的DELIMITER进行改动,并在存储结构创建完成时,再改为分号(;)结束就可以。
关于这一点在后面的样例中有所体现。在编写MySQL的触发器中,也会用到相似的情况。
使用方式
1.打印student1中的部分信息
---------------------------------------------------------------
DROP PROCEDURE IF EXISTS test_pro1;
---------------------------------------------------------------
DELIMITER &&
CREATE PROCEDURE test_pro1()
BEGIN
set @sentence = 'select * from student1 where age<19;';
prepare stmt from @sentence;
execute stmt;
deallocate prepare stmt;
END &&
DELIMITER ;
2.复制表存储过程的编写(不带參数)
---------------------------------------------------------------
DROP PROCEDURE IF EXISTS test_pro2;
---------------------------------------------------------------
DELIMITER &&
create procedure test_pro2()
begin
DECLARE stop_flag INT DEFAULT 0;
DECLARE s_name TEXT default '';
DECLARE s_age INT default 0; DECLARE cur1 CURSOR FOR (select name, age from student1 where age<19);
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1;
open cur1;
fetch cur1 into s_name, s_age;
while stop_flag<>1 DO
insert into student2(name, age) values(s_name, s_age);
fetch cur1 into s_name, s_age;
end while;
close cur1;
end &&
DELIMITER ;
3.复制表存储过程的编写(带參数)
---------------------------------------------------------------
DROP PROCEDURE IF EXISTS test_pro3;
---------------------------------------------------------------
DELIMITER &&
create procedure test_pro3(IN p_age INT)
begin
DECLARE stop_flag INT DEFAULT 0;
DECLARE s_name TEXT default '';
DECLARE s_age INT default 0; DECLARE cur1 CURSOR FOR (select name, age from student1 where age<p_age);
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1;
open cur1;
fetch cur1 into s_name, s_age;
while stop_flag<>1 DO
insert into student2(name, age) values(s_name, s_age);
fetch cur1 into s_name, s_age;
end while;
close cur1;
end &&
DELIMITER ;
这里的SQLSTATE '02000'和NOT FOUND系统返回值是一样的。
4.使用方式
call test_pro1();
or
call test_pro1(123);
最新文章
- Node.js 究竟是什么?
- 客户端连接linux经常间隔性断开链接
- Android Debugging
- Linux下smba服务端的搭建和客户端的使用
- Ubuntu开发环境搭建
- 选择下拉列表最大索引值 Select From List By Max Index
- (原创)win7自带IIS7.5+php7.0.10安装教程(图)
- 树莓PI安装web服务器
- Polyfills
- JSP简单标签标签库开发
- 201521123066 《Java程序设计》第十一周学习总结
- 使用fiddler轻轻松松制造客户端接口time out的情况
- Android Studio waiting for debugger 卡死
- 【4】 .net MVC使用Session验证用户登录
- apiCloud app调用浏览器打开网页的方法
- 〖Linux〗clang3.4的编译与安装
- iOS-封装UIPickerView
- 002servlet生命周期以及有关servlet的各种知识
- 【转】Spring Boot 日志配置(超详细)
- PHP获取当前文件路径
热门文章
- 关于Error:Maven&#160;Resources&#160;Compiler:&#160;Maven&#160;project&#160;configuration&#160;required&#160;for&#160;module&#160;&#39;项目名&#39;&#160;isn&#39;t&#160;available.&#160;Compilation&#160;of&#160;Maven&#160;projects&#160;is&#160;supported&#160;only&
- SQL Server连接不上本地服务器
- 怎么给xshell服务配置密钥远程登陆
- 如何用纯 CSS 创作一个荧光脉冲 loader 特效
- php S3
- elasticsearch 中文 term &; completion suggester
- POJ 3259 Wormholes(负权环路)
- Java基础学习总结(90)——Java单元测试技巧
- Jquery跨域请求
- Codeforces Round #387 (Div. 2) A+B+C+D!