mysq打卡学习8函数总结

函数总结

一.函数概述

调用:SELECT 函数名(实参列表)

二.单行函数

1.字符函数
CONCAT:连接
SUBSTR:截取字符串
UPPER:大写
LOWER:小写
REPLACE:替换
LENGTH:字节长度
TRIM:去除前后空格
LPAD:左填充
RPAD:右填充
INSTR:获取字串第一次出现的索引
2.数学函数
CEIL:向上取整
FLOOR:向下取整
ROUND:四舍五入
MOD:取模
TRUNCATE:截断
RAND:获取随机数,0-1之间
3.日期函数
NOW:当前日期+时间
YEAR:年
MONTH:月
DAY:日
DATE_FORMAT:将日期转换成字符
CURDATE:返回当前日期
STR_TO_DATE:将字符转换为日期
CURTIME:当前时间
HOUR:小时
MINUTE:分
SECOND:秒
DATEDIFF:返回两个日期相差得天数
MONTHNAME:以英文形式返回月
4.其他函数
VERSION:数据库版本
DATABASE:当前打卡得数据库
USER:当前用户
PASSWORD('字符'):返回该字符得密码形式
MD5('字符'):返回该字符的MD5加密形式
5.流程控制函数
IF(条件表达式,表达式1,表达式2)
CASE情况
(1)
CASE 表达式或字段
WHEN 常量1 THEN 值1
WHEN 常量2 THEN 值2
ELSE 值n
END
(2)多层IF
CASE 
WHEN 条件1 THEN 值1
WHEN 条件2 THEN 值2
ELSE 值n
END

三.分组函数

1.分类
MAX:最大
MIN:最小
SUM:总和
AVG:平均值
COUNT:计算个数

2.特点
(1)语法
SELECT MAX(字段) FROM 表名:

(2)支持的类型
SUM,AVG一般用于处理数值型
MAX,MIN,COUNT任何类型

(3)以上都忽略NULL

(4)都可以搭配DISTINCT,实现去重
SELECT SUM(DISTINCT 字段) FROM 表

(5)COUNT函数
COUNT(字段):统计该字段非空的个数
COUNT(*):统计结果集的行数
COUNT(1):统计结果集的行数

(6)和分组函数一同查询的字段,要求是GROUP BY后出现的字段

四.分组查询

(1)语法
SELECT 分组函数,分组后的字段
FROM 表
【WHERE 筛选条件】
GROUP BY 分组后的筛选
【HAVING 分组后的筛选】

(2)特点
		        数据源		   位置               关键字
	分组前筛选      原始表		   GROUP BY 之前      WHERE
	分组后筛选	分组后的数据集     GROUP BY 之后      HAVING
【ORDER BY 排序列表】

五.连接查询

(1)含义
当前查询中涉及到了多个表的字段
SELECT 字段1,字段2
FROM 表1,表2.。。。

笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接
解决:添加有效的连接条件

(2)分类

	内连接
		等值连接
		非等值连接
		自连接
	外连接
		左外连接
		右外连接
		全外连接
	交叉连接

(3)语法
1.等值连接
SELECT 查询列表
FROM 表1 别名,表2 别名
WHERE 表1.key=表2.key
【AND 筛选条件】
【GROUP BY 分组字段】
【HAVING 分组后的筛选】
【ORDER BY 排序字段】

特点:
	一般为表起别名
	多表的顺序可以调换
	n表连接至少需要n-1个连接条件
	等值连接的结果是多表的交集部分
2.非等值连接
SELECT 查询列表
FROM 表1 别名,表2 别名
WHERE 非等值连接条件
【AND 筛选条件】
【GROUP BY 分组字段】
【HAVING 分组后的筛选】
【ORDER BY 排序字段】
3.自连接
SELECT 查询列表
FROM 表1 别名1,表1 别名2
WHERE 等值连接条件
【AND 筛选条件】
【GROUP BY 分组字段】
【HAVING 分组后的筛选】
【ORDER BY 排序字段】

练习

#1.每个国家下的别名个数大于2的国家编号
SELECT country_id,COUNT(*)
FROM departments AS d,locations AS l
WHERE d.`location_id`=l.`location_id`
GROUP BY country_id
HAVING COUNT(*)>2;
#分组之后添加条件


#2.选定员工的姓名,员工号,以及其管理者的姓名员工号
SELECT e.last_name,e.employee_id,m.last_name,m.employee_id
FROM employees e,employees m
WHERE e.`manager_id`=m.`employee_id`
AND e.`last_name`='kochhar';
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值