MySQL 動態sql語句執行 用時間做表名,mysqlsql

來源:互聯網
上載者:User

MySQL 動態sql語句執行 用時間做表名,mysqlsql
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。
  附一張結運行果圖:
  

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.