MySQL 5.0 新特性教程是为需要了解 5.0 版本新特性的 MySQL 老用户而写的。简单的来说是介绍了“存储过程、触发器、视图、信息架构视图”,在此感谢译者陈朋奕的努力.希望这本书能像内行专家那样与您进行对话,用简单的问题、例子让你学到需要的知识。为了达到这样的目的,我会从每一个细节开始慢慢的为大家建立概念,最后会给大家展示较大的实用例,在学习之前也许大家会认为这个用例很难,但是只要跟着课程去学,相信很快就能掌握。
Conventions and Styles 约定和编程风格
每次我想要演示实际代码时,我会对 mysql 客户端的屏幕就出现的代码进行调整,将字体改成 Courier,使他们看起来与普通文本不一样。
在这里举个例子:mysql> DROP FUNCTION f;Query OK, 0 rows affected (0.00 sec)
在您阅读本书的时候,Mysql 已经有更高的版本,同时能支持更多 OS 了,包括 Windows,Sparc,HP-UX。因此这里的例子将能正常的运行在您的电脑上。但如果运行仍然出现故障,可以咨询你认识的资深 Mysql 用户,以得到长久的支持和帮助。
所以存储过程是可复用的组件!想象一下如果你改变了主机的语言,这对存储过程不会产生影响,因为它是数据库逻辑而不是应用程序。存储过程是可以移植的!当你用 SQL 编写存储过程时,你就知道它可以运行在 Mysql 支持的任何平台上,不需要你额外添加运行环境包,也不需要为程序在操作系统中执行设置许可,或者为你的不同型号的电脑存储过程将被保存!如果你编写好了一个程序,例如显示银行事物处理中的支票撤消,那想要了解支票的人就可以找到你的程序。
这是我启动 mysql 客户端的方式。你也许会使用其他方式,如果你使用的是二进制版本或者是 Windows 系统的电脑,你可能会在其他子目录下运行以下程序:
easy@phpv:~> /usr/local/mysql/bin/mysql --user=root Welcome to the MySQL monitor. Commands end with or \g. Your MySQL connection id is 1 to server version: 5.0.3-alpha-debug Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
在演示中,我将会展示以 root 身份登陆后的 mysql 客户端返回的结果,这样意味着我有极大的特权。 Check for the Correct Version 核对版本。
为了确认使用的 MySQL 的版本是正确的,我们要查询版本。我有两种方法确认我使用的是 5.0 版本:
SHOW VARIABLES LIKE 'version';
or
SELECT VERSION();
例如:
mysql> SHOW VARIABLES LIKE 'version'; +---------------+-------------------+ | Variable_name | value | +---------------+-------------------+ | version | 5.0.3-alpha-debug | +---------------+-------------------+ 1 row in set (0.00 sec)
mysql> SELECT VERSION(); +-------------------+ | VERSION() | +-------------------+ | 5.0.3-alpha-debug | +-------------------+ 1 row in set (0.00 sec)
这就是示例数据库,我们将从这个名字为t的只包含一列的表开始 Pick a Delimiter 选择分隔符 现在我们需要一个分隔符,实现这个步骤的SQL语句如下:
DELIMITER //
例如:
mysql> DELIMITER //
分隔符是你通知 mysql 客户端你已经完成输入一个SQL语句的字符或字符串符号。一直以来我们都使用分号“;”,但在存储过程中,这会产生不少问题,因为存储过程中有许多语句,所以每一个都需要一个分号因此你需要选择一个不太可能出现在你的语句或程序中的字符串作为分隔符。我曾用过双斜杠“//”,也有人用竖线“|”。我曾见过在DB2程序中使用“@”符号的,但我不喜欢这样。你可以根据自己的喜好来选择,但是在这个课程中为了更容易理解,你最好选择跟我一样。如果以后要恢复使用“;”(分号)作为分隔符,输入下面语句就可以了:
"DELIMITER //". CREATE PROCEDURE Example 创建程序实例 CREATE PROCEDURE p1 () SELECT * FROM t; //
也许这是你使用 Mysql 创建的第一个存储过程。假如是这样的话,最好在你的日记中记下这个重要的里程碑。