IT技术网www.itjs.cn

当前位置:首页 > 数据库 > MySQL > MySQL5新特性简介

MySQL5新特性简介

发布时间:2015-09-30 00:00 来源:未知

MySQL 5.0 新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的。简单的来说是介绍了“存储过程、触发器、视图、信息架构视图”,在此感谢译者陈朋奕的努力.

每次我想要演示实际代码时,我会对mysql客户端的屏幕就出现的代码进行调整,将字体改成Courier,使他们看起来与普通文本不一样。

定义及实例存储过程是一种存储在书库中的程序(就像正规语言里的子程序一样),准确的来说,MySQL支持的“routines(例程)”有两种:一是我们说的存储过程,二是在其他SQL语句中可以返回值的函数(使用起来和Mysql预装载的函数一样,如pi())。我在本书里面会更经常使用存储过程,因为这是我们过去的习惯,相信大家也会接受。

由于存储过程对于MySQL来说是新的功能,很自然的在使用时你需要更加注意。

通过

这是我启动mysql客户端的方式。你也许会使用其他方式,如果你使用的是二进制版本或者是Windows系统的电脑,你可能会在其他子目录下运行以下程序:

为了确认使用的MySQL的版本是正确的,大家要查询版本。我有两种方法确认我使用的是5.0版本:

现在要做的第一件事是创建一个新的数据库然后设定为默认数据库实现这个步骤的SQL语句如下:

存储过程名对大小写不敏感,因此‘P1’和‘p1’是同一个名字,在同一个数据库中你将不能给两个存储过程取相同的名字,因为这样将会导致重载。某些DBMS允许重载(Oracle支持),但是MySQL不支持(译者话:希望以后会支持吧。)。

你可以采取“数据库名.存储过程名”这样的折中方法,如“db5.p1”。存储过程名可以分开,它可以包括空格符,其长度限制为64个字符,但注意不要使用MySQL内建函数的名字,如果这样做了,在调用时将会出现下面的情况:

mysql> CALL pi();

Error 1064 (42000): You have a syntax error.

mysql> CALL pi ();

Error 1305 (42000): PROCEDURE does not exist.

在上面的第一个例子里,我调用的是一个名字叫pi的函数,但你必须在调用的函数名后加上空格,就像第二个例子那样。

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

其中“()”是“参数列表”。

CREATE PROCEDURE

语句的第三部分是参数列表。通常需要在括号内添加参数。例子中的存储过程没有参数,因此参数列表是空的—所以我只需要键入空括号,然而这是必须的。

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

"SELECT * FROM t;"

是存储过程的主体。

然后到了语句的最后一个部分了,它是存储过程的主体,是一般的SQL语句。过程体中语句

"SELECT * FROM t;"

包含一个分号,如果后面有语句结束符号(//)时可以不写这个分号。

如果你还记得我把这部分叫做程序的主体将会是件好事,因为(body)这个词是大家使用的技术上的术语。通常我们不会将SELECT语句用在存储过程中,这里只是为了演示。所以使用这样的语句,能在调用时更好的看出程序是否正常工作。