- 函数定义 1.类似Java定义方法 2.可以带参数 3.必须有返回值(一行一列) ,重点:java方法可以没有返回值,数据库函数必须要有返回值
select max(score) from sc;
4.函数可以嵌套到sql语句中
注:存储过程则不可以
5.函数可嵌套调用
一、常用函数
1.日期函数
- NOW():获取当前日期和时间
select now() - DAY():获取日期中的天
- MONTH():获取日期中的月
- YEAR():获取日期中的年
- 日期转换函数DATE_FORMAT()/STR_TO_DATE()
1.
"YYYY-MM-dd HH:mm:ss" "2020/08/05"
DATE_FORMAT():将日期转换成字符串
STR_TO_DATE():将字符串转换成日期
查询各学生的年龄,只按年份来算 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
select sid,sname,sage,
year(now())-year(sage)+(case when convert(
DATE_FORMAT(now(),'%m%d'),signed)
-convert(DATE_FORMAT(sage,'%m%d'),signed)<0
then
-1
else
0
end) as a
from t_student;
select sid,sname,sage,
year(now())-year(sage)+if(convert(
DATE_FORMAT(now(),'%m%d'),signed)
-convert(DATE_FORMAT(sage,'%m%d'),signed)<0,-1,0) as a
from t_student;
查询本月过生日的学生
查询下月过生日的学生
date_add(NOW(), interval 1 MONTH)
2.字符串函数
- UPPER()/LOWER():大小写互转
- REPLACE():搜索并替换字符串中的子字符串
- SUBSTRING():从具有特定长度的位置开始的最一个子字符串
- TRIM():去除前后空格
- LENGTH():获取字符串长度
3.数字函数
1)FLOOR:向下取整
2)CEIL: 向上取整
3)ROUND:四舍五入
select FLOOR(-3.14), CEIL(-3.14);
二、聚合函数(SUM/COUNT/AVG/MAX/MIN)
- SUM():求和。常与GROUP BY一起使用,也可单独使用
- AVG():求平均值。常与GROUP BY一起使用,也可单独使用
- MAX():求最大值。常与GROUP BY一起使用,也可单独使用
- MIN():求最小值。常与GROUP BY一起使用,也可单独使用
- COUNT():统计记录的条数。常与GROUP BY一起使用,也可单独使用
三、合并(union)
- UNION:将所有的查询结果合并到一起,然后去除掉相同的记录
- UNION ALL:将所有的查询结果合并到一起,不会去除掉系统的记录
前提条件:结果集列数个数相同,列的类型还要相同或是兼容
使用场景:在项目统计报表模块,用来合并数据
convert:类型转换函数,例如:convert(expr,转换类型)
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
三大范式: 原子性 所有分量依赖主键码 主属性不依赖非主属性
第一范式条件:必须不包含重复组的关系,即每一列都是不可拆分的原子项
第二范式条件:关系模式必须满足第一范式,并且所有非主属性都完全依赖于主码。
第三范式的条件:关系模型满足第二范式,所有非主属性对任何候选关键字都不存在传递依赖。即每个属性都跟主键有直接关系而不是间接关系
订单编号 订单日期
商品编号 订单编号 客户编号 商品数量 单价 商品名称 客户姓名
studentInfo
学生编号 学生姓名 年龄 班级 性别 住址编号 选修课程
中国湖南省长沙市天心区XX街道
中国湖南省岳阳市南湖区XX街道
中国湖南省长沙市岳麓区浪琴湾
函数/方法
public int a(){}
public void b(a()){
}