,EXPLAIN分析

没有建立索引之前。分析都是表扫描:

sqlite> EXPLAIN SELECT *  FROM COMPANY  WHERE Salary < 20000;

addr        opcode      p1          p2          p3          p4          p5          comment

----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------

0           Trace       0           0           0                       00

1           Integer     20000       1           0                       00

2           Goto        0           16          0                       00

3           OpenRead    0           2           0           5           00

4           Rewind      0           14          0                       00

5           Column      0           4           2                       00

6           Ge          1           13          2           collseq(BI  6b

7           Column      0           0           4                       00

8           Column      0           1           5                       00

9           Column      0           2           6                       00

10          Column      0           3           7                       00

11          Column      0           4           8                       00

12          ResultRow   4           5           0                       00

13          Next        0           5           0                       01

14          Close       0           0           0                       00

15          Halt        0           0           0                       00

16          Transactio  0           0           0                       00

17          VerifyCook  0           1           0                       00

18          TableLock   0           2           0           COMPANY     00

19          Goto        0           3           0                       00

sqlite> EXPLAIN QUERY PLAN SELECT * FROM COMPANY WHERE Salary < 20000;

order       from        detail

----------  ----------  -------------

0           0           TABLE COMPANY

sqlite>

建立索引。再进行EXPLAIN分析查看结果,走了idx_sal索引扫描:

sqlite> CREATE INDEX idx_sal ON COMPANY(SALARY);

sqlite> EXPLAIN SELECT *  FROM COMPANY  WHERE Salary < 20000;

addr        opcode      p1          p2          p3          p4          p5          comment

----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------

0           Trace       0           0           0                       00

1           Integer     20000       1           0                       00

2           Goto        0           25          0                       00

3           OpenRead    0           2           0           5           00

4           OpenRead    1           3           0           keyinfo(1,  00

5           Affinity    2           0           0           cb          00

6           Rewind      1           22          2           0           00

7           SCopy       1           2           0                       00

8           IsNull      2           22          0                       00

9           Affinity    2           1           0           cb          00

10          IdxGE       1           22          2           1           00

11          Column      1           0           3                       00

12          IsNull      3           21          0                       00

13          IdxRowid    1           3           0                       00

14          Seek        0           3           0                       00

15          Column      0           0           4                       00

16          Column      0           1           5                       00

17          Column      0           2           6                       00

18          Column      0           3           7                       00

19          Column      1           0           8                       00

20          ResultRow   4           5           0                       00

21          Next        1           10          0                       00

22          Close       0           0           0                       00

23          Close       1           0           0                       00

24          Halt        0           0           0                       00

25          Transactio  0           0           0                       00

26          VerifyCook  0           2           0                       00

27          TableLock   0           2           0           COMPANY     00

28          Goto        0           3           0                       00

sqlite> EXPLAIN QUERY PLAN SELECT * FROM COMPANY WHERE Salary < 20000;

order       from        detail

----------  ----------  --------------------------------

0           0           TABLE COMPANY WITH INDEX idx_sal

sqlite>

9。删除反复数据而且保留最新一条记录

录入測试数据

sqlite> .dump

PRAGMA foreign_keys=OFF;

BEGIN TRANSACTION;

CREATE TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2));

INSERT INTO "COMPANY" VALUES(2,'Allen',25,'Texas',15000);

INSERT INTO "COMPANY" VALUES(3,'Teddy',23,'Norway',20000);

INSERT INTO "COMPANY" VALUES(4,'Mark',25,'Rich-Mond',65000);

INSERT INTO "COMPANY" VALUES(5,'David',27,'Texas',85000);

INSERT INTO "COMPANY" VALUES(6,'Kim',22,'South-Hall',45000);

INSERT INTO "COMPANY" VALUES(7,'James',24,'Houston',10000);

INSERT INTO "COMPANY" VALUES(7,'James',28,'Houston',20000);

INSERT INTO "COMPANY" VALUES(4,'Mark',29,'Rich-Mond',95000);

COMMIT;

sqlite>

查看反复记录数

sqlite> select * from company order by name;

ID          NAME        AGE         ADDRESS     SALARY

----------  ----------  ----------  ----------  ----------

2           Allen       25          Texas       15000

5           David       27          Texas       85000

7           James       24          Houston     10000

7           James       28          Houston     20000

6           Kim         22          South-Hall  45000

4           Mark        25          Rich-Mond   65000

4           Mark        29          Rich-Mond   95000

3           Teddy       23          Norway      20000

sqlite>

通过rowid来删除反复记录

sqlite> DELETE FROM COMPANY WHERE rowid NOT IN(SELECT MAX(rowid) rowid FROM COMPANY GROUP BY NAME);

sqlite>

再查看最新的数据记录,已经删除了反复NAME的记录

sqlite> select * from company;

ID          NAME        AGE         ADDRESS     SALARY

----------  ----------  ----------  ----------  ----------

