4.MySQL函数

  1. MySQL函数
    1. 数学函数
    2. 字符串函数
    3. 日期和时间函数
    4. 系统信息函数

 

  1. 数学函数

SELECT ABS (-8); #绝对值

SELECT CEILING (9.8) ;  #取大值(>=我的最小的整数)

SELECT FLOOR(9.8); #取小值(<=我的最大的整数)

SELECT RAND(); #0-1之间的随机数

SELECT RAND(5); #以某个数作为种子,返回重复随机数

 

符号函数--    #正数:1 负数:-1    0:0

SELECT SIGN(-99); #符号函数,只是笼统的返回正负值和0

SELECT SIGN (0);

SELECT SIGN (-25)

 

  1. 字符串函数

SELECT CHAR_LENGTH ('好好学习,天天向上'); #计算器(+),计算字符串中包含的字符数--包括  ,

SELECT CONCAT('偶','耐','你'); #合并字符串--强行拼接在一起

SELECT INSERT ('要想做事,先学做人',3,2,'做好事');   #替换字符串,从第某个位置开始,替换某个长度

SELECT INSERT ('要想做事,先学做人',100,2,'做好事'); #如果起始位置超过了字符串长度,则直接返回,不 做任何改变

SELECT LOWER('NI ZAI SHUO SHA ZI LEI'); #变小写

SELECT UPPER ('i love you'); #变大写

SELECT SUBSTR('要想做事,先学做人',3,4);  #截取,从第几(3)个位置开始截取,截取长度(4)

SELECT LEFT('要1想做事,先学做人',3); #从左边开始,截取3个字符

SELECT RIGHT('要想做事,先学做人',3); #从右边开始,截取3个字符

SELECT REPLACE ('要想做事,先学做人' , '做事', '幸福'); #在某一段字符串里替换:把A用B来替换(A: 前面的; B:后面的)

SELECT REVERSE('要想做事,先学做人'); #反转过来,反转地球!

 

  1. 日期和时间函数

#获取当前日期

SELECT CURRENT_DATE();

SELECT CURDATE();

 

#获取当前日期和时间

SELECT NOW();

SELECT LOCALTIME();

SELECT SYSDATE();

#分别获取日期中的某个部分

SELECT YEAR (NOW());

SELECT MONTH (NOW());

SELECT DAY (NOW());

SELECT HOUR (NOW());

SELECT MINUTE (NOW());

SELECT SECOND (NOW());

 

  1. 系统信息的函数

SELECT VERSION();

SELECT USER();

 

  1. 实际应用

查询姓李的同学,后来发现听错了,要改成姓厉的

首先,先看原先代码:

SELECT studentname

FROM student

WHERE studentname LIKE '李%'

再,看实际应用代码:

SELECT REPLACE(studentname,'李','厉')

FROM student

WHERE studentname LIKE '李%'

 

  1. 聚合函数---统计函数

--只有是NOT NULL的才可以,不然其他的如果是null,就不准了

SELECT COUNT(studentname) FROM student;

SELECT COUNT(*) FROM student;

SELECT COUNT(1) FROM student;

 

SELECT SUM(studentresult) AS 总分 FROM result;

SELECT AVG(studentresult) AS 平均分 FROM result;

SELECT MAX(studentresult) AS 最高分 FROM result;

SELECT MIN(studentresult) AS 最低分 FROM result;

 

#查询每个课程的平均分、最高分、最低分

#要有个前提----根据不同的科目来分组

#分组关键字的顺序: WHERE -- GROUP BY -- HAVING -- LIMIT

SELECT subjectno , AVG(studentresult) AS 平均分,

MAX(studentresult) AS 最高分 , 

MIN(studentresult) AS 最低分

FROM result

GROUP BY subjectno;

#但是,subjectno显示的结果看着不舒服,怎么直接换成科目名称???

SELECT subjectname,AVG(studentresult) AS 平均分,

MAX(studentresult) AS 最高分 ,

MIN(studentresult) AS 最低分

FROM result r

INNER JOIN `subject` sub

ON r.SubjectNo=sub.SubjectNo

GROUP BY r.subjectno;

#HAVING --过滤分组的记录必须满足次要的条件---分组之后,才能进行的操作

#最后再程序后面加点小花样,让它降序排列,只看前四名的成绩

SELECT subjectname,AVG(studentresult) AS 平均分,

MAX(studentresult) AS 最高分 ,

MIN(studentresult) AS 最低分

FROM result r

INNER JOIN `subject` sub

ON r.SubjectNo=sub.SubjectNo

GROUP BY r.subjectno

HAVING 平均分>80

ORDER BY 平均分 DESC

LIMIT 0,4

;

 

 

发布了65 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/kxindouhao5491/article/details/82844628