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中的限制:数据库大小、表数、列数、行数、参数个数、连接数等

    目录 一.参考网址 二.详解 1.查看.设置sqlite限制命令.limit 2.SQLite中的限制汇总 1)字符串或BLOB的最大长度 2)最大列数 3)SQL语句的最大长度 4)联接中的最大表数 ...

  6. 【数据库】sqlite中PRAGMA命令说明

    关于sqlite中PRAGMA的说明网上已经有很多了,这里不再复制粘贴,只把内容最全的网址连接记录一下: 官网说明(英文):https://sqlite.org/pragma.html 中文翻译,参见 ...

  7. android sqlite 中 创建表 不要使用 IF NOT EXISTS + TA...

    2019独角兽企业重金招聘Python工程师标准>>> android sqlite 中 创建表 不要使用 "IF NOT EXISTS " + TABLE_NA ...

  8. SQLite中的表达式

    SQLite中的表达式 在SELECT的基本完整形式中,我们会看到几乎是所有的子句都会使用到表达式.以下是SQLite支持的表达式类型. expr binary-op expr |           ...

  9. SQLite中的WHERE子句

    SQLite中的WHERE子句 WHERE子句用于从FROM子句生成的工作表中过滤行.它提供了对每一行进行判断的表达式.当表达式返回的值为false或NULL时,此行就会被丢弃.这种丢弃只是删除记录, ...

最新文章

  1. BZOJ 2257: [Jsoi2009]瓶子和燃料
  2. CCNP OSPF协议详解
  3. [Qt教程] 第37篇 网络(七)TCP(一)
  4. Python模块——_winreg操作注册表
  5. python网格划分_在python中创建一个2d网格
  6. oracle   SQL执行过程
  7. Git Stash解释:如何在Git中临时存储本地更改
  8. 近期两篇双目图像超分辨算法论文解读 |AAAI2020 SPL2020
  9. RegeX版本更新至2.0.0.4 加入英文语言包
  10. 通俗易懂讲解什么是Java分布式
  11. 一键查询快递物流单号,分析提前签收
  12. 阿里电话面试被虐经历
  13. 54_集合类库(上)
  14. MySql基础篇之SQL语句(DDL、DML、DQL、RCL)
  15. 于博士信号完整性揭秘知识点总结
  16. 倒计时1天!大会议程全公开,论坛介绍看起来
  17. [UE4]设置和获取GameInstance的方式:SetGameInstance,GetGameInstance
  18. NUCLEO-L476RG开发板学习笔记汇总
  19. MEM/MBA数学基础(07)几何
  20. element-ui iconfont乱码问题处理

热门文章

  1. 基于Redis实现分布式锁
  2. Android开源项目SlidingMenu本学习笔记(两)
  3. vue react 路由history模式刷新404问题解决方案
  4. VMware Tools按钮变灰色,无法安装的解决方法
  5. centos7 中文乱码问题解决方法
  6. 如何在Eclipse中自动删除尾随空格?
  7. nuget.org 发布自己的程序包
  8. Propel项目改为基于TensorFlow.js
  9. MyBatis 框架系列之基础初识
  10. [转] JavaScript:彻底理解同步、异步和事件循环(Event Loop)