2           Allen       25          Texas       15000

3           Teddy       23          Norway      20000

5           David       27          Texas       85000

6           Kim         22          South-Hall  45000

7           James       28          Houston     20000

4           Mark        29          Rich-Mond   95000

sqlite>

----------------------------------------------------------------------------------------------------------------

<版权全部。文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!>
原博客地址:http://blog.csdn.net/mchdba/article/details/39826365
原作者:黄杉 (mchdba)

----------------------------------------------------------------------------------------------------------------

參考文章:http://www.w3cschool.cc/sqlite/sqlite-tutorial.html

版权声明:本文博客原创文章,博客,未经同意,不得转载。

[Sqlite] 移动嵌入式数据库Sqlite日报SQL操作语句汇总的更多相关文章

  1. mysql简单的sql操作语句

    一,常用.简单的SQL操作语句 1.数据库操作: 1)创建数据库: create database database_name: 创建并设置字符编码 create database database_ ...

  2. mongodb 操作语句与sql操作语句对比

    上行:SQL 操作语句 下行:Mongo 操作语句 CREATE TABLE USERS (a Number, b Number) db.createCollection("mycoll&q ...

  3. [Sqlite]--&gt;嵌入式数据库事务理解以及实例操作

    引子: 1. Sqlite在Windows.Linux 和 Mac OS X 上的安装过程 2,嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录 SQLite 事务(Tran ...

  4. 数据持久化之嵌入式数据库 SQLite(三)

    阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 SQLite 是 D. Richard Hipp 用 C 语言编写的开源 ...

  5. 数据库优化和SQL操作的相关题目

    SQL操作 1.有一个数据库表peope,表有字段name,age,address三个属性(注:没有主键).现在如果表中有重复的数据,请删去重复只留下其中的一条.重复的定义就是两条记录的name,ag ...

  6. Microsoft SQL - 操作语句

    操作语句(Operation Statement) 操作数据库 创建数据库 关键字:create database 用于创建各种数据库对象(数据库.表.触发器.存储过程等) 格式如:create &l ...

  7. SQL操作语句

    SQL语句与Mysql的语句大体上比较相似.以下是sql server的一套练习题,是很好的数据库操作语句学习资料,学校的学习资料,在此整理了以下. 数据库exam:这是一个模拟电子商务,网上直销的数 ...

  8. 数据库笔记--常见sql操作

    1.数据库联表查询: 在实际项目中有时需要将两个表结合到一起进行查询,此处介绍其语法: 左连接查询:select * from tableA left join tableB on tableA.fi ...

  9. SQL 操作语句

    SQL Server T-SQL高级查询 高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student; --all 查询所有 ...

随机推荐

  1. ASP.NET - 多级分类

    表结构: 表数据: 最终效果: 前端代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehin ...

  2. 如果一个Object对象可能是集合或者数组那么如何对其进行迭代

    需求:一个方法传入的参数是Object类型(假设对象为“items”,使用Object类型也是为了使用多态而增加方法复用性),但已知这个Object对象可能是集合,包括Collection和Map,也 ...

  3. Flume 1.5日志收集和存款mongodb安装结构

    Flume该演示是不是说.你可以自己搜索. 但现在的互联网主要是Flume 1.4前版本号的信息.Flume 1.5在轰动的大变化.假设你准备尝试,我在这里给大家介绍一下程序最小化结构,和使用Mong ...

  4. 一劳永逸解决UAC问题(修改QMAKE_LFLAGS_EXE的设置)

    如果你的程序跑在一个开启了UAC保护的系统中,而你的程序又没有"盾牌"的话,程序总是会受到各种阻挠的,比如读写文件,写注册表等. 有了"盾牌"的话就不会出现一些 ...

  5. ntohs, ntohl, htons,htonl的比较和详解

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数 ...

  6. 实现web多语言的一种解决办法

    实现web多语言可能有多种解决办法,现在分享一种比较简单的思路,这篇文章主要用于记录学习过程,肯定存在不少谬误,欢迎批评指正. web多语言实现最简单的一种方法可能是每一种语言一套代码,但这样存在一个 ...

  7. unity中怎样获取全部子物体的组件

    public GameObject[] obj;     void Awake()     {             for (int i = 0; i < obj.Length; i++) ...

  8. STL 二分查找三兄弟(lower_bound(),upper_bound(),binary_search())

    一:起因 (1)STL中关于二分查找的函数有三个:lower_bound .upper_bound .binary_search  -- 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),以 ...

  9. ListView数据动态刷新

    在Android开发中用到ListView时,经常遇到要更改ListView内容的情形,比如删除或增加ListView中显示的条目,这里给大家提供一下思路:不论ListView要显示的对象是什么(如: ...

  10. Hangfire Highlighter Tutorial

    Hangfire Highlighter Tutorial Hangfire是一个开源且商业免费使用的工具函数库.可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的 ...