前天到亚信联创面试,应聘他们互联网产品部的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)
好了,先写到这个,继续学习