第二章 排序数据、过滤数据

一、排序数据

按单个列排序

select * from 表名 order by 列名

按多个列排序

select * from 表名 order by 列名1,列名2.. --------先按列名1排序,若列名1中有多个相同值,再按列名2排序

按指定方向排序

select * from 表名 order by 列名1 desc,列名2... --------默认排序方向是升序排列,降序排列需要在列名后加desc关键字,想要多个列降序排列,则要在每个列名后加desc关键字(mysql默认A和a是相同的,不分大小写)

利用order by找最大最小值

select 列名 from 表名 order by 列名 limit 1

二、过虑数据

使用Where关键字,根据指定条件搜索数据

select * from 表名 where 条件语; --------where关键字后的条件语句可以是[=,!=(不等于), >, <, >=, <=, <>(不等于), between(在指定两个值之间)];注意:在比较时,数值不需要使用引号引起来,字符串需要使用引号引起来;使用between时,格式为:where 列名 between 值1 and 值2,检索的值包括初始值和结束值;

过滤空值

select * from 表名 where 列名 is null; --------检测空值,使用is null 关键字

带逻辑操作符[and, or]的where 语句

select * from 表名 where 条件语句1 逻辑操作符 条件语句2; --------注意:如果有一条语句中有多个逻辑操作符,计算优先级为and>or,可以使用小括号分组操作,避免出错

in操作符

**select * from 表名 where 列名 in (值1,值2...); -------- 小括号中为值清单,不是区间,in的作用与or差不多,但是in的语法更清晰直观,执行更快,可以包含其他select语句

not 操作符

select * from 表名 where 列名 not in (值1,值2...); --------not,用来否定跟在后面的条件

三、 使用通配符进行过滤

想要使用通配符进行过滤,必须要使用like操作符,表示后跟的搜索模式为通配符匹配,而不是直接相等匹配进行比较

百分号(%)

select 列名 from 表名 where 列名 like '爱%'; --------表示搜索列名中值为以爱开头的所有值。%,表示任何字符出现任意字数,但不能匹配null。注意:在一条语句中,可以在任意位置使用多个、多次通配符。

下划线 _

-------用法与百分号一致,但仅匹配一个字符。

通配符使用技巧

通配符搜索时间长,不要过度使用

正则表达式匹配

select 列名 from 表名 where 列名 regexp ’正则表达式‘

你可能感兴趣的:(第二章 排序数据、过滤数据)