关于SQLite3笔记

sq

.help

.quit

.exit

创建和连接数据库:在linux中 sqlite3 数据库名 没有就创建 有就连接

.show 显示各种设置的当前值.

.echo ON|OFF echo命令

.headers ON|OFF 头部显示

.mode column 见 .mode MODE

.timer ON|OFF CPU 定时器测量

.stats ON|OFF 统计

.chema sqlite_master 主表中保存数据库的关键信息,并把它命名为sqlite_master

.backup ?DB? FILE 备份DB数据库(默认是”main”)到FILE文件

.bail ON|OFF 发生错误后停止.默认为OFF.

.databases 列出附加数据库的名称和文件.

.dump ?TABLE? 以SQL文本格式转储数据库.如果指定了TABLE表,则只转储匹配LIKE模式的TABLE表.

.read FILENAME 从txt文档中 执行sql语句

.explain ON|OFF 适合于EXPLAIN的输出模式开关,如没参数,则为EXPLAIN ON 开启

.import FILE TABLE 导入来自file文件的数据到table表中

.indices ?TABLE? 显示所有索引的名称,如果指定的表,就只显示匹配like模式的table表的索引.

.load FILE ?ENTRY? 加载一个扩展库.

.log FILE|off 开启或关闭日志,FILE文件可能是sderr(标准错误)/stdout(标准输出)

.mode MODE 设置输出模式,MODE 可以是下列之一:

  • csv 逗号分隔的值

  • column 左对齐的列

  • html HTML 的 代码

  • insert TABLE 表的 SQL 插入(insert)语句

  • line 每行一个值

  • list 由 .separator 字符串分隔的值

  • tabs 由 Tab 分隔的值

  • tcl TCL 列表元素

.nullvalue STRING 在NULL值的地方输出STRING字符串

.output FILENAME 发送输出到FILENAME文件.

.output stdout 发送输出到屏幕

.print STRING… 逐字地输出STRING字符串

.prompt MAIN CONTINUE 替换标准提示符

.read FILENAME 执行FILENAME文件中的SQL.

.schema ?TABLE? 显示CREATE语句.如果指定了表,则只显示匹配LIKE模式的表.显示表的个体信息.

.separator STRING 改变输出模式和.import所使用的分隔符

.tables ?PATTERN? 列出匹配like模式的表和名称.

.timeout MS 尝试打开锁定的表 MS微秒

.width NUM NUM 为”column”模式设置列宽度.

— 一般不区分大小写 但是也有个别命令是区分的 GLOB和glob 就不一样

— 注释 用两个连续的 –(一行) 也可以用 /* 开始 */结束 (多行)

  • 所有的语句以关键字开始以 ; 分号结束

  • 数据类型是一个用来指定任何对象数据类型的属性.(每一列,每个变量和表达式都有相关的数据类型)

SQLite存储类如下 :

NULL 是一个NULL值

INTEGER 是一个带符号的整数 根据值的大小存储在1/2/3/4/6/8/字节中.

REAL 是一个浮点值,存储为8字节的IEEE浮点数字.

TEXT 是一个文本字符串,使用数据库编码(UTF-8 UTF-16BE或UTF-16LE)存储

BLOB 是一个blog数据,完全根据它的输入存储,二进制数据.

char(n) n 长度的字串,n不能超过 254。

varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。

UNIQUE – 唯一

DEFAULT – 默认 例: DEFAULT ‘中国’

PRIMARY KEY – 主键

FOREIGN KEY – 外键

CHECK –必须符合一定的条件才允许存入.

SQLite 亲和(Affinity)类型 略

SQLite 亲和类型(Affinity)及类型名称 略

Boolean数据类型: 0 (false) 和 1(true).

Date 与Time数据类型:

SQLite没有一个单独用于存储日期/时间的下存储类,但sqlit能够把日期和时间存储为TEXT,REAL或INTEGER值:

TEXT 格式为 “YYYY-MM-DD HH:MM:SS.SSS” 的日期。

REAL 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。

INTEGER 从 1970-01-01 00:00:00 UTC 算起的秒数。

创建数据库: sqlite3 test.db

会在当前目录下创建一个文件test.db,这个文件将被SQLite用作数据库.

然后就可以用 .databases 查看数据库信息 用 .quit 退出

.dump命令:在一个文本文件中导出完整的数据库.

test.db .dump > test.sql :会转换test.db数据库的内容到SQLite语句中,并将其转储到ASCLL文本文件test.sql中.

test.db < test.sql: 会把test.sql中的数据恢复到test.db中.

