MySQL学习笔记(十六)—— MySQL的命令集(6)
时间:2008-06-05 来源:lavostar
16) 创建函数
CREATE [DEFINER={user | CURRENT_USER}] FUNCTION sp_name ([params]) RETURNS type
function_definition
CREATE [AGGREGATE] FUNCTION name RETURNS return_type SONAME library
MySQL有两种截然不同的函数概念。第一种语法创建的是存储函数。所谓存储函数,与存储过程很相似,只是你可以将其作为查询的一部分进行调用。存储函数接受任意个数的IN参数并返回一个返回值。第二种语法创建的是库函数,库函数又称为用户定义函数(UDF),MySQL主要用它来作为外部编程语言的接口。函数的返回值可为STRING、REAL或INTEGER。包含函数的库文件必须是标准共享库文件,这样MySQL才能将其动态链接到服务器。
示例: CREATE FUNCTION multiply RETURNS REAL SONAME myexample.so
17) 创建索引
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX name ON table (column[(length)], …)
创建索引语句主要用来与其它SQL实现兼容。在老的SQL版本中,该语句并不起任何作用。它相当于ALTER TABLE ADD INDEX语句。要创建索引,必须有对表的INDEX权限。
UNIQUE关键字表示索引列的值必须唯一。FULLTEXT关键字可使关键字的搜索基于索引列进行,一般只对MyISAM表的CHAR、VARCHAR或TEXT列才使用该选项。SPATIAL索引只适用于MyISAM表的非空列。
可以创建只使用列的部分值的索引,其设置可通过length来确定。
示例: CREATE UNIQUE INDEX trans ON Translation (language, locale, code);
CREATE INDEX inv ON Invitation (code(6));
18) 创建过程
CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE name
([ {IN | OUT | INOUT} parameter data_type [, …]])
[LANGUAGE SQL] [[NOT] DETERMINISTIC]
[{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}]
[SQL SECURITY { DEFINER | INVOKER}]
[COMMENT ‘comment string’]
procedure_body
创建新的存储过程。要使用该命令,必须拥有CREATE ROUTINE权限。过程体可以为单个SQL语句或一组由BEGIN/END包围的语句。
相关阅读 更多 +