前天到亞信聯創面試,應聘他們互聯網產品部的java開發實習生,我有一段時間不要緊數據庫方面的知識了,而面試時這方面的問題又很是多,面試過程可想而知的悲催了,哎,不提了 ,好好學習纔是正事。java
回來以後就把數據庫的知識惡補一通,通常的sql語句基本上搞定了,那就再摸索點高深的東東。這就遇到了存儲過程。以前學習存儲過程僅限於理論,如今經過萬能的搜索引擎,找到了一些資料,便照着作一下吧。本身機器上安裝的是MySql5.5,MySql自5.0就開始支持存儲過程了,幸甚!!mysql
剛看了開頭就發現單純的MySql還不可以實踐存儲過程,導入一個叫"mysql_fix_privilege_tables"的東西,官方介紹這個叫作‘Upgrade MySql system table’,好像是調整MySql版本的東西,無論他,本身下載了導入就好。面試
開始創建練習用的數據庫和表:sql
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)
當調用這個存儲過程的時候,會獲得這個結果。code
再練習一個打印‘Hello,Worle!’的存儲過程:索引
CREATE PROCEDURE HelloWorld() select 'Hello,World!' //
調用:開發
mysql> CALL HelloWorld()// +-------------+ | Hello,World | +-------------+ | Hello,World | +-------------+ 1 row in set (0.00 sec)
好了,先寫到這個,繼續學習