MySQL 动态sql语句执行 用时间做表名

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。

  附一张结运行果图:

  

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 06:56:15

MySQL 动态sql语句执行 用时间做表名的相关文章

MySQL 动态sql语句运行 用时间做表名

1. 描写叙述 在使用数据的时候,我时候我们须要非常多数据库,并且想用时间来做表名以区分.可是MySQL在存储过程中不支持使用变量名来做表名或者列名. 比方,有一个表我们想以"2015-07-16 12:00:00"命名. 2. 解决方式 假设仅仅是更换一个普通的表名的话,非常easy.直接使用以下sql语句就可以: alter table old_table_name rename new_table_name 可是要以时间为表名,动态命名的话就不能够了.首先我们能够用NOW()函数

mysql之sql语句执行过程

1.SQL语句执行过程  1.客户端发送一条sql查询语句给服务器;     2.服务器通过权限检查之后,首先会检查查询缓存,如果命中了缓存,则立即返回 存储在缓存中的结果,否则进入下一步;     3.服务器端进行sql解析,预处理,再由查询优化器根据该sql所涉及的数据表的统计信息进行计算,生成对应的执行计划;     4.mySQL根据查询优化器生成的执行计划,调用存储引擎的API来执行查询;      5.将查询结果返回给客户端;    2.SQL语句执行过程的注意事项 1.在执行查询时

Mysql常用sql语句(二)- 操作数据表

21篇测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 需要注意,创建数据库和创建表的语句博文都在前面哦 整个系列都是相互关联的哈,需要用到前面创建的数据库和表哦(系列博文第一篇和第二篇) 前言 针对数据表的操作语句叫做数据定义语言(DDL)   数据表有哪些操作? 创建数据表 查看表结构 查看数据表的创建语句 复制数据表 修改数据表 删除数据表 简称“

统计mysql里每条SQL语句执行的时间

概述 通常为了测试一些工具的性能,不得不用数据说话.数据可以客观地证实一些东西.例如关于一些数据库中间件的性能,对于一个初学者来说只会看到表面上的夸词.我们不得不去证实,那就用具体的查询语句测试.然而每每在执行完一条语句,眼巴巴的看着黑屏一类的客户端,不由得打瞌睡走神,统计起来也头疼. 方法 打开mysql客户端 mysql -h127.0.0.1 -uroot -proot -P3306 选择数据库 use dbtest; 设置profiling set profiling=1; 执行SQL语

MySQL查看SQL语句执行效率

Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看 SQL 语句的执行效果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句. Explain语法:explain select - from - [where ...] 例如:explain select * from news; 输出: +----+-------------+-------+-------+-------------------+-------

MySQL通过SQL语句来直接生成新表

1. 既复制表结构,也复制表数据 mysql> CREATE TABLE tmp_table SELECT * FROM dede_news; 说明:这种方法的缺点就是新表中没有了旧表的primary key.Extra(auto_increment)等属性, 只能自己手动添加. 2.只复制表结构,而不复制表数据 mysql> CREATE TABLE tmp_table like dede_news;

Oracle:SQL语句--对表的操作——修改表名

1 – 修改表名(未验证在有数据,并且互有主外键时,是否可用) 2 3 语法: 4 rename 现表名 to 新表名; 5 6 例: 7 rename T_Student2 to T_Stu;

Oracle 动态SQL语句

Oracle 动态SQL语句 (2012-06-18 16:36:12) 转载▼ 标签: oracle it   EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQLpackage包. 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTEIMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTEIMMEDIATE,因为它获的收益在包

动态SQL语句

动态SQL语句不仅是指SQL语句是动态拼接而成的,更主要的是SQL语句所使用的对象也是在运行时期才能创建的. 动态SQL语句基础 create or replace function get_tablecount(table_name in varchar2) return pls_integer is sql_query varchar2(32767):='select count(*) from'||table_name; l_return  pls_integer; begin execu