查询中用到的关键词主要包含六个,并且他们的顺序依次为
select--from--where--group by--having--order by --limit--desc/esc
where:过滤表中数据的条件
group by:如何将上面过滤出的数据分组
having:对上面已经分组的数据进行过滤的条件
select:查看结果集中的哪个列,或列的计算结果
order by :按照什么样的顺序来查看返回的数据
------------------------
having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)
更新:UPDATE table_name SET stat_time =REPLACE(stat_time, ';', ':') where;
-------------去重-----------
1:无主键数据去重
create table temp_b as (select DISTINCT aaa,bbbb,ccc from table_b);
delete from table_b;
truncate table table_name;区别在于delete删除部分 行数据,后者删除所有数据
INSERT into table_b select * from temp_b;
2:有主键数据去重
常用函数
CONCAT(id,username):字符串连接函数,返回结果为连接参数产生的字符串
if(expr,v1,v2)函数:如果expr的表达式是true则返回值为v1,否则为v2(select IF(sex="男",1,2) from user;)
case函数:
select case sex
when 1 then "男"
when 2 then "女"
else "nannv"
end as sex
from user;
ifnull(v1,v2)函数:v1不为空时返回v1,为空时返回v2
加密函数:password(str);MD5(str);
regexp正则表达式:(^匹配文本的开头字符^b表示匹配以字母b开头的字母;$匹配文本的结束字符'ry$'以ry结束的字符)
字符串截取函数:substring(idcard,7,4)表示截取idcard字段索引为7开始长度为4的字符串
类型转换函数:CAST(idcard as SIGNED)表示string转int:(2017-Cast(substring(idcard,7,4) as SIGNED))<19表示未成年
格式化函数:format(字段,n)表示返回n为小数;
日期时间函数DATE_FORMAT(字段,'%Y-%m-%d')
进制转换conv(number,n,m)表示吧number冲n转换成m进制
SELECT id from customer where CAST(SUBSTR(idcard,7,4) AS SIGNED) >2017-26 and CAST(SUBSTR(idcard,17,1) AS SIGNED)%2=0;
coalesce函数:coalesce(字段1,字段2,参数) as a表示取不为空的数据做a,当都为空时参数为a
to_char函数:数值日期转字符型
concat字符串连接函数:concat(字段1,'_',字段2) as b表示输出的数据为:字段1_字段2
datediff函数:datediff(时间日期1,时间日期2)表示1-2之间的天数
len函数:字符串的长度
replace函数:字符串替换函数 REPLACE(stat_time, 'from', 'to')
SUBSTRING_INDEX函数:字符串分割函数SUBSTRING_INDEX(字段,'分割符',1),其中1表示去第一个分割出来的数据,-1表示取倒数第一个分割出来的数据。
select SUBSTRING_INDEX(round_name,'_',1) from table_b