Bootstrap

数据库(DataBase)-常用函数

MySQL函数

官网:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html

1.常用函数

(1)数学运算

-- 绝对值
select abs(-77); -- 77

-- 向上取整
select ceiling(77.77); -- 78

-- 向下取整
select floor(77.77); -- 77

-- 返回一个0-1的随机数
select rand(); -- 每次都不一样

-- 判断一个数的符号,0返回0,正数返回1,负数返回-1
select sign(0);
select sign(7);
select sign(-77);

(2)字符串函数

-- 返回字符串长度,空格(Space)也包括在内。
select char_length('Alita Battle Angle');

-- 合并字符串,注意是否需要空格。
select concat('I',' ','Love',' ','you',' ','my',' ','dear',' ','Alita');

-- 插入,在指定位置开始替换指定字符串
select insert('我爱编程,我爱Java',1,2,'超级无敌');

-- 转换大小写
select lower('EDWIN JARVIS');

select upper('edwin jarvis');

-- 查找首次出现的位置
select instr('Edwin Jarvis','e');

-- 替换出现的指定字符串
select replace('Edwin Jarvis said keep going on and you will succeed.',
				'and you will succeed.','and you will make it!');

-- 返回指定的子字符串,格式:(源字符串,起始位置,结束位置);
select substr('Edwin Jarvis said keep going on and you will succeed.',7,17);

-- 翻转字符串
select reverse('Edwin Jarvis said keep going on and you will succeed.');

use school;
-- 混合应用,查询姓“成”的同学,将其姓氏改为“陈”
select replace(name,'成','陈') from student
where name like '成%';

(3)时间和日期函数(重要,记忆)

-- 获取当前日期
select current_date();-- '2020-05-15'

select curdate();

-- 获取当前日期和时间
select now(); -- 2020-05-15 10:46:05

-- 获取本地时间
select localtime(); -- '2020-05-15 10:46:50'

-- 获取系统时间
select sysdate(); -- '2020-05-15 10:47:37'

-- 年月日时分秒
select year(now());-- 2020
select month(now());-- 5
select day(now());-- 15
select hour(now());-- '10'
select minute(now());-- '48'
select second(now());-- '48'

(4)系统函数

select System_user(); -- root@localhost

select user(); -- root@localhost

select version(); -- 5.5.36

2.聚合函数(常用)

函数名称功能描述
count()计数
sum()求和
avg()求平均
max()求最大值
min()求最小值

1.count()函数

count():想要查询表中有多少数据时使用的函数。

count(指定列),查询指定列一共有多少条数据,会忽略null值,本质:计算name行数。

-- ================== 聚合函数 ====================
select count(name) from student;

-- count(*),查询本表格一共有多少条数据,不会忽略null值,本质:计算行数。
-- 大数据情况下,不推荐,运行时间可能会很长。
select count(*) from student;

-- count(列序号),不会忽略null值,本质:计算行数。
select count(1) from student;

执行效果上:

count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL

count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL

count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,
而是表示null)的计数,即某个字段值为NULL时,不统计。

执行效率上:

列名为主键,count(列名)会比count(1)快

列名不为主键,count(1)会比count(列名)快

如果表多个列并且没有主键,则 count(1) 的执行效率优于 count( * )

如果有主键,则 select count(主键)的执行效率是最优的

如果表只有一个字段,则 select count(*)最优。

2.求和函数

select sum(`StudentResult`) as 总分 from student;
select avg(`StudentResult`) as 均分 from student;
select max(`StudentResult`) as 最高分 from student;
select min(`StudentResult`) as 最低分 from student;

参考文献

《【狂神说Java】MySQL最新教程通俗易懂》
视频连接:https://www.bilibili.com/video/BV1NJ411J79W

2020.05.24

;