一、什么是触发器?什么是存储过程?
1.触发器和存储过程都是一种SQL程序模块,都是存储并作为数据库的一部分。
2.触发器在特定数据修改动作发生时才被激活并执行,存储过程在应用程序中使用SQL CALL命令进行调用。
3.不同的数据库管理系统对SQL编程的支持的差异性非常大,在针对某个数据库管理系统进行SQL编程的时候,一定要以该数据库管理系统的文档为依据。
二、SQL编程元素
1.什么是例程?
例程是SQL持久存储模块的最小单元。通常情况下,一个例程将会执行一个单独的操作。
多个例程被聚焦在一起就形成了模块。
2.例程的类型
过程(Procedure):过程使用SQL CALL命令来执行,无返回值。
函数(Function):函数将会返回一个类型化的数值,它可以用于其他SQL语句(特别是SELECT语句)当中。
方法(Method):方法用于SQL的对象扩展关系中。它们使用与过程和函数同种编程元素编写(不理解)。
3.编写例程的语法
过程
使用CREATE PROCEDURE命令
CREATE PROCEDURE
procedure_name (input_parameters)
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
produce_body
END
函数
必须包含用于返回的类型化数据和一个RETURN语句
CREATE FUNCTION
function_name(input_parameters)
RETURNS return_data_type
LANGUAGE SQL
CONTAINS SQL
function_body
RETURN return_value
UDF--用户自己编写的函数
BIE--系统内置函数
对上述语句的解读:
LANGUAGE language_name:指明例程中所使用的程序语言,若没有LANGUAGE语句,默认使用语言是SQL。
SQL语句类型:
CONTAINS SQL:表示该例程所包含的SQL语句不会去获取或者修改数据。
READS SQL DATA:表示该例程所包含的SQL语句只从数据库中读取数据,而不修改数据。(有疑问:若我在此例程中放置修改数据库的SQL语句,会出现什么情况?)
MODIFIES SQL DATA:表示该例程将会使用SQL语句来修改数据,也可能会读取数据。
4.创建SQL模块
创建
CREATE MODULE module_name
module_contents
END MODULE
除去某个例程或模块
DROP ROUTINE routine_name
DROP MODULE module_name
5.在一个模块当中,SQL将会使用BEGIN和END关键字来识别复合语句(不理解)。
三、变量及其赋值
1.参考:MySQL变量使用总结
http://www.cnblogs.com/wangtao_20/archive/2011/02/21/1959734.html