大数据--mysql3--sql必知必会(第五版)之mysql的检索过滤数据

本篇博客是对《SQL必知必会》第五版书籍的总结

对于文章的出现的表名称,列名请参考书籍《SQL必知必会》及上一篇博客

sql必知必会(第五版)学习总结(一)--mysql预备知识汇总

目录

1:检索数据

1.1检索某个列

1.2检索多个列

1.3检索所有列

1.4 distinct关键字

1.5 limit关键字

1.6 order by子句(desc)

2:高级数据过滤

2.1where 子句

2.2 between

2.3 is null

2.4 or / and

2.5 in / not

3.通配符进行过滤

3.1 通配符和搜索模式

3.2 like操作符及其通配符

3.3使用通配符的技巧

4.计算字段

4.1 为什么要使用计算字段

4.2 拼接字段

4.3 别名

5.使用函数处理数据

5.1函数的作用

6.汇总数据

6.1 聚集函数

6.2 常用的聚集函数

7.分组数据

7.1 创建分组

7.2 GROUP BY子句规则:

7.3 过滤分组

7.4 group by和 order by区别

7.5 select子句顺序

8.子查询

9.联结表

9.1为什么要使用联结?

9.2 创建联结--内联结

9.3 创建联结--自联结

9.4 创建联结--外部联结

9.5 使用联结条件

10.组合查询


1:检索数据

1.1检索某个列

select prod_name from Products;

使用select语句进行检索,使用from关键字指定数据库。

1.2检索多个列

select prod_name , prod_id , prod_price from Products;

各表名之间使用逗号分开

1.3检索所有列

select * from Products;

使用通配符返回表中的所有列

1.4 distinct关键字

select distinct vend_id 
from Products;

使用distinct关键字指示数据库只返回不同的值。注意,使用distinct关键字,它必须直接放在列的前面。

另外distinct关键字作用于所有的列,不仅仅是跟在其后的列。(自己理解:先得到select的结果,再从结果中除去重复的)

注意:distinct关键字只能放在所有字段前面,不能在某个字段之后。

1.5 limit关键字

     select语句返回指定表中所有匹配的行,如果只想返回第一行或者一定数量的行,就需要使用limit子句

select prod_name
from Products
limit 5;

如果为了得到后面5行数据,需要指定检索的行数和从哪个位置开始检索。

limit 5 offset 3

其中5指的是检索的行数,3指的是从哪儿开始。

1.6 order by子句(desc)

为了明确地排序用select检索出来的数据,可以使用order  by子句,order by子句取一个或者多个列的名字,据此对输出进行排序。

select prod_name 
from Products
order by prod_name;

【注意1】:order by 子句的位置,指定一条order by 子句时,应该保证它是select语句的最后一条子句,如果不是最后的子句,将会出错

【注意2】:经常需要按不止一个列进行数据排序,要按多个列排序,只需指定这些列名。列名之间使用逗号隔开,也就是说只需要写一个order by。

select prod_id, prod_price, prod_name
from Products
order by prod_price  , prod_name;

【注意3】:order by除了按照列名排序,还支持按相对位置排序

order by 2,3

【注意4:】数据排序不限于升序排序,这只是默认的排序顺序,还可以指定desc关键字进行降序排序

             desc:desc关键字只应用到直接位于其前面的列名,如果想在多个列上进行降序,必须对每一个列指定desc关键字

order by prod_price desc , prod_name;

2:高级数据过滤

2.1where 子句

(1)数据根据where子句中指定的搜索条件进行过滤,where子句在表名(from子句)之后给出

(2)在同时使用order by 和where子句时,应该让order by 位于where之后。

(3)where子句的操作符有:between,is null , > , < 等

select vend_id , prod_name
from Products
where vend_id <> 'DLL01';

【注意】:单引号来限定字符串,如果将数值与字符串类型的列进行比较,就需要限定引号,

用来与数值列进行比较就不需要引号。

2.2 between

使用between时,必须指定两个值,所需范围的低端值和高端值,这两个值必须使用and关键字分隔

between匹配范围中的所有值,包括指定的开始值和结束值

select prod_name , prod_price
from Products
where prod_price between 5 and 10;

2.3 is null

 检查是否具有null的列

select  prod_name 
from Products
where prod_price is null;

2.4 or / and

(1)为了进行更强的过滤控制,sql允许给出多个where子句,这些where子句有两种使用方式,即以and子句或者or子句方式使用

(2)像大多数语言一样,在处理or操作符前,会优先处理and操作符,若想改变优先级,则可使用圆括号对操作符进行明确分组。

select prod_id , prod_price , prod_name

from Products

where vend_id = 'DLL01' or vend_id = 'BRS01';

2.5 in / not

1) in操作符用来指定条件范围,范围中的每个条件都可以进行匹配。in取一组由逗号分隔,括在圆括号中的合法值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值