按标签归档:MySQL

MySQL手记:存储过程

在MySQL中,可以定义一段程序存放在数据库中,这样的程序成为存储过程。存储过程是数据库对象之一。存储过程实质上是一段代码,它可以由声明式的SQL语句和过程式SQL语句组成。存储过程可以由程序、触发器或者另一个存储过程来调用它从而激活它,实现代码段中的SQL语句。 使用存储过程的好处: 1. 存储过程在服务器端运行,执行速度快。 2. 存储过程执行一次后,其执行规划就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。 3. 确保数据库的安全,使用存储过程可以完成所有数据库操作,并可通过编程方式控制上述操作对数据库信息访问的权限。 创建存储过程,先来一个简单的: DELIMITER $$ CREATE PROCEDURE TEST(OUT NUMBER INTEGER) BEGIN DECLARE NUMBER2 INTERGER; SET NUMBER2=(SELECT COUNT(*)) FROM Employees); SET NUMBER1=NUMBER2; END$$ DELIMITER; 创建存储过程可以包含以下属性: LANAGUAGE SQL 编写存储过程使用的语言 DETERMINSTIC 存储过程对同样的输入参数产生相同的结果,默认是NOT DTERMINSTIC CONTAINS SQL|NO SQL|READS SQL … 继续阅读

分类:数据库 | 标签:, | 发表评论

MySQL手记:存储函数、触发器和事件

存储函数和存储过程很类似,都是由SQL语句和过程式语句组成的代码片断,并且可以从应用程序和SQL中调用。两者之间的区别如下: 1. 存储函数不能拥有输出参数,因为存储参数本身就是输出参数。 2. 不能用CALL语句来调用存储函数。 3. 存储函数必须包含一条RETURN语句,而这条特殊的SQL语句不允许包含于存储过程中。 CREATE FUNCTION EMNUM() RETURNS INTEGER RETURN(SELECT COUNT(*) FROM Employees); 调用函数,还是使用SELECT语句: SELECT EM_NUM(); 另外一个例子: DELIMITER $$ CREATE FUNCTION DELETE_EM(EM_ID CHAR(6)) RETURNS BOOLEAN BEGIN DECLARE EM_NAME CHAR(10); SELECT Name INTO EM_NAME FROM Employees WHERE EmployeeIE=EM_IM; … 继续阅读

分类:数据库 | 标签:, | 发表评论

MySQL手记:分区表

MySQL能够支持建立分区表,利用分区表可以提升数据库的性能,创建分区表如下: CREATE TABLE t1 ( id INT NOT NULL, uid INT NOT NULL, PRIMARY KEY (id) ) PARTITION BY RANGE (id) (PARTITION p0 VALUES LESS THAN(5) ENGINE = INNODB, PARTITION p1 VALUES LESS THAN(10) ENGINE = INNODB ); CREATE TABLE … 继续阅读

分类:数据库 | 标签:, | 4 条评论