sqlite和sql(请问Mysql,SQL sever,SQLite这三个数据库,他们用的都是SQL语言吗)

本文目录
- 请问Mysql,SQL sever,SQLite这三个数据库,他们用的都是SQL语言吗
- 总结SQLite不支持的SQL语法有哪些
- sqlite 不是支持 SQL 语句的吗
- SQL 和 SQLite 的有什么分别 重视哪个会好点
- SQLite 怎样导入sql 文件
- 如何把.sql文件转换成sqlite3数据库.db文件
请问Mysql,SQL sever,SQLite这三个数据库,他们用的都是SQL语言吗
是的,都是以SQL语言为基础的。
1、SQLSERVER 是大、中型数据管理系统,需要安装到服务器上,系统资源需求较高。
MYSQL 与SQLLITE应用规模类似,都属于小型应用。
2、MYSQL 较SQLLITE快些,SQLLITE 应用系统不需要安装数据库,只需要DLL支持文件。
3、SQLLITE完全免费。MYSQL已经不免费了。
总结SQLite不支持的SQL语法有哪些
1、TOP
这是一个大家经常问到的问题,例如在 SQLSERVER 中可以使用如下语句来取得记录集中的前十条记录:
SELECT TOP10 * FROM ORDER BYindexid DESC;
但是这条SQL语句在SQLite中是无法执行的,应该改为:
SELECT * FROM ORDER BY indexid DESClimit0,10;
其中limit 0,10表示从第0条记录开始,往后一共读取10条
2、创建视图(Create View)
SQLite在创建多表视图的时候有一个BUG,问题如下:
CREATE VIEW watch_single AS SELECTDISTINCTwatch_item. FROM watch_item;
上面这条SQL语句执行后会显示成功,但是实际上除了
SELECT COUNT(*) FROM WHEREwatch_ single.watchid = 1;
能执行之外是无法执行其他任何语句的。其原因在于建立视图的时候指定了字段所在的表名,而SQLite并不能正确地识别它。所以上面的创建语句要改为:
CREATE VIEW watch_single AS SELECT DISTINCT FROM watch_item;
但是随之而来的问题是如果是多表的视图,且表间有重名字段的时候该怎么办?
3、COUNT(DISTINCT column)
SQLite在执行如下语句的时候会报错:
SELECT COUNT(DISTINCT watchid) FROM WHERE watch_item.watchid = 1;
其原因是SQLite的所有内置函数都不支持DISTINCT限定,所以如果要统计不重复的记录数的时候会出现一些麻烦。比较可行的做法是先建立一个不重复的记录表的视图,然后再对该视图进行计数。
4、外连接
虽然SQLite官方已经声称 LEFT OUTER JOIN已经实现,但还没有 RIGHT OUTER JOIN 和 FULL OUTER JOIN。但是实际测试表明似乎并不能够正常的工作。以下三条语句在执行的时候均会报错:
SELECT tags.(*);
SELECT tags.;
SELECT tags.;
此外经过测试用+号代替*号也是不可行的。
收集 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 whereids=5)
BEGIN
insert into aa(nickname)
select ’t’
END
在sqlite中可以这样
Insert into aa(nickname)
select ’t’
where not exists(select * from aa whereids=5)
5、嵌套事务
sqlite仅允许单个活动的事务
6、RIGHT和 FULL OUTER JOIN
sqlite不支持 RIGHT OUTER JOIN或 FULL OUTERJOIN
7、可更新的视图
sqlite视图是只读的。不能对视图执行 DELETE、INSERT 或UPDATE 语句,sql server是可以对视图DELETE、INSERT 或 UPDATE
sqlite 不是支持 SQL 语句的吗
为了减少数据库连接的I/O开销,一般会把多条数据插入放在一条SQL语句中一次执行。
以前用Mysql做开发一直是这样用的:
INSERT INTO TABLE(col1, col2) VALUES(val11, val12), (val21, val22) ;
最近用SQLite才发现这个语法并非标准SQL,故而SQLite并不支持。经过一番查找,发现如下方法可以替代:
INSERT INTO TABLE(col1, col2) SELECT val11, val12 UNION ALL SELECT val21, val22 ;
这样的写法是属于复合SQL语句,表示先把两个SELECT的结果集进行无删减的联合,再把联合结果插入到TABLE中。
SQL 和 SQLite 的有什么分别 重视哪个会好点
这两个完全没有可比性。楼主还没有理解数据库的概念。数据可以分为三种,一种是超大型数据库,如甲骨文公司的oracle数据库,国内比较著名的公司如蒙牛、腾讯等都是使用这种数据,阿里巴巴之前也是用oracle,后来才使用了自己研发的数据库。第二种是中型数据库,以MS SQL Server和My SQL为代表,这类数据库比较常见,很多企业的ERP系统和网上商城系统用的都是这两种。当然,SyBase也算是中型数据库。第三种是微小型数据库,以你的问题中提到的SQLite和微软Office办公组件里的Access为代表,很多公司之前用ASP做的网站大部分用的都是Access。SQLite的兴起跟Android有很大的关系,安卓中用户短信、联系人数据等都是用SQLite存储的。甚至,我们熟悉的QQ、迅雷等,也都是采用SQLite来存储数据。
现在来回答你的问题,SQL是数据库查询用到的语句,它本身不是数据库,所以没有可比性。重视哪个好?两个都要重视,懂了SQLite,但不会查数据,等于你什么都不懂。强烈建议你加入本人创建的SQLite QQ群:1702823,有问题可以在群里面讨论。
SQLite 怎样导入sql 文件
使用sqlite的文件导入导出功能。
1、导入命令: .import
2、格式:sqlite》 .import 文件名 表名
3、注意事项:
注1: 不要忘了开头的点
注2: 这条语句不能用分号结束. 非SQL不需要分号结束.
注3: 需要查看默认的分隔符separator. 必须一致. 如果不一致可能导致sqlite字段分割错误.
查看分隔符使用命令 .show , 如果不一致可直接修改, 比如:
sqlite》.separator ","
将分隔符转为逗号.
举例1:
将文件a.csv中的数据导入表 tab_xx. (a.csv中字段以逗号分割)
sqlite》 .separator ","
sqlite》 .import a.csv tab_xx
sqlite》
导入结束.
如何把.sql文件转换成sqlite3数据库.db文件
方法/步骤
找到由SQLServer转换的SQLite DB文件(可参考我的以前的经验:SQLServer数据库表导出SQLite DB文件方法),
下载动软代码(下图1)生成工具并安装,按照成功后到所有程序可以查看到(下图2)。如下图:
运行动软代码生成工具进入到主界面。如下图
点击左上角的新增服务器注册,弹出数据库类型窗体。选择SQLLite,点击下一步。如下图:
接下来会弹出选择SQLite数据库窗体,在数据库文件文本框输入本地SQLite db文件路径,点击确定(下图1)。系统会提示关闭软件从新打开。
重新打开动软代码生成工具后,到左边服务器可以看见那你的SQLite数据库。如下图:
选择一张表,右键选择生成数据脚步(下图1)。会弹出一个提示:“如果该表数据量较大…”,直接选择“是”(下图2),点击“是”后右边出现生成的sql语句,包含新增语句和插入数据的语句。保存文件即可。

更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40







