mysql基础进阶
Posted 小冰棍
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于mysql基础进阶的主要内容,如果未能解决你的问题,请参考以下文章