网站建设凡客,唐山百度推广,定远县可以做网站的地方,网站如何做淘宝联盟推广目录 一、什么是存储过程#xff1f;
二、存储过程的作用
三、如何创建、调用、查看、删除、修改存储过程
四、存储过程的参数#xff08;输入参数#xff0c;输出参数#xff0c;输入输出参数#xff09;
第一种#xff1a;输入参数
第二种#xff1a;输出参数
…目录 一、什么是存储过程
二、存储过程的作用
三、如何创建、调用、查看、删除、修改存储过程
四、存储过程的参数输入参数输出参数输入输出参数
第一种输入参数
第二种输出参数
第三种输入输出参数
五、存储过程中的条件与循环语句
第一种if条件的存储过程
第二种while循环的存储过程
六、如何一次性往数据库中插入上万条数据
第一种存储过程实现上万数据插入
第二种shell脚本实现上万数据插入 一、什么是存储过程
存储过程是一组为了完成特定功能的SQL语句的集合。有点shell脚本的意思
存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来这个过程经编译和优化存储在数据库服务器中当需要使用该存储过程的时候只需要调用即可。存储过程在执行上比传统的SQL语句速度更快执行的效率也更高。
二、存储过程的作用
优点
1、执行一次后会将生成的二进制代码驻留缓冲区提高执行效率
2、SQL语句加上控制语句的集合灵活性高
3、在服务器端存储客户端调用时降低网络负载
4、可以多次重复调用存储过程也可以随时修改不影响客户端的调用
5、可以完成所有数据库的操作也可以控制数据库的信息访问权限。
三、如何创建、调用、查看、删除、修改存储过程
存储过程也是一种对象增删改查的命令可以套用DDL的相关语句
存储过程是创建在库中的需要先用use切换库否则需要在创建的时候指定库名
##创建存储过程了
delimiter 结束符 ##先自定义结束符因为存储过程中的SQL语句用分号结尾这时需要修改作为区分
create procedure 存储过程名称()
begin
SQL语句集合
end结束符号
delimiter ; ##将结束符修改回为分号##查看存储过程
show create procedure [库名].存储过程名称;
show procedure status like 存储过程名称 \G; ##支持通配符##调用存储过程
call 存储过程名称;##删除存储过程
drop procedure 存储过程名称;
drop procedure if exists 存储过程名称; ##如果存在则删除 修改存储过程的方法 存储过程内容的修改方法是通过删除原有存储过程之后再以相同的名称创建新的存储过程。如果要修改存储过程的名称可以先删除原存储过程再以不同的命名创建新的存储过程。 总结就是重新创建储存过程没有直接删除的方法 四、存储过程的参数输入参数输出参数输入输出参数
可以在存储过程创建的时候加入参数
创建存储过程定义的参数叫形式参数create procedure 存储名称(形式参数)
调用的时候添加的参数叫做实际参数call 存储名称(实际参数)
第一种输入参数
delimiter $$
CREATE PROCEDURE proc2(in in_name VARCHAR(20))
BEGIN
INSERT INTO t3 (NAME)VALUES(in_name);
END$$
delimiter ;
CALL proc2(wwy); 第二种输出参数
delimiter $$
CREATE PROCEDURE proc3(in in_id INT,OUT out_name varchar(20))
BEGIN
SELECT NAME INTO out_name FROM t3 where idin_id;
END$$
delimiter ;
CALL proc3(2,dest);
SELECT dest;##select 字段或聚合函数 into 输出参数名称 from 表名 where 条件
##输出参数的值一般是一个确定的值多个会报错 单个案例举例针对存储过程的输出参数如果是2个值可能不可以实现
必须是只有1个特定的值 第三种输入输出参数
输入输出参数首先需要满足出入的和输出的数据类型是一致的 比如都为int数字 或者都为varchar
delimiter $$
CREATE PROCEDURE proc4(INOUT i INT)
BEGIN
SELECT COUNT(name) INTO i FROM t3 where idi;
END$$
delimiter ;
SET a5;
CALL proc4(a);
SELECT a;五、存储过程中的条件与循环语句
第一种if条件的存储过程
delimiter $$
CREATE PROCEDURE proc5(IN in_id INT)
BEGIN
DECLARE m INT;
SET min_id;
IF m4 THEN UPDATE t3 SET gradegood;
ELSE UPDATE t3 SET gradebad;
END if;
END$$ 第二种while循环的存储过程
mysql delimiter $$
mysql create procedure proc6()- begin- declare m int;- set m1;- create table t4(id int primary key auto_increment,name varchar(20));- while m10 do- insert into t4(name)values(concat(student,m));- set mm1;- end while;- end$$ 六、如何一次性往数据库中插入上万条数据
有两种方式 存储过程和shell脚本
第一种存储过程实现上万数据插入
一百万条数据 用时50秒 第二种shell脚本实现上万数据插入 shell脚本需要耗时比较久有大量的IO操作cpu的平均负载非常高