sqlite 优缺点(深入理解sqlite)

技术SQLite与SQL差异的常见问题有哪些这篇文章主要介绍了SQLite与SQL差异的常见问题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、常

本文主要介绍了关于SQLite和SQL的区别的常见问题,具有一定的参考价值。有兴趣的朋友可以参考一下。希望你看完这篇文章后有很多收获。让边肖带你去了解一下。

一、常见问题汇总

1 TOP

这是一个经常被问到的问题。例如,在SQLSERVER中,可以使用以下语句获取记录集中的前十条记录:

SELECTTOP10 * FROM[index]ORDERBYindexidDESC;但是,该SQL语句不能在SQLite中执行,应该更改为:

SELECT * FROM[index]orderby indexiddescrimint 0,10;限制0,10意味着将从第0条记录中读取10条记录。

2 创建视图(Create View)

SQLite在创建多表视图时有一个BUG。问题如下:

createview watch _ singlesselectdistinctwatch _ item。[watchid],watch_item。[itemid]FrOmWatch _ item;上面的SQL语句在执行后会显示成功,但事实上,除了

select count(*)FROM[watch _ single]where watch _ single . watch id=1;除非可以,否则不能执行任何其他语句。原因是创建视图时指定了字段所在表的名称,SQLite无法正确识别。所以上面的创建语句应该改为:

CREATEVIEWwatch _从watch_item中选择DISTINCT[watchid],[item id];但是下面的问题是,如果是多表视图,表与表之间有重复的字段,该怎么办?

3 COUNT(DISTINCT column)

SQLite将在执行以下语句时报告错误:

select count(DISTINCTwatchid)FROM[watch _ item]where watch _ item . watch id=1;原因是SQLite的所有内置函数都不支持DISTINCT限制,所以如果我们要统计没有重复的记录数会有些麻烦。先建立一个非重复记录表的视图,然后统计视图是可行的。

4 外连接

虽然SQLite官方宣称已经实现了左外连接,但是没有右外连接和完全外连接。但实际测试表明,它似乎无法正常工作。以下三个语句在执行时都会报告错误:

选择标签。[tagid]FROM[tags],[tag_rss]WHEREtags。[tagid]=tag_rss。[tagid](*);选择标签。[tagid]FROM[tags],[tag _ RSS]where leftoutjointag _ RSS。[tagid]=标签。[tagid];选择标签。[tagid]FROM[tags],[tag_rss]WHERELEFTJOINtag_rss。[tagid]=标签。[tagid];另外,测试后用*符号代替*符号是不可行的。

二、收集SQLite与Sql Server的语法差异

1.返回最后插入的标识值

返回最后插入的标识值。sql server使用@@IDENTITY

Sqlite使用标量函数LAST_INSERT_ROWID()

返回通过当前SQLConnection插入数据库的最后一行的行标识符(生成的主键)。该值与SQLConnection.lastInsertRowID属性返回的值相同。

2.top n

sql server中返回的前两行可以是这样的:

从fromaaorderbyidsdescsqlite中选择top2 *使用LIMIT,语句如下:

从aaorderbyidsdesclimit 23.GETDATE ()中选择*

GETDATE()返回sql server中的当前系统日期和时间。

不在sqlite中

4.EXISTS语句

sql server中的判断插入(如果ids=5不存在,则插入)

not exists(select * from aawhere eds=5)begininserttoaa(昵称)select' t' end在sqlite中可以是这样的。

插入一个(昵称)选择' t 'wherenotexists(选择* from aawhere ids=5)5.嵌套事务

Sqlite只允许单个活动事务。

6.RIGHT 和 FULL OUTER JOIN

Sqlite不支持右外连接或全外连接。

7.可更新的视图

sqlite视图是只读的。您不能对视图执行DELETE、INSERT或UPDATE语句,但是sql server可以删除、插入或更新视图。

三、新增内容

1.关于日期时间类型列的默认设置:

“列”的设置包括三个字段:名称、类型和默认值。

Name:日志时间(随机命名);

Type:

日期类型,得到的值为“2011年4月23日”。

DATETIME类型,获得的值的形式为“2011-04-23 11:49336004.000”;

Default:日期时间(‘now’,‘local time’)我用了两个参数,后面不要丢弃本地时间,否则时间会不准确。

感谢您仔细阅读本文。希望边肖分享的文章《关于SQLite和SQL的区别有哪些常见问题》对大家有所帮助。同时也希望大家多多支持,关注行业信息渠道,多多了解!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/151382.html

(1)

相关推荐

  • 朋友圈一条线,微信朋友圈一道横杠是什么意思

    技术朋友圈一条线,微信朋友圈一道横杠是什么意思1、这种情况可能有三种原因朋友圈一条线: 1)是对方设置了“不让他(她)看我的朋友圈”权限导致的。 2)可能是被对方删除了好友,并且关闭了“允许陌生人查看十张照片”的开关。

    生活 2021年10月30日
  • spark的功能和优缺点(spark具有哪些特点)

    技术Spark的性能特点有哪些本篇内容主要讲解“Spark的性能特点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spark的性能特点有哪些”吧!Spark:Apach

    攻略 2021年12月14日
  • 如何优化wpf性能

    技术如何优化wpf性能这篇文章主要介绍了如何优化wpf性能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1,布局 时候能用Canvas尽量用Canvas。

    攻略 2021年11月23日
  • 怎么实现mysql读写分离

    技术怎么实现mysql读写分离这篇文章主要介绍“怎么实现mysql读写分离”,在日常操作中,相信很多人在怎么实现mysql读写分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么实现my

    攻略 2021年11月18日
  • uvm config机制(uvm环境进入scoreboard的死循环)

    技术如何浅析UVM概念中的raise/drop objection如何浅析UVM概念中的raise/drop objection,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴

    攻略 2021年12月18日
  • 嵌入式数据库Sqlite3之如何使用基本的命令操作

    技术嵌入式数据库Sqlite3之如何使用基本的命令操作这篇文章主要介绍“嵌入式数据库Sqlite3之如何使用基本的命令操作”,在日常操作中,相信很多人在嵌入式数据库Sqlite3之如何使用基本的命令操作问题上存在疑惑,小

    攻略 2021年10月22日