为何查询这么难?
业务的复杂性、对于效率的要求高。
1、查询指定列
select field1,field2 as f2,field3 f3,... where ...;
select * where ...; #* 为通配符,匹配所有的列。
2、对列进行运算
有时候存储的信息并不是我们想要查询的信息,比如存的是出生日期,我们需要查年龄,这时需要去对列进行计算。
select id,2016-age as "年龄" from table_name;
ps:
对于常见的 +-*/ 都是支持的,不过对于 / 运算结果是浮点数。
当然列与列之间也可以运算。
3、统计信息
常用统计函数有 count、max、min、sum、avg 等等。比如:
select 2016-max(age) as "最大年龄" from table_name;
4、内置函数
select now(); #查询当前时间
5、去除重复数据
在 select 后字段前加 distinct,distinct 即“明确的,确切的”,比如:
select id,distinct name from table_name;
6、where 子句
where 子句特点:如果后面表达式为 true,则进行相关处理,不管是查询还是更新/删除。
where 子句的常见形式如下:
① 比较运算符
<
>
=
<=
>=
!= 或 <>
<=> 表示 null 安全的等于,即要不两边值相等,要不都为 null。
② between...and 操作符
要用来选择一个范围的数据,比如 where id between 1 and 100。
③ in 操作符
有时候条件是一些离散的值,并不是连续的区间,比如 where id in(1,3,5,7,9)。
④ not 操作符
表示取反,一般不单独使用,通常都与 in/between...and 一起使用;
使用位置在相应字段之后,其他运算符之前。
⑤ is (not) null 是否为空
用来查找字段值为null的记录,为什么不用 where xx = null 呢,因为该运算会返回 null,where 一直为假,也可以用 where xx <=> null 来查找。
⑥ like 模式匹配
通常与 % 和 _ 一起使用,_ 代表一个字符,% 代表零个或多个字符,比如:
where name like "%name_";
⑦ regexp 正则匹配
regexp(regular expression),别名 rlike,通常用来执行更加复杂的字符串比较运算,
ps:
like 和 rlike 的区别是 like 要求运算符两边不是局部与全部的关系,而是一一对应。