学习资料:
菜鸟教程: http://www.runoob.com/sqlite/sqlite-tutorial.html
处理速度快
SQLite和mysql的区别:
SQLite的数据库权限只依赖于文件系统, 没有用户账户的概念.
参考:
http://blog.51cto.com/ivanzz/1130544
https://blog.csdn.net/zbw1185/article/details/47975965
integer | int, integer, tinyint, smallint, mediumint, bigint, unsigned big int, int2, int8 |
text | character(20), varchar(255), varying character(255), nchar(55), native character(70), nvarchar(100), text, clob |
none | blob, no datatype specified |
real | real, double, double precision, float |
numeric | numeric, decimal(10,5), boolean, date, datetime |
一般用于where语句
算术运算符 | + - * / % |
比较运算符 | == = != <> > < >= <= !< !> |
逻辑运算符 | and, or, between, exists, in, not in, like, glob, not, is null, is(=), is not(!=), ||, unique |
位运算符(作用于二进制) | &且, |或, ~翻转, <<左移, >>右移 |
UNIQUE: 运算符搜索指定表中的每一行,确保唯一性(无重复)。
.help 显示帮助
.show 显示设置值
.header on 显示头部
.databases 显示数据库
.tables 显示表
.exit 退出sqlite提示符
.quit 退出sqlite提示符
注释:
sqlite> .help -- This is a commentsqlite> .help /*This is a comment*/
创建数据库:
sqlite3 Dbname.db
导出数据库成文件:
sqlite3 dbname.db .dump > backup.sql
导入:
sqlite3 dbname.db < backup.sql
附加数据库:
ATTACH DATABASE 'DatabaseName' As 'Alias-Name';如果数据库尚未被创建,上面的命令将创建一个数据库,如果数据库已存在,则把数据库文件名称与逻辑数据库 'Alias-Name' 绑定在一起。
分离数据库:
DETACH DATABASE 'Alias-Name';
创建表:
CREATE TABLE table_name(
column1 datatype primary key not null,
column2 datatype,
column3 datatype,
.....
columnN datatype,);
删除表:
drop table table_name;
查看表的create语句
.schema
向表插入数据:
INSERT INTO table_name (column1, column2....columnN)
VALUES (value1, value2....valueN);
使用一个表填充另一个表:
INSERT INTO first_table_name (column1, column2, ... columnN)
SELECT column1, column2, ...columnN
FROM second_table_name
[WHERE condition];
查询表:
SELECT column1, column2, columnN FROM table_name;
修改表:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
删除表记录:
DELETE FROM table_name
WHERE [condition];
删除所有记录:
DELETE FROM table_name;
SELECT column1, column2, columnN
FROM table_name
WHERE [condition]
LIKE 运算符是用来匹配通配符指定模式的文本值.
% 代表零个、一个或多个数字或字符.SELECT column_list
FROM table_name
WHERE column LIKE '%XXXX%'
GLOB 运算符是用来匹配通配符指定模式的文本值, GLOB 是大小写敏感的.
* 代表零个、一个或多个数字或字符.
? 代表一个单一的数字或字符。
SELECT FROM table_name
WHERE column GLOB '????'
LIMIT 子句用于限制由 SELECT 语句返回的数据数量。
OFFSET 用于指定偏移量, 以下语句即从第三行开始提取4个记录:
SELECT * FROM table_name LIMIT 4 OFFSET 2;
ORDER BY 子句是用来基于一个或多个列按升序asc或降序desc顺序排列数据。
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。
在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
SELECT NAME, SUM(SALARY)
FROM COMPANY
GROUP BY NAME
ORDER BY SALARY;
HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
SELECT * FROM COMPANY GROUP BY name HAVING count(name) > 2;
DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001388320596292f925f46d56ef4c80a1c9d8e47e2d5711000
>>> import sqlite3
>>> conn = sqlite3.connect('test.db')
>>> cursor = conn.cursor()
>>> cursor.execute('create table user (Id varchar(20) primary key, name varchar(20))')
>>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
//如果SQL语句带有参数,那么需要把参数按照位置传递给execute()方法,有几个?占位符就必须对应几个参数,例如:
>>> cursor.execute('select * from user where id = ?', ('1',))
>>> cursor.execute('select * from user where id = ? and name = ?', ('2','Ann'))
>>> values = cursor.fetchall()
>>> cursor.close()
//执行commit以后,插入数据才被提交到sqlite3数据库中
>>> conn.commit()
>>> conn.close()