這個說起來很簡單,真的做起來其實也很簡單,但因為不常用,應該有不少人用起來很生疏吧!
語法其實很簡單
INSERT INTO tablename [VALUES (fields...)]
SELECT fields FROM tablename [WHERE ...]
我想這個在使用上最容易遇到的問題,就是主索引跟唯一值不能重複的問題了。
在最單純的狀況下,要把tableA的一筆資料複製,只要下
INSERT INTO tableA
SELECT * FROM tableA WHERE id=3
就行了。不過呢,如果遇到鍵值不能重複的話,就要在設定VALUES裡設定欄位,當然相對的在後面的SELECT裡,也要指定一樣的欄位。
這樣如果某個表欄位很多,又要避掉索引值的話,其實光用想的我就累了……應該有方法可以處理掉欄位的問題,但那是個懶方法,卻不一定是個好方法,在目前還沒遇到那麼棘手的問題前,還是勤勞的慢慢key欄位名稱好了~
這個方式也是可以用在Oracle跟MSSQL裡的,其他的資料庫因為手邊沒得測,就不知曉了。
2009年8月5日 星期三
MySQL複製一筆資料
2009年3月3日 星期二
mysql,oracle取得當前時間
在新增或修改資料的時候,常常會需要記錄操作時間,雖然可以用程式指令先產生時間再放進去,但就是覺得這樣有點笨……
在oracle,當要抓資料庫主機目前時間,要用sysdate;在mysql,則是用NOW()
修改資料庫欄位值時,就用欄位=NOW()或欄位=sysdate就行了。值得注意的是,在oracle使用sysdate後,會產生系統格式的時間,通常需要用to_char去把撈出來的資料先做轉換,看到的日期格式才會是符合需求的;在mysql,則可不用這麼麻煩,now()產生的時間格式即為Y-M-D H:m:s的格式,用起來相當方便。
訂閱:
文章 (Atom)