SQLlite附加数据库 : 如果同一时间有多个数据库可用,要使用其中任何一个.

ATTACH DATABASE ‘DatabaseName’ As ‘Alias-Name’;:如果数据库没有,将创建一个数据库,如果有则把数据库文件名称与逻辑数据库’Alias-Name’绑定在一起.

例子:ATTACH DATABASE ‘test.db’ as ‘test’;

SQLite 分离数据库:把命名数据库从一个数据库连接分离出来.用: DETACH DATABASE ‘test’;

SQLite 创建表: CREATE TABLE关键字后面跟表名.

CREATE TABLE COMPANY(

ID INT PRIMARY KEY NOT NULL,

NAME TEXT NOT NULL,

AGE INT NOT NULL ,

ADDRESS CHAR(50),

SALARY REAL

);

也可以创建多个表.

用.tables 查看有多少个表.

用.schema 得到表的完整信息.

修改表 ALTER TABLE:仅仅支持一部分功能,可以更改一个表名字,也可向表中增加一个列,但是不能删除一个已经存在的字段,或者更改一个已经存在的字段的名称,数据类型,限定符等等.

ALTER TABLE 旧表名 RENAME TO 新表名 –改变表名

ALTER TABLE 表名 ADD COLUMN 列名 数据类型 限定符 –增加一列

SQLite 删除表:删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。

语句: DROP TABLE COMPANY;

SQLite Insert 语句:用于向数据库的某个表中添加新的数据行。

INSERT INTO TABLE_NAME (列名1, 列名2, 列名3,…列名N)]

VALUES (value1, value2, value3,…valueN);

如果要为表中的所有列添加值,也可以不指定列名,要确保值的顺序与列在表中的顺序一致.

INSERT INTO 表名 VALUES(value1, value2, value3,…valueN);

用一个表来填充另一个表:可以通过在一个有一组字段的表上使用select语句直译数据到另一个表中.语法为:

INSERT INTO first_table_name [(column1, column2, … columnN)]

SELECT column1, column2, …columnN

FROM second_table_name

[WHERE condition];

SQLite Select 语句:用于从数据库中获取数据,以结果表的形式返回数据.这些结果表也称为结果集.

语句: SELECT column1, column2, columnN FROM table_name;

column是要获取的值 如果 想获取全部,就用 *

如果只想获取表中指定的字段,用: SELECT ID, NAME, SALARY FROM COMPANY;

设置输出列的宽度:

.width 10 , 20 10 就可以设置第一列的宽度10,第二列宽度20,第三列宽度10.

Schema信息:所有的点命令只在提示符中可用,所以在编程时,要使用带有sqlite_master表的SELECT语句来列出所有在数据库中创建有表:

SELECT tbl_name FROM sqlite_master WHERE type = ‘table’;

也可以列同关于COMPANY表的完整信息:

SELECT sql FROM sqlite_master WHERE type = ‘table’ AND tbl_name = ‘COMPANY’;

SQLite 运算符:是一个保留字或字符,用于WHERE子名中执行操作,如比较和算术运算.用于指定sqlite中的条件,在语句中连接多个条件.

  • –把运算符两边的值相加

– –左操作数减去右操作数

  • –把运算符两边的值相乘

/ — 左操作数除以右操作数

% –左操作数除以右操作数后得到的余数

例子: select 10 + 20 ; –> 10+20=30

SQLite 比较运算符

== –检查两个扣件数的值是否相等,如果相等则条件为真

= –检查两个操作数的值是否相等,如果相等则条件为真

!= –不等于

<> –检查两个操作数的值是否相等,如果不相等则条件为真

–大于

< –小于

= –大于等于

<= –小于等于

!< –不小于

!> –不大于

例子: SELECT * FROM COMPANY WHERE SALARY > 5000; –找出COMPANY中SALARY大于5000的信息.

SQLite 逻辑运算符

AND –允许在一个SQL语句的WHERE子句中的多个条件的存在. 例:SELECT * FORM COMPANY WHERE AGE >= 25 AND SALARY >=6500;

BETWEEN –用于在给定最小值和最大值范围内的一系列值中搜索值.例:SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

EXISTS –符用于在满足一定条件的指定表中搜索行的存在.SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

IN –用于把某个值与一系列指定列表的值进行比较.例:SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

NOT IN –和IN相反. 例:SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

LIKE –把某个值与使用通配符运算符的相似值进行比较.例:SELECT * FROM COMPANY WHERE NAME LIKE ‘Ki%’;

