mysql存储过程实现读取一个表中数据写入另一个表中(字段不同),其余字段给固定值

一 需求描述

需要将mysql其中一张表的部分字段写入到另一张表中,其余字段给固定值,使用mysql存储过程实现。

二 解决

2.1 什么是存储过程

在大型数据库系统中,一组为了完成特定功能的sql语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

实质就是SQL语句的合集,包括了逻辑控制

2.2 存储过程定义

create procedure test1()
begin
流程控制结构
SQL语句集合
end;

2.2.1流程控制结构

2.2.1.1 条件结构
if 条件 then sql语句集合
else if 条件 then sql语句集合
else sql语句集合

当形参中的变量和存储过程中的局部变量同名时,会覆盖形参中的变量

case 语法

1)

case 变量
        when 变量取值1 then sql语句集合
        when 变量取值2 then sql语句集合
        else sql语句集合
end case;
case
       when 变量与值1表达式  then sql语句集合
       when 变量与值2表达式  then sql语句集合
       else
end case;
2.2.1.2 循环结构
while .....end while
loop..... end loop
rerpeat ...... end repeat

2.3 SQL中数据类型转换

2.3.1 cast

cast(字段名 as datatype)

2.3.2 convert

convert(字段名,datatype)

2.3.3 可以转换的数据类型

数值类型表达式
二进制,同带binary前缀的效果BINARY
字符型,可带参数CHAR()
日期DATE
时间TIME
日期时间型DATETIME
浮点数DECIMAL
整数SIGNED
无符号整数UNSIGNED

2.4 示例

create PROCEDURE iotcollectadd()
BEGIN

  #如果备份表存在则将备份表删除
	drop table if exists table_backup;
	#备份原testtable表中的数据
	create table table_backup LIKE testtable;
	insert into table_backup select * from testtable;
	#读取另一个表中的数据并将其插入该表中,其余字段取固定值
	insert into table_backup(column1,column2,column3,column4,column5,column6) (select 60,cast(othertable_column2 as CHAR),othertable_column3,othertable_column3,"1"  from othertable);
	
END;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值