Mysql Create命令小结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/y5526046/article/details/51984287

函数

CREATE FUNCTION function_name(param1 varchar(255)) RETURNS varchar(100) CHARSET utf8
BEGIN
    ....
    RETURN ...;
END

存储过程

CREATE PROCEDURE procedure_name(param1 date)
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION ...;
    DECLARE CONTINUE HANDLER FOR SQLWARNING ...;
    ....
END
存储过程-游标
CREATE PROCEDURE procedure_name()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE cur CURSOR FOR SELECT ...;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    OPEN cur;
        read_loop : LOOP
            FETCH cur INTO param1;
            IF done THEN
                LEAVE read_loop;
            END IF;
            ...
        END LOOP;
    CLOSE cur;
END
存储过程-事务
CREATE PROCEDURE procedure_name()
BEGIN
    DECLARE error_flag INTEGER DEFAULT 0; 
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET error_flag = 1;

    START TRANSACTION;

    ...

    IF error_flag = 1 THEN
        ROLLBACK;
    ELSE
        COMMIT;
    END IF;
END
存储过程-动态语句
CREATE PROCEDURE procedure_name()
BEGIN
    DECLARE sentence text;
    SET sentence = 'SELECT ...';
    SET @gsql = sentence; 
    PREPARE stmt FROM @gsql; 
    EXECUTE stmt;
END

事件

CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT comment]
DO ...
  1. ON COMPLETION [NOT] PRESERVE: 定义事件是一次执行还是永久执行,默认为一次执行,即NOT PRESERVE。
  2. ENABLE | DISABLE | DISABLE ON SLAVE: 定义事件创建以后是开启还是关闭,以及在从上关闭。如果是从服务器自动同步主上的创建事件的语句的话,会自动加上DISABLE ON SLAVE。

视图

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW [db_name.]view_name [(column_list)] 
AS 
select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
  1. ALGORITHM:
    1. UNDEFINED:MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新;
    2. Merge:合并的执行方式,每当执行的时候,先将我们视图的sql语句与外部查询视图的sql语句,混合在一起,最终执行;
    3. Temptable:临时表模式,每当查询的时候,将视图所使用的select语句生成一个结果的临时表,再在当前的临时表内进行查询;
  2. with check option:
    1. 当视图中存在where条件是起作用;
    2. 对于update和insert,要保证操作后,数据要被视图查询出来,否则操作失败;
    3. LOCAL和CASCADED关键字决定了检查测试的范围。LOCAL关键字对CHECK OPTION进行了限制,使其仅作用在定义的视图上,CASCADED会对将进行评估的基表进行检查。如果未给定任一关键字,默认值为CASCADED;

参考文章:

猜你喜欢

转载自blog.csdn.net/y5526046/article/details/51984287