打開blog發現從上一篇文章發布的時間到現在已經近1個月了,時間的概念在這一刻變得這麼可怕。。。為自己找點理由吧,這麼久沒更新是因為。。。好吧,真的不想找類似工作忙、情緒糟糕、沒什麼可寫的諸如此類的理由。我果斷檢討---我懶了。
猛然又意識到很多blog社區,包括這裡--cnblog對blog的稱呼很有意思--”隨筆“。記得自己早先開始寫BLOG的時候注意到這點時很不滿,心說自己還想在這篇BOLG裡大說一通呢,裡面有很多”牛逼“的心得、”獨家“的技術要點還要加上點“幽默”的筆觸,怎麼他們就這麼不當回事呢?居然把我要發表的“大作”一笑帶過的感覺,偏稱之為“隨筆”。如今google了一下-所謂“隨筆”即是隨手筆錄,抒情、敘事或評論不拘,篇幅短小。我想放在如今的BOLG裡,“隨筆”的意境可能還要更隨便些,可大可小,可糙可精,可以是規定自己每天都寫,可以是隨心所欲有感才而發。“隨筆”這詞把BLOG的精髓诠釋的凌厲精致。SO,我自己寫BLOG也會更加“隨筆”,提醒自己千千萬萬不要出現一個月沒來寫東西的情況了。雖然不會強制自己的頻率,但話說一個月都無感來發豈不是人生過得很失敗-_-!。。
結束自己的話唠吧。今天總結下最近寫游戲服務器端設計數據庫的一點心得---再次感慨數據庫設計真是一門科學啊,什麼技術都是越深入越探不到底。
MySQL 的 replace into 語句:
設計人物卡牌數據表邏輯的時候碰到了一個比較頭疼也比較常見的情況:
1. 首先要判斷卡牌的數據是否存在; 2. 如果不存在此角色的卡牌數據,則插入;3.如果存在,則更新。
當然如果老老實實按照
if not exists (select id from t where id = 1) //判斷是否存在此ID數據 insert into t(id, data) values(1, data) //如果不存在則 insert into 一條指定數據 else update t set data= data where id = 1 //如果存在則update 此ID數據
這種邏輯來做的話也並不復雜,但是畢竟這種操作需要兩條數據庫語句來執行,而且我很懶,所以MySQL的replace into閃亮登場:
replace into t(id, data) values(1,data)
這裡的邏輯是:replace into 語句首先嘗試插入數據到表中,如果發現表中已經有此行數據()則先刪除此行數據,然後插入新的數據,否則直接插入新數據。
一句話搞定!replace into的作用相當於實現了以上問題的邏輯,上述情況是它的典型應用。需要特別注意的是replace into 語句需要主鍵或唯一鍵的支持,否則它的功能只相當於insert into 語句!