MySQL 动态sql语句执行 用时间做表名
2015-07-16 00:50
645 查看
1. 描述
在使用数据的时候,我时候我们需要很多数据库,而且想用时间来做表名以区分。但是MySQL在存储过程中不支持使用变量名来做表名或者列名。比如,有一个表我们想以“2015-07-16 12:00:00”命名。
2. 解决方案
如果只是更换一个普通的表名的话,很简单,直接使用下面sql语句即可:alter table old_table_name rename new_table_name
但是要以时间为表名,动态命名的话就不可以了。首先我们可以用NOW()函数获取系统当前的时间。要寻求支持动态以变量的形式做数据库操作的方法,在MySQL5.1以上的版本中,prepare语句可以支持这样的操作。
我们可以用
set @var=...设置变量,然后用
prepare stml from @var设置动态sql语句,最后用
EXECUTE stml;执行语句。
下面是以时间为表名,动态修改一个表的sql执行过程:
set @asql=concat('alter table old_table_name rename `',NOW(),'`'); prepare stml from @asql; EXECUTE stml;
这里使用到了MySQL中concat函数,此函数的作用是字符串拼接。相信懂得编程的同学对此都不陌生。
使用方法:
concat(str1,str2,…)
返回结果为连接参数产生的字符串。注意如有任何一个参数为NULL ,则返回值为 NUL。
附一张结运行果图:
相关文章推荐
- Mysql锁和死锁分析
- Mysqli基础知识
- mysql 函数(二 )
- ios即时通讯客户端开发之-mac上安装MySQL
- Mysql数据库存储引擎
- DATABASE CONNECTION ERROR (1): THE MYSQL ADAPTER 'MYSQLI' IS NOT AVAILABLE.解决办法
- ubuntu 重新安装mysql
- MySQL主从复制(Master-Slave)
- 【MySQL】(2)数据类型与操作数据表
- MySQL主从复制(Master-Slave)
- mysql主从数据库不同步的3种解决方法
- mysql主从数据库不同步的3种解决方法
- mysql之存储过程
- 数据库性能优化(MySQL)
- MySQL 运算符和函数
- mysql时间查询
- Mysql InnoDB行锁实现方式
- 如何远程访问mysql数据库
- Mysql中表操作删除表、清空表(主键从0开始、不从0开始的清空)
- Hibernate连接MySql遇到的几个问题