日常小结:mysq批处理,存储过程

Mysql批处理(导数据库,批量sql处理)

 

语法:(执行过程:cmd ----进入mysql----Source sql文件地址)

Source sql文件地址

批处理的时候,他会把约束级别调到0,后面在恢复。

 

一个工程全部写完了,把数据库脚本导出,方便恢复到其他的数据库,把数据库进行备份处理,今后很多工程中都会包含sql批处理文件,文件就是工程的数据结构和数据。

 

Windows里面有个任务计划期,可定时执行任务,可以实现自动备份

 

Sqlyog里面的备份:

 

 

存储过程:

以前有函数和过程

 

 

存储过程:存储----过程----带入

 

语法:

Create procedure 存储名字(带入或者带出参数)

Begin (大括号开始)

End  (大括号结束)

大括号里面可以写代码,可以是判断和查询什么的

 

分隔符

MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。

参数

存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用","分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT:

  • IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
  • OUT:该值可在存储过程内部被改变,并可返回
  • INOUT:调用时指定,并且可被改变和返回

    过程体

    过程体的开始与结束使用BEGIN与END进行标识。

 

例题:

DELIMITER //

CREATE PROCEDURE

getSname(

IN id VARCHAR(100)

)

BEGIN

   SELECT sname  FROM student WHERE sid=id;

END

 

//

DELIMITER ;

 

/////////////////////////////////

CALL getSname('1');

 

 

///////////////////////////

DELIMITER //

CREATE PROCEDURE

getSname(

OUT sn VARCHAR(100),

IN id VARCHAR(100)

)

BEGIN

   SELECT sname INTO sn  FROM student WHERE sid=id;

END

//

DELIMITER ;

 

/////////////////////////////////

CALL getSname(@sn,'1');

SELECT @sn;

 

 

 

 

 

 

DELIMITER //

 

CREATE PROCEDURE

getSname(

IN num INT

)

BEGIN

    WHILE num<=100 DO

    SELECT num;

    SET num=num+1;

    END WHILE;

END

 

//

DELIMITER ;

 

/////////////////////////////////

CALL getSname(99);

SELECT @sn;

 

 

 

 

DELIMITER //

 

CREATE PROCEDURE

getSname(

IN num INT

)

BEGIN

    IF num=100 THEN

      SELECT num;

    ELSE

      SELECT num;

    END IF;

END

 

//

DELIMITER ;

 

/////////////////////////////////

CALL getSname(100);

SELECT @sn;

posted @ 2018-01-17 13:59  满小蛮  阅读(192)  评论(0编辑  收藏  举报