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型。

文章作者:沃航科技

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值