我觉得SQL语句十分贴近人类的语言。读SQL语句,就感觉和电脑在说话,只是这个说话有一定的套路,一定的格式。你把要的东西一点一点往里面加,就可以组成一个完整语句。
从数据库中调用数据时,我经常用到的就是SELECT语句。SELECT是我最爱的,因为它可以给我我想要的东西。下图是一张最直观的SELECT语句的语法,以及他的处理顺序。
这个语句总共8个关键字,除去SELECT和FROM,其他的都是可以拆卸的,不需要将每一个都放进去。我们可以一步一步来。但是要注意每次添加的位置,这个是有固定格式,不能调换顺序。
我是在jupyter上示范,所以之前需要添加%sql,你也可以直接在mysql workbench 上操作或者在终端中。
最开始我们先看下我们用的dognition数据。总共6张表格,其中后面我以dogs这张表格为例
这是dogs表格的详情,每一个Field就是一列。
最基本的格式
SELECT...FROM...
例如我想看看breed_type这一列的数据。你可以的逻辑就是从dogs中选取breed_type,所以SQL语句就是这样
SELECT breed_type FROM dogs
而且你可以同时选取多列数据
SELECT dog_guid,breed_type FROM dogs
有时候你也会看到这样的符号*,这个表示选择所有的列。
SELECT * FROM dogs
加入第一元素 LIMIT
SELECT...FROM...LIMIT...
数据量庞大的时候,都会加上LIMIT来限制筛选出来的数据数量。就比如上面的两个语句,返回的数据量有3万多条,这样就降低运行速度,也会影响到其他人的使用效率。所以在数据量庞大的时候,记得在最后加上LIMIT
SELECT dog_guid,breed_type FROM dogs LIMIT 5
LIMIT是默认从头开始的,如果你不想从头开始,你可以引入OFFSET,比如从第15条数据开始,选择10条数据
SELECT dog_guid,breed_type FROM dogs LIMIT 10 OFFSET 15
加入第二个元素 DISTINCT
SELECT DISTINCT...FROM...LIMIT...
仔细观察dogs表格中,dog_guid的数据。很显然,这个数据是有很多的重复数据。如果你需要所有不重复的数据呢?DISTINCT就可以解决。你的想要的列名之前加上DISTINCT,就会返回这一列中,所有不重复的数据。
SELECT DISTINCT breed_type FROM dogs;
SELECT breed_type FROM dogs
上图是对两个语句的对比,第一句返回了4条数据,第二句返回了35050条数据。
加入第三个元素 ORDER BY
SELECT ...FROM...ORDER BY...LIMIT...
听名字就很简单理解,就是我们要对数据排序那就要用ORDER BY。dogs表格中有一列是created_at。我们根据完成测试的数量对整体数据排序,默认情况下是按照升序排列。
SELECT dog_guid,created_at FROM dogs ORDER BY created_at LIMIT 10
如果你想要降序排列呢?记住一个单词descend,简写成DESC
SELECT dog_guid,created_at FROM dogs ORDER BY created_at DESC LIMIT 10
上下图比较,你就可以看出排列顺序啦。
- SELECT
- DISTINCT
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
- LIMIT
8个关键词中,已经说了5个啦。给你一个数据库,应该已经满足了简单的数据查询问题。在之后的文章中,我会继续分享之前我的学习过程,希望用最简单,最明了的方式,分享自己的心得。自己也可以在分享中不断提高。
dognition是一个做狗的测试的wan