mysql sqlite 语法_浅谈sqlite与mysql的数据库语法差异_沃航科技
由于一些原因,小沃將自己的官方網站從原來的阿里云遷移到了justg的vps上,服務器配置也從原理的1核1G變為了1核512M。雖然服務器性能所有下降,但是畢竟小沃的官網是使用了百度的cdn的,因此應付高并發還是沒有什么問題的??紤]到服務器性能的下降,小沃決定做一件一直想做但是又沒有做的事情---將網站從使用mysql數據庫改為使用sqlite數據庫。至于為什么要做這個調整,主要是考慮到置于cdn后的網站并發本來就不可能高,而且sqlite數據庫在idle狀態下消耗內存是0,對于內存降低的小沃所用官網服務器,還是比較合適的。
由于小沃官網原來連接數據庫用的就是pdo,因此從mysql改為sqlite基本沒什么難度,下面介紹下mysql與sqlite的語法差異。
1、left join與left out join
在mysql中有內連接,左連接,右連接,交叉連接4種連接,但是sqlite中沒有右連接。并且寫法有所不同。
可以直接寫成out join或是left out join,但是mysql中最長用的left join卻無法被識別。
2、不支持md5等加密函數
在mysql中可以直接使用MD5這個函數由數據庫幫我們計算,但是sqlite中,這個函數原生不支持。因此最好不要直接使用這個函數。
3、沒有NOW()函數,CURRENT_TIMESTAMP也是格林時間的表達方式
當使用datetime類型的時候,常常將默認值設置為NOW()或是CURRENT_TIMESTAMP,但是你會發現,生成的默認時間永遠比實際使用晚8小時。因此遇到這個問題,官方的建議是將默認值設置為datetime('now', 'localtime'),具體設置方式如下:create?table?log(
logtime?TIMESTAMP?NOT?NULL?DEFAULT?(datetime('now',?'localtime')
)
4、創建表時主鍵不能用unsigned big int
在mysql中,主鍵一般會設置為自增長,并且類型使用unsigned big int,但是在sqlite中,要想自增長就必須設置為INTEGER型。
文章作者:沃航科技
總結
以上是生活随笔為你收集整理的mysql sqlite 语法_浅谈sqlite与mysql的数据库语法差异_沃航科技的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HiJson 百度网盘下载
- 下一篇: server数据库标记为可疑 sql_S