Mysql存储过程 之 “Hello,World”

前天到亚信联创面试,应聘他们互联网产品部的java开发实习生,我有一段时间没关系数据库方面的知识了,而面试时这方面的问题又非常多,面试过程可想而知的悲催了,哎,不提了 ,好好学习才是正事。

回来之后就把数据库的知识恶补一通,一般的sql语句基本上搞定了,那就再摸索点高深的东东。这就遇到了存储过程。之前学习存储过程仅限于理论,现在通过万能的搜索引擎,找到了一些资料,便照着做一下吧。自己机器上安装的是MySql5.5,MySql自5.0就开始支持存储过程了,幸甚!!

刚看了开头就发现单纯的MySql还不能够实践存储过程,导入一个叫"mysql_fix_privilege_tables"的东西,官方介绍这个叫做‘Upgrade MySql system table’,好像是调整MySql版本的东西,不管他,自己下载了导入就好。

开始建立练习用的数据库和表:

mysql> CREATE DATABASE db5; 
Query OK, 1 row affected (0.01 sec) 
 
mysql> USE db5; 
Database changed
 
mysql> CREATE TABLE t (s1 INT); 
Query OK, 0 rows affected (0.01 sec) 
 
mysql> INSERT INTO t VALUES (5); 
Query OK, 1 row affected (0.00 sec)  

这个尽量简单,好把注意力放在存储过程上,开始存储过程之前还有一个工作要做,就是修改MySql的结束符,系统默认的是‘;’不过要建立存储过程,再用这个默认的分号就不方便了,把结束符改为‘//’,操作起来很简单,命令:DELIMITER // ,搞定;

好了,建立第一个存储过程:

CREATE PROCEDURE p1 () SELECT * FROM t; // 

SQL语句存储过程的第一部分是 “CREATE PROCEDURE”:第二部分是过程名,上面新存储过程的名字是p1。这个很容易理解,就是一个简单的select语句;

mysql> CALL p1() // 
+------+ 
| s1   | 
+------+ 
|    5 | 
+------+ 
1 row in set (0.03 sec) 
Query OK, 0 rows affected (0.03 sec)  

当调用这个存储过程的时候,会得到这个结果。

再练习一个打印‘Hello,Worle!’的存储过程:


CREATE PROCEDURE HelloWorld()

select 'Hello,World!' //

调用:

mysql> CALL HelloWorld()//
+-------------+
| Hello,World |
+-------------+
| Hello,World |
+-------------+
1 row in set (0.00 sec)

好了,先写到这个,继续学习

你可能感兴趣的:(初学MySql存储过程)