SQLite3 数据库
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2018年已经有18个年头,SQLite最新的版本 SQLite3 已经发布。
常用命令
日期表达式返回当前系统日期和时间值,这些表达式将被用于各种数据操作。
SELECT CURRENT_TIMESTAMP;
调度框架,可以了解下,为自动批量运行做做准备!
--数据导出--
.header on
.mode csv
.once D:/sqlite/company.csv
SELECT * FROM company;
------
-- 查看
.system D:/sqlite/company.csv
--数据导入--
.mode csv
.import D:/sqlite/community.csv community
.tables
select * from community;
sqlite3 查看表结构
如果想列出该数据库中的所有表,可:
.table
如果想查看这些表的结构:
select * from sqlite_master where type="table";
默认情况下,不会出现红框中的表头,需要之前设置,命令为:
.header on
如果只想查看具体一张表的表结构,比如查看emperors表,命令为:
select * from sqlite_master where type="table" and name="emperors";
另外,也可以这样:
sqlite> .schema emperors
CREATE TABLE emperors( id integer primary key autoincrement, name text,dynasty text,start_year text);
sqlite3自增key设定(创建自增字段)
比如,我们设计一个元记录表:
drop table test;
create table test (
[tkid] integer PRIMARY KEY autoincrement, -- 设置主键
[tktype] int default 0,
[tableid] varchar (50),
[createdate] datetime default (datetime('now', 'localtime')) -- 时间
);
要始终得到在整个表中唯一的键,在INTEGER PRIMARY KEY的声明之前加关键词AUTOINCREMENT.
sqlite有没有把字符串转成double型,整型的函数
转换表达式,该表达式的语法规则如下:
CAST(expr AS target_type)
该表达式会将参数expr转换为target_type类型
具体使用可以查一下CAST的范例
select cast(3 as double)/cast(5 as double);
select cast(3 as numeric)/cast(5 as double);
SQLite清空表并将自增列归零
SQL标准中有TRUNCATE TABLE语句,用来清空表的所有内容。但SQLite不支持这个语句。
在SQLite中直接使用“DELETE FROM TableName”就可以了。
通常在清空表的时候,还需要把自增列归零。在SQLite中定义自增列的方法如下:
CREATE TABLE TableName ( id INTEGER PRIMARY KEY AUTOINCREMENT, ... );
如果想把某个自增列的序号归零,只需要修改 sqlite_sequence 表就可以了。
UPDATE sqlite_sequence SET seq = 0 WHERE name = 'TableName';
或
DELETE FROM sqlite_sequence WHERE name = 'TableName';
要想将所有表的自增列都归零,直接清空sqlite_sequence表就可以了:
DELETE FROM sqlite_sequence;
解决sqlite删除记录后数据库文件大小不变
https://www.cnblogs.com/liaocheng/p/6182976.html
# compress sqlite3 database [data.db] R
pathDB
oSql
dbSendQuery(pathDB, oSql)
SQLite中的时间日期函数小结
SQLite包含了如下时间/日期函数:
datetime().......................产生日期和时间
date()...........................产生日期
time()...........................产生时间
strftime().......................对以上三个函数产生的日期和时间进行格式化
datetime()的用法是:datetime(日期/时间,修正符,修正符...)
date()和time()的语法与datetime()相同。
在时间/日期函数里可以使用如下格式的字符串作为参数:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
其中now是产生现在的时间。
strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。
strftime()的语法是strftime(格式, 日期/时间, 修正符, 修正符, ...)
它可以用以下的符号对日期和时间进行格式化:
%d 月份, 01-31
%f 小数形式的秒,SS.SSS
%H 小时, 00-23
%j 算出某一天是该年的第几天,001-366
%m 月份,00-12
%M 分钟, 00-59
%s 从1970年1月1日到现在的秒数
%S 秒, 00-59
%w 星期, 0-6 (0是星期天)
%W 算出某一天属于该年的第几周, 01-53
%Y 年, YYYY
%% 百分号
strftime()的用法举例如下:例11.
select strftime('%Y.%m.%d %H:%M:%S','now','localtime');
结果:2006.10.17 21:41:09
sqlite 字符串连接
select path||'%' from t_category where depth = 0 and type = 0
之前我一直用mssql字符串都是用+直接拼接,不过在sqlite中不行。得用||
用'||'拼接字符串
数字相加
SELECT 'A'+'B'
结果为0
select "A"+"1" 结果为1
select "A"+1 结果为1
select 2+1 结果为3
=在“+”运算中,SQLite将字符串非数字串都当作0处理了
操作符 英文描述 中文描述
|| String Concatenation 字符串拼接
* Arithmetic Multiply 算术乘
/ Arithmetic Divide 算术除
% Arithmetic Modulus 算术取模
+ Arithmetic Add 算术加
– Arithmetic Subtract 算术减
<< Bitwise Right shift 按位向右移位
>> Bitwise Left shift 按位向左移位
& Logical And 逻辑与
| Logical Or 逻辑或
< Relational Less than 小于关系
<= Relational Less than or equal to 小于等于关系
> Relational Greater than 大于关系
>= Relational Greater than or equal to 大于等于关系
= Relational Equal to 等于关系
== Relational Equal to 等于关系
<> Relational Not equal to 不等于关系
!= Relational Not equal to 不等于关系
IN Logical In 包含逻辑
AND Logical And 并且逻辑
OR Logical Or 或者逻辑
LIKE Relational String matching 匹配关系
GLOB Relational Filename matching 文件名匹配关系
参考网址
sqlite常用函数网址
SQLite下载安装
sqlite 可视化管理工具相关
R连接sqlite数据库相关
python连接sqlite数据库相关 ?