选择部分:
应用场景:从数据库中存在的表中,挑选出符合条件的数据。
一般方法:查询满足单一条件的数据,在使用union连接下一个满足其余限定条件的查询语句结果集。
基本思路:将条件分解,进行数据筛选。
Union方法理解:
union:用于合并两个或多个select集,会过滤掉重复的数据,适用于统计数据,行列数量必须相同。
union all:行列数量等于前一个查询的结果集数量。
Union与or区别:or需要重新扫描表中数据,而union不需要重新扫描,效率更高。
其余注意事项:
MySQL 使用三值逻辑 —— TRUE, FALSE 和 UNKNOWN。任何与 NULL 值进行的比较都会与第三种值 UNKNOWN 做比较。这个“任何值”包括 NULL 本身!这就是为什么 MySQL 提供 IS NULL 和 IS NOT NULL 两种操作来对 NULL 特殊判断。
在sql中,判断字段值是否相同使用“=”,不使用“==”;
<>和!=是一致的。
排序&修改部分:
应用场景:将数据库中的表按照某一个字段的值进行排序,或者将数据库中的某一个表中满足条件的数据删除或修改后排序。
一般方法:若只需要排序,使用order by 函数即可;若需要删除数据,使用delete语句即可,若有条件限制使用where 语句即可;若需要修改表中的数据,使用set语句即可,若有不具有关联性的条件,可使用set修改满足条件的字段值。
基本思路:若删除满足条件的数据,可以使用查询语句将满足条件的数据找出,在与原表进行比较,删除原表中的数据即可;若需要在一个字段满足不同条件修改不同值,可使用case when函数方法。
Case when方法理解:
作用:条件组合判断语句。
Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
一般格式:case val when pexl then true else false
其余事项:
数据库中匹配字符使用 like 'val%'表示以什么字符开头;
匹配字符使用like '%val%' 表示含有子字符串val;
匹配字符使用like '%val'表示以什么字符结尾。
字符串处理函数/正则部分:
应用场景:需要对数据库中表中数据类型是字符的数据进行操作。
基本思路:根据相应的条件要求选择合适的字符操作函数作为辅助。
字符串操作常用函数:
数据库中通过concat(str,str,...,str)方法,将字符串拼接在一起;
数据库中通过upper(str)方法将字符串改为大写;
数据库中通过lower(str)方法将字符串改为小写;
数据库中通过length(str)获取字符串的长度;
数据库中通过substring(str,index)方法,表示从index处开始截取字符串片段;
数据库中通过left(str,index)方法,表示从左开始截取字符串到index处的字符;
数据库中通过right(str,index)方法,表示从右到左开始截取字符串到index处的字符。
详细API文档地址:12.3. 字符串函数_MySQL 中文文档
sql语句中也可以使用正则表达式
使用 regexp定义正则表达式,其基本定义如下图所示
组合查询&指定选取
应用场景:用于将重复的数据按条件进行归并。
基本思路:明确重复的字段,使用GROUP BY函数合并数据。
基本方法:
left outer join :左连接,表示返回所有与左边表相匹配的右表信息,若右表中没有与之匹配的信息,则生成的新字段设置成null,right outer join 与子相反。(outer可省去)
union:连接两个或两个以上的select 语句,并将重复的元素删除。
distinct:只保留指定字段的唯一值。
LIMIT:可以有一个或两个参数,有一个参数时,为创建一个数据容量为1的临时表,若有两个参数则前一个参数表明要跳过的数据数,后一个参数表示容量;
OFFSET:表示要跳过的数据条数,若与limit联合使用,limit只能有一个参数。
GROUP BY:用于将数据中指定字段重复的数据进行合并。
日期操作方法:
datediff用法:
格式:DATEDIFF ( datepart , startdate , enddate );
说明:datepart是你想要比较的日期的一部分。startdate是第一个日期,enddate是结束日期。
比较方式:从enddate中减去startdate。
默认是后一天-前一天日期的天数。
数据操作函数:
COUNT():计数函数,返回符合条件的数据个数。
SUM():求和函数,返回指定字段值的和。
MAX():返回指定字段的最大值。
MIN():返回指定字段的最小值。
COALESCE(value1,value2,...):返回第一个非空的参数,若所有参数为空,返回null。