GLOB –把某个值与使用通配符去处符的相似值进行比较.GLOB是区分大小写的.

NOT –所用逻辑运算符的对立面.

OR –结合一个WHERE子句中的多个条件. 例:SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

IS NULL –运算符用于把某个值与NULL值进行比较.

IS –与 = 相似

IS NOT — 与 != 相似. 例:SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

|| — 连接两个不同的字符串,得到一个新的字符串

UNIQUE — 搜索指定表中的每一行,确保不重复.

SQLite 位运算符

不会,略

SQLite 表达式:一个或多个值,运算符和计算值的SQL函数的组合.

SELECT column1, column2, columnN FROM table_name WHERE [CONTION | EXPRESSION];

SQLlite 布尔表达示

SELECT * FROM COMPANY WHERE SALARY = 10000;

SQLite – 数值表达式:用来执行查询中的任何数学运算.

SELECT numerical_expression as OPERATION_NAME [FROM table_name WHERE CONDITION];

这里的numerical_expression可以是任何数学公式.

例:SELECT (15+6) AS ADDITION; –> ADDITION = 21

有几个内置的函数,比如 avg() sum() count() 等等 执行被称为对一个表或一个特定的表列的汇总数据计算

例: SELECT COUNT(*) AS ‘RECORDS’ FROM COMPANY ;

SQLite – 日期表达式:日期表达式返回当前系统日期和时间值,这些表达式将被用于各种数据操作。

例:SELECT CURRENT_TIMESTAMP;

SQLite Where 子句:用于指定从一个表或多个表中获取数据的条件.如果满足给定的条件,(为真时),则人表中返回特定的值.可以用WHERE子名来过滤记录,只获取需要的记录.也可有用在UPDATE DELETE 语句中.

基本语句: SELECT column1,column2,columnN FROM table_name WHERE [condition]

也可以使用比较或逻辑运算符指定条件,比如: < > = LIKE NOT 等等.

例:SELECT * FROM COMPANY WHERE AGE >= AND SALARY >= 65000;

例:SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

例:SELECT * FROM COMPANY WHERE NAME GLOB ‘ki*’;

例:SELECT * FROM COMPANY WHERE AGE IN (25,27);

例:SELECT * FROM COMPANY WHERE AGE NOT IN (25,27);

例:SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

例:SELECT * FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);找 SALARY > 65000 的带有 AGE 字段的所有记录,后边的 WHERE 子句与 EXISTS 运算符一起使用,列出了外查询中的 AGE 存在于子查询返回的结果中的所有记录:

例:SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);查找 SALARY > 65000 的带有 AGE 字段的所有记录,后边的 WHERE 子句与 > 运算符一起使用,列出了外查询中的 AGE 大于子查询返回的结果中的年龄的所有记录:

SQLite AND/OR 运算符:用于编译多个条件来缩小在 SQLite 语句中所选的数据

AND 运算符:只有当所有条件都为真(true)时,整个条件为真(true)。

SELECT column1, column2, columnN FROM table_nameWHERE [condition1] AND [condition2]…AND [conditionN];

例:SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

OR 运算符: 只要当条件中任何一个为真(true)时,整个条件为真(true)。

SELECT column1, column2, columnN FROM table_name WHERE [condition1] OR [condition2]…OR [conditionN]

例:SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

SQlite Update语句:用于修改表中已有的记录.可以使用带有WHERE 子句的IPDATE 查询来更新选定行.否则所有行都会被更新.

基本用法: UPDATE table_name SET column1 = value1, column2 = value2…., columnN = valueN WHERE [condition];

例:UPDATE COMPANY SET ADDRESS = ‘TEXAS’ WHERE ID = 6; –修改ID为6的 ADDRESS = ‘TEXAS’

例:UPDATE COMPANY SET ADDRESS = ‘TEXAS’,SALARY = 20000; — 修改表中所有的ADDRESS和SALARY的值.

SQLite Delete 语句:用于删除表中已有的记录.可以使用带有WHERE子句的DELETE 查询来删除选定行,否则所有记录都会被删除.

DELETE FROM table_name WHERE [codition];

例: DELETE FROM COMPANY WHERE ID = 7 ; –删除ID 为7的客户.

例: DELETE FROM COMPANY ; –删除COMPANY表中的所有记录.

SQLite Like 子句:用来匹配通配符指定模式的文本值.如果搜索表达式与模式表达式匹配,LIKE运算符将返回真(true),也就是1.有两个通配符与LIKE去处符一起使用

% –代表0个,一个或多个数字或字符.

