mysql基础进阶

常见函数:     字符函数:     length 字段字符长度     concat 连接子串     substr 截取子串     instr  插入子串     trim 两端去空     upper 变大写     lower 变小写     lpad 左填充     rpad 右填充     replace 替换          数字函数:     round 四舍五入     ceil 向上取整     floor 向下取整     mod 取模     truncate 截断     rand 返回0-1间的随机小数          日期函数:     now 返回当前日期+时间     curdate 返回当前日期     curtime 返回当前时间     year     month     monthname 以英文形式返回月     day     hour     minute     second     date_format 将日期转换成字符          其它函数:     version 当前数据服务器版本     database 当前打开的数据库     user 当前用户     md5(‘字符‘)  返回该字符的md5加密形式          控制函数:     1)if     if(条件表达式,表达式1,表达式2) 如果条件表达式成立,返回表达式1,反之返回2     select dept_id,     sum(if (sex=‘男‘,1,0)) male count,     sum(if (sex=‘女‘,1,0)) female count,     from emp_sex     group by dept_id;            2)case     select dept_id,     sum(case sex when ‘男‘ then 1 else 0 end) male count,     sum(case sex when ‘女‘ then 1 else 0 end) female count,     from emp_sex     group by dept_id;   分组函数:     sum,avg,max,min,count     1.sum,avg一般用于处理数值型,max min count 可以处理任何类型     2.以上分组函数都忽略null值     3.可以和distinct搭配实现去重运算      group by 分组查询:     1.分组查询中的筛选条件分为两类:         分组前筛选: 操作数据源         分组后筛选: 操作分组后的结果集         1).分组函数作为条件肯定放在having子句中         2).能用分组前筛选的,优先考虑分组前筛选     2.group by 可以写多个字段分组,前后无顺序关系     3.有排序则放在整个分组查询的最后      SELECT * FROM sc GROUP BY sid; 分组后未指定聚合函数,系统默认选择显示sid的第一条数据          mysql基础语法:     select 分组函数,分组后的字段 step5     from 表1 别名1,表2 别名2 step1     where 筛选条件 step2     group by 分组的字段 step3     having 分组后的筛选 step4     order by 排序列表 step6      sql92语法: (非)等值连接:     1.多表等值连接的结果为多表的交集部分     2.n表连接,至少需要n-1个连接条件     3.多表的顺序没有要求    4.一般需要为表起别名(起别名后select中不能再写表原始名)     5.可以搭配前面介绍的所有子句      自连接:     1.一张表当做两张表来看,起不同的别名,查询同一张表中的数据     语法:     select 别名1.字段,别名2.字段     from 表A 别名1,表A 别名2     where 别名1.字段=别名2.字段      sql99语法:     语法:     select 查询列表     from 表1 别名 [连接类型]     join 表2 别名     on 连接条件     [where 筛选条件]     [group by 分组]     [having 筛选条件]     [order by [排序列表]      连接类型分类: 内连接: inner 外连接:     左外:left     右外:right     全外:full 交叉连接:cross