SQLite中SELECT基本形式
每个数据库通常都包含多个表,而每个表又包含多条数据。要获取数据库中的数据,就需要SQL语言提供的查询语句SELECT。本章将讲解和SELECT语句相关的内容,其中包括SELECT基本形式、表达式、连接、分组、排序和去重、获取子集、子查询以及联合查询等。
3.1  SELECT基本形式
本节将讲解SELECT语句的基本形式,其中包括基本完整形式、SELECT子句、FROM子句以及WHERE子句等
3.1.1  基本形式
以下是SELECT语法的基本完整形式:
SELECT [DISTINCT] select_heading
FROM source_tables
WHERE filter_expression
GROUP BY grouping_expressions
HAVING filter_expression
ORDER BY ordering_expressions
LIMIT count
OFFSET count
其中,参数说明如下:
 select_heading:用来定义最终结果表的格式和内容,主要是用来定义表的头。
注意:在SQL中的数据结构就是表,表用于存储数据和数据处理。表是由一个头和体组成。头定义了每列的名称和类型(以SQLite为单位)。列名称在表格中必须是唯一的。头定义了列的顺序,这些列作为表定义的一部分被修复。体包含了所有行。每一行由每列的一个数据元素组成。表中的每一列的所有行必须具有相同数量的数据元素,每个元素可以容纳一个数据值(或一个NULL)。
  • FROM source_tables:指定一个或多个源表,并将它们组合成一个大的工作表。
  • WHERE filter_expression:对工作表中的特定行过滤。
  • GROUP BY grouping_expressions:用来指定分组。
  • HAVING filter_expression:过滤分组表中的特定行。
  • ORDER BY ordering_expressions:对结果集的行进行排序。
  • LIMIT count:将结果集输出限制为特定数量的行。
  • OFFSET count:跳过结果集开头的行。
注意:DISTINCT是可选的,用来消除重复的行。除了DISTINCT外,在SELECT语句中,附加子句(FROM、WHERE、GROUP BY等)都是可选的。
SELECT语句中的子句并不是按照它们写入的顺序进行执行的。其执行流程如图3.1所示。
 
图3.1  执行流程
注意:在图3.1中R后面的数字可以认为是执行顺序。
(1)查询语句需要一个或者两个源表。
(2)通过FROM子句,获取一个R1表。
(3)WHERE子句对R1表中的行进行过滤,然后生成一个新的表R2。
(4)R2表通过GROUP BY子句然后进行分组,将R2表分组了对应的组,此时会出生成R3表。
(5)R3表再通过HAVING子句过滤表中特定行,生成R4表。
(6)R4表再通过SELECT子句执行要显示的最终结果表的格式和内容,此时会生成R5表。
(7)R5表再使用DISTINCT关键字进行去重,此时会生成R6表。
(8)R6会通过ORDER BY子句进行排序,此时会生成R7表。
(9)R7表通过OFFSET子句跳过表的开头的行,生成一个新的表R8表。
(10)R8表通过LIMIT子句限制为特定数量的行,此时会出显示出最终的结果表Result。

SQLite中SELECT基本形式的更多相关文章

  1. SQLite中的SELECT子句使用表达式

    SQLite中的SELECT子句使用表达式 在SELECT语句中可以只有SELECT子句不写FROM子句.这些表达式列表将被单次计算,生成一行,然后组成工作表.这对于测试和判断独立表达式很有用.例如, ...

  2. SQLite中的SELECT子句使用通配符

    SQLite中的SELECT子句使用通配符 在SELECT子句中支持两个通配符,分别为*和table_name.*.其中,*通配符会将FROM子句中每个源表的所有用户定义的列进行输出.例如,下面的SQ ...

  3. SQLite中的SELECT子句使用别名

    SQLite中的SELECT子句使用别名 开发者可以使用AS关键字为指定的列名提供一个新的别名,其语法形式如下 SELECT column_name AS Alias [,…] 例如,下面的SQL语句 ...

  4. SQLite中的SELECT子句

    SQLite中的SELECT子句 目前为止,最常见的SELECT语句由三个子句组成,分别为SELECT.FROM与WHERE.本小节我们首先讲解SELECT子句.SELECT子句可以用来定义最终结果表 ...

  5. sqlite数据库 select 查询带换行符数据

    在sqlite 数据库中用 select 语句查询带 换行符的 数据信息 实现 SELECT   * from questions_exec where title like     '%'||x'0 ...

  6. 谈数据库索引和Sqlite中索引的使用

    要使用索引对数据库的数据操作进行优化,那必须明确几个问题:1.什么是索引2.索引的原理3.索引的优缺点4.什么时候需要使用索引,如何使用围绕这几个问题,来探究索引在数据库操作中所起到的作用. 1.数据 ...

  7. SQLite 中的各种限制

    英文原文:Limits In SQLite       本文定义了 SQLite 的限制,如何针对这些限制定制特定的应用程序.默认的限制设置通常是适当的,几乎适合于每一个应用.有一些应用程序可能需要在 ...

  8. SQLite中不支持的sql语法

    今天很自然的在写Sql语句的时候用了Top,一开始没发现问题,因为我从数据库读出的值正好是0,而我习惯变量定义的时候也都赋值0,可是到我不要0的时候我就发现问题了.后来才知道,可爱的小sqlite竟然 ...

  9. SQLite中使用CTE巧解多级分类的级联查询

    在最近的项目中使用ActiveReports报表设计器设计一个报表模板时,遇到一个多级分类的难题:需要将某个部门所有销售及下属部门的销售金额汇总,因为下属级别的层次不确定,所以靠拼接子查询的方式显然是 ...

随机推荐

  1. Freemarker导出带格式的word的使用

    1.新建一个doc文档

  2. jquery 操作表单的问题

    下拉框获取选中项的值: $("#ID").find("option:selected").val(); 设置下拉框选中项: $("#ID") ...

  3. Docker安装Zookeeper

    ⒈下载 docker pull zookeeper ⒉运行 docker run --name zk -p 2181:2181 -p 2888:2888 -p 3888:3888 --restart ...

  4. C# ASP.NET MVC 配置允许跨域访问

    在web.config文件中的 system.webServer 节点下 增加如下配置 <httpProtocol> <customHeaders> <add name= ...

  5. 【ARTS】01_12_左耳听风-20190128~20190203

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  6. vim常用命令总结 (转)【转】

    转自:https://www.cnblogs.com/yangjig/p/6014198.html 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的 ...

  7. 福利爬虫妹子图之获取种子url

    import os import uuid from lxml import html import aiofiles import logging from ruia import Spider, ...

  8. mysql系列六、mysql创建用户、授权、备份及恢复命令

    一.创建用户和授权 下面的操作中,其中someusername为用户名,somepassword为密码,somedbname为数据库名 1.创建用户 create user 'someusername ...

  9. linux下快速安装jenkins

    Linux下快速安装Jenkins 建议使用 FileZilla 工具简化以下步骤中移动.环境变量配置等步骤. 1      软件下载 l  Java:jdk-7u17-linux-x64.tar.g ...

  10. 016_nginx运维问题总结

    一.关于nginx请求包过大的解决思路 message-api.jyall.me.conf nginx报错问题问题定位,经分析跟接入navigator后关联不大,可参考一下结论连接超时抓包分析了一下每 ...