_ –代表一个单一的数字或字符. 可以组合使用.

例: SELECT FROM TALBE_NAME WHERE COLUMN LIKE ‘XXX%’

例: SELECT FROM TALBE_NAME WHERE COLUMN LIKE ‘%XXX%’

例: SELECT FROM TALBE_NAME WHERE COLUMN LIKE ‘XXX_’

例: SELECT FROM TALBE_NAME WHERE COLUMN LIKE ‘_XXX’

例: SELECT FROM TALBE_NAME WHERE COLUMN LIKE ‘XXX

也可以AND 或 OR 来结合N个数量的条件.

WHERE SALARY LIKE ‘200%’ 查找以 200 开头的任意值

WHERE SALARY LIKE ‘%200%’ 查找任意位置包含 200 的任意值

WHERE SALARY LIKE ‘_00%’ 查找第二位和第三位为 00 的任意值

WHERE SALARY LIKE ‘2_%_%’ 查找以 2 开头,且长度至少为 3 个字符的任意值

WHERE SALARY LIKE ‘%2’ 查找以 2 结尾的任意值

WHERE SALARY LIKE ‘_2%3’ 查找第二位为 2,且以 3 结尾的任意值

WHERE SALARY LIKE ‘2___3’ 查找长度为 5 位数,且以 2 开头以 3 结尾的任意值

SELECT * FROM COMPANY WHERE AGE LIKE ‘2%’; 显示 COMPANY 表中 AGE 以 2 开头的所有记录

SELECT * FROM COMPANY WHERE ADDRESS LIKE ‘%-%’; 它显示 COMPANY 表中 ADDRESS 文本里包含一个连字符(-)的所有记录

SQLite Glob 子句:用来匹配通配符指定模式的文本值,与LIKE运算符不同的是GLOB大小写敏感.

  • –代表0个,一个或多个数字或,字符.

? –代表一个单一的数字或字符.

ps:和LIKE基本一样只不过把关键字换为GLOB,并且大小写敏感.

SQLite Limit 子句: 用于限制由SELECT 语句返回的数据数量.

SELECT column1, column2, columnN FROM table_name LIMIT [no of rows]

SELECT column1, column2, columnN FROM table_name LIMIT [no of rows] OFFSET [row num] –将返回从下一行开始直到给定的 OFFSET 为止的所有行.

例:SELECT * FROM COMPANY LIMIT 6; –提取表的前六行.

例:SELECT * FROM COMPANY LIMIT 3 OFFSET 2; –LIMIT提取几行,OFFSET 从第几行后面开始.

SQLite Order By:基于一个或多个列按升序或降序排列数据.

SELECT column-list FROM table_name [WHERE condition] [ORDER BY column1, column2, .. columnN] [ASC | DESC];

例:SELECT * FROM COMPANY DRDER BY SALARY ASC; –按SALARY 升序排序.

例:SELECT * FROM COMPANY DRDEP BY NAME AND SALARY ASC; –按NAME和SALARY 升序排序.

例:SELECT * FROM COMPANY DRDEP BY NAME DESC; –按NAME降序排序;

SQLite Group By : 与SELECT一起使用,来对相同的数据进行分组.GROOUP BY子句在放在WHERE 子句之后,放在ORDER BY 子句之前.

SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1, column2….columnN ORDER BY column1, column2….columnN

例:SELECT NAME ,SUM(SALARY) FROM COMPANY GROUP BY NAME; –每个人的工资总额,则可使用GROUP BY 查询

SQLite Having 子句 :允许指定条件来过滤将出现 在最终结果中的分组结果.WHERE在所先列上设置条件,而HAVING则在由GROUP BY子句创建的分组上设置条件.

SELECT FROM WHERE GROUP BY HAVING ORDER BY

在一个查询中HAVING子句必须放在GROUP BY 子句之后,必须放在ORDER BY 子句之前:

SELECT column1, column2 FROM table1, table2 WHERE [conditions] GROP BY column1, column2 HAVING [conditons] ORDER BY column1, column2

例:SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2; –显示名称计数小于2的所有记录;

例:SELECT * FROM COMPANY GROUP BY name HAVING conun(name) > 2; –显示名称计数大于2的所有记录.

SQLite Distinct 关键字:与SELECT语句一直使用,来消除所有重复的记录,并只获取唯一一次记录.

SELECT DISTINCT column1, column2,….columnN FROM table_name WHERE [DONDITION]

例:SELECT name FROM COMPANY;这样重复的也会显示出来.用:SELECT DISTINCT name FROM COMPANY; 这样输出的结果就没有重复的了.

