• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL储存结构的使用_mysql

mysql 搞代码 7年前 (2018-06-07) 108次浏览 已收录 0个评论

mysql存储结构的使用

前言:

  今天公司老大让我做一个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 ;

   

4.使用方式:

call test_pro1(); or call test_pro1(123);

版权声明:本文为博主原创文章,未经博主允许不得转载。http://blog.csdn.net/lemon_tree12138

欢迎大家阅读《MySQL储存结构的使用_mysql,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL储存结构的使用_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址