1 TOP 这是一个大家经常问到的问题,例如在SQLSERVER中可以使用如下语句来取得记录集中的前十条记录: SELECT TOP 10 * FROM [index] ORDER BY indexid DESC; 但是这条SQL语句在SQLite中是无法执行的,应该改为: SELECT * FROM [index] ORDER BY indexid DESC limit 0,10; 其中limit 0,10表示从第0条记录开始,往后一共读取10条

2 创建视图(Create View) SQLite在创建多表视图的时候有一个BUG,问题如下: CREATE VIEW watch_single AS SELECT DISTINCTwatch_item.[watchid],watch_item.[itemid] FROM watch_item; 上面这条SQL语句执行后会显示成功,但是实际上除了 SELECT COUNT(*) FROM [watch_single ] WHERE watch_ single.watchid = 1; 能执行之外是无法执行其他任何语句的。其原因在于建立视图的时候指定了字段所在的表名,而SQLite并不能正确地识别它。所以上面的创建语句要改为: CREATE VIEW watch_single AS SELECT DISTINCT [watchid],[itemid] FROM watch_item; 但是随之而来的问题是如果是多表的视图,且表间有重名字段的时候该怎么办?

3 COUNT(DISTINCT column) SQLite在执行如下语句的时候会报错: SELECT COUNT(DISTINCT watchid) FROM [watch_item] WHERE watch_item.watchid = 1; 其原因是SQLite的所有内置函数都不支持DISTINCT限定,所以如果要统计不重复的记录数的时候会出现一些麻烦。比较可行的做法是先建立一个不重复的记录表的视图,然后再对该视图进行计数。

4 外连接 虽然SQLite官方已经声称LEFT OUTER JOIN 已经实现,但还没有 RIGHT OUTER JOIN 和 FULL OUTER JOIN。但是实际测试表明似乎并不能够正常的工作。以下三条语句在执行的时候均会报错: SELECT tags.[tagid] FROM [tags],[tag_rss] WHERE tags.[tagid] = tag_rss.[tagid](*); SELECT tags.[tagid] FROM [tags],[tag_rss] WHERE LEFT OUTER JOIN tag_rss.[tagid] = tags.[tagid]; SELECT tags.[tagid] FROM [tags],[tag_rss] WHERE LEFT JOIN tag_rss.[tagid] = tags.[tagid]; 此外经过测试用+号代替*号也是不可行的。

收集SQLite与Sql Server的语法差异

1.返回最后插入的标识值 返回最后插入的标识值sql server用@@IDENTITY sqlite用标量函数LAST_INSERT_ROWID() 返回通过当前的 SQLConnection 插入到数据库的最后一行的行标识符(生成的主键)。此值与 SQLConnection.lastInsertRowID 属性返回的值相同。

2.top n 在sql server中返回前2行可以这样: select top 2 * from aa order by ids desc

sqlite中用LIMIT,语句如下: select * from aa order by ids desc LIMIT 2

3.GETDATE ( ) 在sql server中GETDATE ( )返回当前系统日期和时间 sqlite中没有

4.EXISTS语句 sql server中判断插入(不存在ids=5的就插入) IF NOT EXISTS (select * from aa where ids=5) BEGIN insert into aa(nickname) select 't' END 在sqlite中可以这样 insert into aa(nickname) select 't' where not exists(select * from aa where ids=5)

5.嵌套事务 sqlite仅允许单个活动的事务

6.RIGHT 和 FULL OUTER JOIN sqlite不支持 RIGHT OUTER JOIN 或 FULL OUTER JOIN

7.可更新的视图 sqlite视图是只读的。不能对视图执行 DELETE、INSERT 或 UPDATE 语句,sql server是可以对视图 DELETE、INSERT 或 UPDATE

 

  • 上一篇RS

Sqlite基础及其与SQLServer语法差异的更多相关文章

  1. mysql & sqlserver语法差异

    isnull   vs   ifnull dateadd  vs date_add limit vs  top

  2. C#与Java的语法差异

    C#与Java的语法差异C与Java的语法差异前言程序结构基本语法数据类型字符串变量与常量运算符判断语句循环语句访问权限方法数组结构枚举类继承多态运算符重载接口命名空间预处理器指令正则表达式异常IO泛 ...

  3. Kotlin VS Java:基本语法差异

    Kotlin比Java更年轻,但它是一个非常有前途的编程语言,它的社区不断增长. 每个人都在谈论它,并说它很酷. 但为什么这么特别? 我们准备了一系列文章,分享我们在Kotlin开发Android应用 ...

  4. SQLite基础教程目录

    SQLite基础教程目录 SQLite主页 SQLite概述 SQLite -安装 SQLite -命令 SQLite -语法 SQLite -数据类型 SQLite -创建数据库 SQLite -附 ...

  5. Xamarin基础命名空间Microsoft.SqlServer.Server

    Xamarin基础命名空间Microsoft.SqlServer.Server   该命名空间包含大量的类.接口和枚举,用于操作微软SQL Server数据库.该空间支持Xamarin.iOS和Xam ...

  6. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

  7. C++、Java语法差异对照表

    C++.Java语法差异对照表 C++ and Java Syntax Differences Cheat Sheet First, two big things--the main function ...

  8. Access与SQL Server 语法差异

    序号 简述 Access语法 SqlServer语法 Oracle语法 解决方案 01 系统时间 Now(),Date() GETDATE() SYSDATE GetSysTimeStr 02 连接字 ...

  9. Java基础-正则表达式(Regular Expression)语法规则简介

    Java基础-正则表达式(Regular Expression)语法规则简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.正则表达式的概念 正则表达式(Regular Exp ...

随机推荐

  1. C++求最大公约数

    题目内容:求两个正整数的最大公约数. 输入描述:输入数据含有不多于50对的数据,每对数据由两个正整数(0<n1,n2<232)组成. 输出描述:对于每组数据n1和n2,计算最大公约数,每个 ...

  2. PopupWindow的简单使用

    测试代码: package com.zzw.testpopuwindows; import android.app.Activity; import android.graphics.Color; i ...

  3. ViewPager中GridView问题

    GridView 嵌套在ViewPager中问题. 1. GridView属性设置无法显示. 正常显示方式 <GridView android:padding="8dip" ...

  4. 【转】Messagedlg

      ) = mrYes then Close; MessageDlg用法 对话框类型:mtwarning——含有感叹号的警告对话框mterror——含有红色叉符号的错误对话框mtinformation ...

  5. ROS 端口IP映射 动态IP映射

    chain=dstnat action=dst-nat to-addresses= protocol=tcp dst-address-type=local dst-port= log=no log-p ...

  6. 10-排序5 PAT Judge

    用了冒泡和插入排序 果然没有什么本质区别..都是运行超时 用库函数sort也超时 The ranklist of PAT is generated from the status list, whic ...

  7. C 的 一些写法格式 交流

    好久以前刚开始学习前辈们的代码的时候,发现好多代码感到好奇怪. 1)代码看不懂 2)代码格式看不懂 网上也没见同学们分享.当自己代码写多了,也渐渐的理解为什么要这样写了. 说主题之前 还是 说一些 题 ...

  8. SoundCloud 的开发功能

    SoundCloud开发功能:https://developers.soundcloud.com/docs     来自为知笔记(Wiz)

  9. hdu 2544 最短路

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shi ...

  10. 一个.net程序员教你使用less

    我是一个.net 程序员,虽然说一直做后台,但是web 前端也会去学,虽然说技术只是层窗户纸,但是像我这种多动症患者,不捅破我心难受啊! 好!废话不多提,下面直接正题,至于less 是什么这里不多讲因 ...