SQLite PRAGMA:是一个特殊命令,可以用在SQLite环境内控制各种环境变量和状态标志.一个PRAGMA值可以被读取,也可以根据需求进行设置.

要查询当前的PRAGMA值,只需要提供该pragma的名字: PRAGMA pragma_name;

要设置一个新的值: PRAGMA pragma_name = value;

设置模式,可以是名称或等值的整数,但返回的值将始终是一个整数..

后面的不懂 回头再看 略.

在Python3中的接口要注意,conn.execute()的括号内的各种方法 字符串是要加引号的!不是你给的值是字符串就行了!因为是要用这个语句,这在格式化字符串再交给execute处理时很常见

不要忘记conn.commit()和conn.close()提交事务和关闭!

原文地址:https://www.cnblogs.com/srnl/p/10753838.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


SQLite架构简单,又有Json计算能力,有时会承担Json文件/RESTful的计算功能,但SQLite不能直接解析Json文件/RESTful,需要用Java代码硬写,或借助第三方类库,最后再拼成insert语句插入数据表,代码非常繁琐,这里就不展示了。参考前面的代码可知,入库的过程比较麻烦,不能只用SQL,还要借助Java或命令行。SPL是现代的数据计算语言,属于简化的面向对象的语言风格,有对象的概念,可以用点号访问属性并进行多步骤计算,但没有继承重载这些内容,不算彻底的面向对象语言。...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。本教程将告诉您如何使用 SQLite 编程,并让你迅速上手。.................................
安卓开发,利用SQLite实现登陆注册功能
相比大多数数据库而言,具有等优势,广泛应用于、等领域。
有时候,一个项目只有一个数据库,比如只有SQLite,或者MySQL数据库,那么我们只需要使用一个固定的数据库即可。但是一个项目如果写好了,有多个用户使用,但是多个用户使用不同的数据库,这个时候,我们就需要把软件设计成可以连接多个数据库的模式,用什么数据库,就配置什么数据库即可。4.Users实体类,这个实体类要和数据库一样的,形成一一对应的关系。11.Sqlite数据库,需要在代码里面创建数据库,建立表,再建立数据。8.我们开启MySQL数据库,然后进行调试,看程序的结果。2.安装SqlSugar。
基于Android的背单词软件,功能强大完整。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统。说白了就是使用起来轻便简单,
Android的简单购物车案例
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库...
Qt设计较为美观好看的登录注册界面(包含SQLite数据库以及TCP通信的应用)
SQLite是用C语言开发的跨平台小型数据库,可嵌入其他开发语言,也可在单机执行。SPL是用Java开发的跨平台的数据计算语言,可嵌入Java,可在单机执行,可以数据计算服务的形式被远程调用。两者的代码都是解释执行的。...
新建库.openDATA_BASE;新建表createtableLIST_NAME(DATA);语法:NAME关键字...<用逗号分割>删除表droptableNAME;查看表.schema查看表信息新建数据insertintoLIST_NAMEvalues();语法:CLASS,PARAMETER...,CLASS是类别,PARAMETER是参数<用逗号分割新建的
importsqlite3classDemo01:def__init__(self):self.conn=sqlite3.connect("sql_demo_001.db")self.cursor1=self.conn.cursor()self.cursor1.execute("select*fromtable_001wherename=?andid=?",('ssss&#0
 在客户端配置文件<configuration>节点下,添加:<connectionStrings>      <add name="localdb" connectionString="Data Source=config/local.db;Version=3;UseUTF16Encoding=True;" providerName="System.Data.SQLite.SQLiteFactory"/&g
提到锁就不得不说到死锁的问题,而SQLite也可能出现死锁。下面举个例子:连接1:BEGIN(UNLOCKED)连接1:SELECT...(SHARED)连接1:INSERT...(RESERVED)连接2:BEGIN(UNLOCKED)连接2:SELECT...(SHARED)连接1:COMMIT(PENDING,尝试获取EXCLUSIVE锁,但还有SHARED锁未释放,返回SQLITE_BUSY)连接2:INSERT...
SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。在使用SQLite前,我们先要搞清楚几个概念:表
设计思想————首先要确定有几个页面、和每个页面的大致布局由于是入门,我也是学习了不是很长的时间,所以项目比较low。。。。第一个页面,也就是打开APP的首页面:今天这个博客,先实现添加功能!:首先对主界面进行布局:其中activity_main.xml的代码为<?xmlversion="1.0"encoding="