常见函数: 字符函数: 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