sqlite笔记2

创建表的语句
create table tab_name (
col_name1 TYPE OPT,
col_name2 TYPE OPT,
...
);

其中TYPE为数据类型,OPT为可选项,如指定为主键时,使用 PRIMARY KEY

sqlite支持的数据类型:
NULL
INTEGER
REAL
TEXT
BLOB

sqlite支持在字符串和数字之间进行动态数据类型转换
如表test的两个字段id和name分别是INTERGER和TEXT
但是,下面的插入也是可以接受的
insert into test values("3", 123);
上述语句中,“3”将被自动转换为3,而123则被自动转换为“123”
但是insert into test values("a", 123);则会抛出错误

插入记录的语句
insert into tab_name values(col_val1, col_val2, ...);
与普通sql不同,插入时不必指定列名,但是一定要提供每列所有的值,如果该列可以为空,则可以指定值为NULL

查询语句和删除语句和普通sql类型
select * from test;

delete from test where id=3;

如何提供自增主键?
设置主键类型为INTEGER PRIMARY KEY即可

多进程/多线程支持?
sqlite允许多个线程同时访问同一个数据库文件。多个线程可以同时查询,但是同一时刻,只允许有一个线程执行写入操作
需要在多线程中使用sqlite时,需要将SQLITE_THREADSAFE宏置为1进行编译sqlite。

删除数据时文件并未减小?
数据占用的空间在内部被标记为空闲,可在下次插入数据时使用,但并未归还操作系统

字符串中包含'怎么办?
使用''(两个')进行转义

性能如何?
insert操作在普通机器上1s大约50000次,但transaction一秒大约只有60次

如何将查询结果插入一个表?
insert into t1 select * from t2;

你可能感兴趣的:(多线程,sql,数据库,sqlite,Integer,insert)