基础函数
数据库提供很多基础函数,类似java提供api
模糊查询
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
可以和通配符 (%、_)配合使用,其中 “%” 表示0或多个任意的字符。“_” 表示一个任意的字符。
查询emp表中姓名中包含"涛"字的员工,显示员工姓名
查询emp表中姓名中以"刘"字开头的员工,显示员工姓名。
查询emp表中姓名以"刘"开头,并且姓名为两个字的员工,显示员工姓名
lower & upper 变小写和变大写
length 长度
SELECT ename ,UPPER(ename),LOWER(ename) ,LENGTH(ename)FROM emp;
substr 子串,截串
#获取ename第一个字母
#说明:有3个参数,参数1:要截取字符串,
#参数2:从哪个位置开始。java是从0,mysql是从1
#参数3:截取长度
SELECT ename,SUBSTR(ename,1,1) FROM emp
concat 拼串
SELECT * FROM dept
目标案例:accounting(一区)
SELECT CONCAT ( dname , ‘(’ , loc , ‘)’ ) FROM dept;
综合案例 :dname 列 首字母大写
思路:获取dname第一个字母,截串
获取从dname第二个字母值,最后,截串
第一个字母变大写
把两个字符串拼接起来
SELECT CONCAT(
UPPER(SUBSTR(dname,1,1)),
SUBSTR(dname,2,LENGTH(dname))
) FROM dept
综合案例 :将学生信息表中所有姓“刘”的改为姓“牛”的
- 所有字段都替换
UPDATE students SET sname=REPLACE(sname,'刘','牛') WHERE sname LIKE '刘%'
- 只更改首字母
UPDATE students SET sname=CONCAT('牛',SUBSTR(sname,2,LENGTH(sname)))WHERE sname LIKE '刘%'
replace 替换
需求:loc区替换区域
SELECT loc,REPLACE (loc,'区','区域') FROM dept;
round & ceil & floor
ROUND 四舍五入,CEIL 向上取整,FLOOR 向下取整
SELECT comm,ROUND(comm),CEIL(comm),FLOOR(comm) FROM emp;
UUID 唯一值,36字符串,做主键,分布式
SELECT UUID();
日期函数
NOW 当前日期
SELECT NOW()
SELECT CURRENT_DATE()
SELECT CURRENT_TIME()
LAST_DAY 2月28,29,30,31 每月最大日期
SELECT hiredate,LAST_DAY(hiredate) FROM emp
year & month & day
SELECT hiredate,
YEAR(hiredate),MONTH(hiredate),DAY(hiredate) FROM emp
DATE_FORMAT 日期转字符串,注意格式的大小写
%Y-%m-%d %H:%i:%s
%Y格式,Y4位年,y2位年
%m月份,%d日,%H 24小时,h12小时,%i分钟,%s秒
SELECT NOW(),
DATE_FORMAT(NOW(),'%Y年%m月%d日 %H小时%i分%s秒')
STR_TO_DATE 字符串转日期
SELECT YEAR(STR_TO_DATE('2020-10-09','%Y-%m-%d'))
另外
聚合函数:
多行函数也叫做聚合(聚集)函数,根据某一列或所有列进行统计。
提示
- 多行函数不能用在where子句中
- 多行函数和是否分组有关,分组与否会直接影响多行函数的执行结果。
- 多行函数在统计时会对null进行过滤,直接将null丢弃,不参与统计。