sql limit不接具体数字_数据运营系列【0基础学SQL】第二、三、四节合辑

第二节-SELECT语句 通常又称为 查询 (queries), 正如其名, SELECT可以用来从数据库中取出数据。一条 SELECT 语句或者叫一个查询, 可以描述我们要从什么表取数据, 要取哪些数据,在返回之前怎么对结果做一些转化计算等等。

我们接下来会说明SELECT的语法,看SELECT是怎么来实现上述的取数据任务的。

你可以把一个表(Table)想象成一个类别的事物,比如 狗 (Dogs), 表里的每一行就是一条狗,每一列代表了狗的一种属性,比如:颜色,长度等等。
现在有了这么一张表,最常见的一种查询就是取出表中的 一个或某几个属性列注意:是所有数据的某几个属性列。

Select 查询某些属性列(specific columns)的语法
SELECT column(列名), another_column, … FROM mytable(表名);

查询的结果是一个二维的表格,由行(rows)和列(columns)组成, 看起来像是复制了一遍原有的表(Table),只不过列是我们选定的,而不是所有的列。 如果我们想取出所有列的数据, 当然可以把所有列名写上,不过更简单的方式用星号 (*) 来代表所有列. 如下:Select 查询所有列 SELECT * FROM mytable(表名);
SELECT * FROM table。这条语句经常用来在不清楚table(表)中有什么数据时,能取出所有的数据看一眼。 第三节-条件查询  我们已经学会了从数据表里取出 某几个列的SQL, 思考一下:如果数据表里有100万行数据?真实世界中确实存在,世界上肯定有100万条狗那么多. 如果数据量这么大 之前的SQL语句很可能运行时会崩溃(想象一下你一次性下载1T的电影)

真实情况下,我们很少直接查所有行,即使查询出来也看不完。为了更精确的查询出特定数据,我们需要学习一个新的SQL语法:SELECT 查询的 WHERE 子句. 一个查询的 WHERE 子句用来描述哪些行应该进入结果,具体就是通过 condition 条件限定这些行的属性满足某些具体条件。比如:WHERE 体重大于 10KG的狗。你可以把 WHERE 想象成一个 筛子,每一个特定的筛子都可以筛下某些豆子。

条件查询语法

SELECT column, another_column, … FROM mytable WHERE condition AND/OR another_condition AND/OR … 注:这里的 condition 都是描述属性列的,具体会在下面的表格体现。
可以用 AND or OR 这两个关键字来组装多个条件(表示并且,或者) (ie. num_wheels >= 4 AND doors <= 2 这个组合表示 num_wheels属性 大于等于 4 并且 doors 属性小于等于 2). 下面的具体语法规则,可以用来筛选数字属性列(包括 整数,浮点数) :
45655de75dcedc2581adee5eebd2d751.png

越是精确的条件筛选,会让结果更容易理解,同时因为条件在返回之前筛掉不必要的结果,SQL的运行速度也会快很多。试想一下你只是想看下最近有哪些大片上映,你没必要下载整个电影看一遍。

第三节-WHERE 语句

前面文章里,已经了解了 WHERE 语句来筛选数字类型的属性,如果属性是字符串, 我们会用到字符串相关的一些操作符号,其中 LIKE(模糊查询) 和 %(通配符) 是新增的两个。下面这个表格对字符串操作符有详细的描述:

12201923089be1c3613ebff82b834722.png

在字符串表达式中的字符串需要用引号 " 包含,如果不用引号,SQL会认为是一个属性列的名字,如:col_name = color 表示 col_name和color两个属性一样的行 col_name = "color" 表示 col_name 属性为字符串 "color"的行。

DISTINCT 语法介绍,我们拿之前的 Movies表来说,可能很多电影都是同一年Year发布的,如果你想要按年份排重,一年只能出现一部电影到结果中, 你可以用 DISTINCT 关键字来指定某个或某些属性列唯一返回。写作:DISTINCT Year

选取出唯一的结果的语法 SELECT DISTINCT column, another_column, … FROM mytable WHEREcondition(s); 因为 DISTINCT 语法会直接删除重复的行, 我们还会学习 GROUP BY 语句,GROUP BY 也会返回唯一的行,不过可以对具有相同的 属性值的行做一些统计计算,比如:求和。

结果排序 (Ordering results)

在实际的数据表中,数据添加的时候不是完全顺序的,比如我们实际的Dog表,不会是按狗的身高从小到大去添加数据,当数据量成千上万之后,如果结果不做任何排序,结果会看起来很错乱。

为了解决结果排序问题, 我们可以用 ORDER BY col_name 排序的语法来让结果按一个或多个属性列做排序。 结果排序(ordered results)
SELECT column, another_column, … FROM mytable WHEREcondition(s) ORDERBY column ASC/DESC; ORDER BY col_name 这句话的意思就是让结果按照 col_name 列的具体值做 ASC升序 或 DESC 降序,对数字来说就是升序 1,2,3,... 或降序 ... 3,2,1 . 对于文本列,升序和降序指的是按文本的字母序。

通过Limit选取部分结果

LIMIT 和 OFFSET 子句通常和 ORDER BY 语句一起使用,当我们对整个结果集排序之后,我们可以 LIMIT 来指定只返回多少行结果 ,用 OFFSET 来指定从哪一行开始返回。你可以想象一下从一条长绳子剪下一小段的过程,我们通过 OFFSET 指定从哪里开始剪,用 LIMIT 指定剪下多少长度。 limited查询
SELECT column, another_column, … FROM mytable WHEREcondition(s) ORDERBY column ASC/DESC LIMIT num_limit OFFSET num_offset; 你可以想象一下一个新闻网站的新闻条目数据,他们在页面上是按热度和时间排序的,每一个页面只显示10条数据,在所有这些属性都是不断变化的情况下。我们可以想见通过SQL的ORDER LIMIT OFFSET 句法,我们可以根据要求从数据库筛选出需要的新闻条目。 最后有一个小贴士,就是如果你对 LIMIT 和 OFFSET 在SQL中何时执行有疑问,可以说LIMIT 和 OFFSET一般在SQL的其他部分都执行完之后,再执行。也就是说 我们最早要牢记的那2个规则, select 和 from 的语句执行后,再输入 limit 和 offset 语句。

31291a3e8e749d9e67c7e1ef9c5e6e55.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值