本文主要介绍了关于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