站长杂谈

服务器当中SQLite数据库SELECT实现

时间:2017-06-07 15:09 点击:

  服务器当中SQLite数据库SELECT实现

  数据库在服务器当中应用,小编相信大家有所了解。我们知道维护服务器其中包括对数据库的维护,包括数据备份,有时候会有直接对数据库的操作、删除、修改以及查询,还有就是对数据库日志的操作等等。学习服务器当中SQLite数据库SELECT实现对于新世界主机香港服务器而言是一个非常有意义的话题。

  数据库查询是数据库的最主要功能之一,我们都希望查询数据的速度能尽可能的快。对于SQLite数据库的源码分析,我们从select.c进行学习与分析,代码链接为http://www.sqlite.org/download.html。SQLite的查询处理本质上就是一个SQL编译器和一个虚拟机。SQLite 的SELECT语句用于从SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。

  Select的语法图如下:

服务器当中SQLite数据库SELECT实现

  图1-1 Select的语法图

  我们知道进行查询的时候,在书写语句的时候,我们要按照一定的语法规则进行书写,这些语法书写的顺序如上图1-1所示,而select的执行顺序如下:

  1. FROM

  2. ON

  3. JOIN

  4. WHERE

  5. GROUP BY

  6. WITH CUBE or WITH ROLLUP

  7. HAVING

  8. SELECT

  9. DISTINCT

  10. ORDER BY

  11. TOP 先进行From,将表进行连接,查询出的是个"笛卡尔积"集,然后交给on子句连接过滤,再交给where进行条件过滤,再进行Group分组,再进行having过滤分组,再进行select输出,如果有order,limit,offset再对结果集进行排序,再返回限定行数和限定偏移量的结果集。

  SQLite 的 SELECT 语句的基本语法如下:

  SELECT column1, column2, columnN FROM table_name;

  在这里,column1, column2...是表的字段,他们的值即是您要获取的。如果您想获取所有可用的字段,那么可以使用下面的语法:

  SELECT * FROM table_name;

  以一个实例来描述SQLite的语法,也为下面进一步学习SQLite的Select所有:

  假设 COMPANY 表有以下记录:

  ID NAME AGE ADDRESS SALARY

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

  1 Paul 32 California 20000.0

  2 Allen 25 Texas 15000.0

  3 Teddy 23 Norway 20000.0

  4 Mark 25 Rich-Mond 65000.0

  5 David 27 Texas 85000.0

  6 Kim 22 South-Hall 45000.0

  7 James 24 Houston 10000.0

  下面是一个实例,使用 SELECT 语句获取并显示所有这些记录。在这里,前三个命令被用来设置正确格式化的输出。

  sqlite>.header on

  sqlite>.mode column

  sqlite> SELECT * FROM COMPANY;

  最后,将得到以下的结果:

  ID NAME AGE ADDRESS SALARY

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

  1 Paul 32 California 20000.0

  2 Allen 25 Texas 15000.0

  3 Teddy 23 Norway 20000.0

  4 Mark 25 Rich-Mond 65000.0

  5 David 27 Texas 85000.0

  6 Kim 22 South-Hall 45000.0

  7 James 24 Houston 10000.0

  如果只想获取 COMPANY 表中指定的字段,则使用下面的查询:

  sqlite> SELECT ID, NAME, SALARY FROM COMPANY;

  上面的查询会产生以下结果:

  ID NAME SALARY

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

  1 Paul 20000.0

  2 Allen 15000.0

  3 Teddy 20000.0

  4 Mark 65000.0

  5 David 85000.0

  6 Kim 45000.0

  7 James 10000.0

  设置输出列的宽度,有时,由于要显示的列的默认宽度导致 .mode column,这种情况下,输出被截断。此时,您可以使用 .width num, num....命令设置显示列的宽度,如下所示:

  sqlite>.width 10, 20, 10

  sqlite>SELECT * FROM COMPANY;

  上面的 .width 命令设置第一列的宽度为 10,第二列的宽度为 20,第三列的宽度为 10。因此上述 SELECT 语句将得到以下结果:

  ID NAME AGE ADDRESS SALARY

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

  1 Paul 32 California 20000.0

  2 Allen 25 Texas 15000.0

  3 Teddy 23 Norway 20000.0

  4 Mark 25 Rich-Mond 65000.0

  5 David 27 Texas 85000.0

  6 Kim 22 South-Hall 45000.0

  7 James 24 Houston 10000.0

  对于Schema信息,因为所有的点命令只在 SQLite 提示符中可用,所以当您进行带有 SQLite 的编程时,您要使用下面的带有 sqlite_master 表的 SELECT 语句来列出所有在数据库中创建的表:

  sqlite> SELECT tbl_name FROM sqlite_master WHERE type = 'table';

  假设在 testDB.db 中已经存在唯一的 COMPANY 表,则将产生以下结果:

  tbl_name

  ----------

  COMPANY

  还可以列出关于 COMPANY 表的完整信息,如下所示:

  sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'COMPANY';

  假设在 testDB.db 中已经存在唯一的 COMPANY 表,则将产生以下结果:

  CREATE TABLE COMPANY(

  ID INT PRIMARY KEY NOT NULL,

  NAME TEXT NOT NULL,

  AGE INT NOT NULL,

  ADDRESS CHAR(50),

  SALARY REAL

  )

  服务器当中SQLite数据库SELECT实现已经给大家讲清楚了。如果您还有什么不明确或不懂的地方,欢迎咨询新世界主机了解,详细请咨询Skpey咨询:vpssj.net@hotmail.com, ;我们将竭诚为您服务。