美文网首页
002-解剖SELECT语句

002-解剖SELECT语句

作者: Sayalic_2484 | 来源:发表于2019-04-06 14:42 被阅读0次

SQL有很多语句,最常用的就是从数据库里面取数据的SELECT语句。这次我们把SELECT语句的每个部分的拆分出来,一点一点的掌握SELECT。

最简单的SELECT

最简单的SELECT只有SELECT后面接表达式:

SELECT 1, 1+2, 6-4, 2*3, 'a';

返回:

1,3,2,6,a

所以SELECT语句就是返回SELECT后面紧跟着这些表达式的值,每个表达式的结果是一列。

理解FROM

SELECT语句并不一定需要FROM。只有当表达式里面出现字段引用的时候才会尝试从FROM语句里面去寻找。比如说:

SELECT a;

在Presto中执行后会返回:

 Column 'a' cannot be resolved

因为你尝试引用字段a,但是又没有配套的FROM,计算机不知道从哪里去找字段a。

SELECT a FROM items;

当然这也会返回报错,因为items表里面没有a字段,计算机从items表里面一波搜索,还是没有找到。

SELECT id FROM items;

这也就可以正常执行了。因为items表里面确实有id字段。但是这个SELECT id和之前的SELECT 1+2不一样:
因为items表里面有几百万行,也就是有几百万个id。那么返回哪个id呢?SQL的设定是全部返回,所以我们得到了几百万行的返回。
这样返回的几百万行数据全部输出的话,会非常的不雅观,甚至可能导致程序崩溃,所以我们需要LIMIT

用LIMIT限制返回的条数

SELECT id FROM items LIMIT 10;

这样就能限制返回的条数在10了。不过很多软件考虑到很多新手会忘记LIMIT,所以会默认加一个LIMIT作为保护。比如我们现在使用的superset就会默认添加LIMIT。

用ORDER BY控制返回的顺序

SELECT id FROM items LIMIT 10;

这样能够返回10条记录,但如果我想知道id最小的10条记录呢?这么做:

SELECT id FROM items ORDER BY id LIMIT 10;

那如果要最大怎么办呢?添加DESC

SELECT id FROM items ORDER BY id DESC LIMIT 10;

用WHERE来筛选表

items里面有几百万行数据,但我们可能并不需要关心所有的数据,就像Excel里面筛选功能,先把FROM里面的表去除掉一些不想要的数据,然后再做别的操作。比如:

SELECT id FROM items WHERE id < 1000000 ORDER BY id DESC LIMIT 10;

就是我们只关心items表中id小于1000000的记录(相当于id大于等于1000000的记录从items表里面消失了),然后输出id最大的10条记录。
用WHERE还可以筛选到只剩下一条记录,比如001中提到的:

SELECT id, zh_title FROM items WHERE id = 1234567;

因为id等于1234567就只有一条记录,也不需要碍事的LIMITORDER BY了。

总结

对于SELECT语句来说,需要记住:

  1. SELECT语句是对SELECT后面紧跟着的表达式求值,如果表达式里面出现字段,就需要去FROM里面找到这些字段的出处。
  2. FROM里面找到的字段常常会有成千上万个可能结果,SQL会全部返回,所以我们需要使用LIMIT来限制返回的条数
  3. 因为限制了输出条数,顺序就会显得比较重要。只能看那么一点点输出,我们当然希望是按照某种顺序排好,是我们最关心的内容。所以我们使用ORDER BY来控制输出的顺序。
  4. 查询的时候,可以先用WHERE来筛选表,在筛选后的表里面进行查询。

思考

SELECT 1+2 

返回一条记录。

SELECT id FROM items

返回几百万条(等于items表的行数)记录。那么

SELECT id, 1+2 FROM items

返回多少条记录呢?

相关文章

  • 002-解剖SELECT语句

    SQL有很多语句,最常用的就是从数据库里面取数据的SELECT语句。这次我们把SELECT语句的每个部分的拆分出来...

  • 六、ORACLE 子查询

    子查询在SELECT、UPDATE、DELETE语句内部可以出现SELECT语句。内部SELECT语句结果作为外部...

  • 03 - 查询基础

    SELECT 语句 列的查询 基本的 SELECT 语句 语法: 说明: 该 SELECT 语句包含了 SELEC...

  • MySQL深度知识三(摘自sql官方文档)

    SQL SELECT INTO 语句可用于创建表的备份复件。 SELECT INTO 语句SELECT INTO ...

  • java_sql子查询

    子查询:select语句里面嵌套select语句 子查询出现的问题:select ..(select).from....

  • 【MySQL必知必会】第4章:检索数据

    使用SELECT语句可以抽取数据的多个列 4.1 基本的SELECT语句 基本的SELECT语句可以检索单个列...

  • 子查询

    1 定义 :select查询语句中嵌套了select语句,嵌套的那个select查询语句就叫子查询1.1 从emp...

  • DQL_子查询

    子查询 select语句中嵌套select语句,被嵌套的select语句是子查询 子查询可以出现的地方 where...

  • SQL学习笔记2——基础查询

    1. SELECT语句基础 从表中选取数据时需要使用 SELECT 语句,通过 SELECT 语句查询并选取出必要...

  • Shell 循环语句(四) select

    Bash 还提供了 select 循环。其语法如下所示: select 循环语句有如下特点: select 语句使...

网友评论

      本文标题:002-解剖SELECT语句

      本文链接:https://www.haomeiwen.com/subject/fecriqtx.html