Author : Cyan_RA9
一、统计函数
1.基本语法 :
SELECT COUNT () / COUNT (column_name)… FROM table_name [ WHERE where_definitition]; 注意事项—— ① COUNT()表示查询整条记录,只要该记录满足WHERE子句的条件就会被统计在内; ② COUNT(column_name)表示在符合WHERE子句条件的基础上,还必须满足指定列不为NULL。 ③ 可以在一条查询语句中使用多个COUNT(column_name),以同时统计多个列,分别显示各个列的统计结果。 ④ 若想特意查询某列为空的记录,可以配合IF语句来使用, eg : SELECT COUNT(IF(ebonusIS NULL, 1, NULL)) FROMemployee; 该查询语句的意思是如果某条记录的ebonus字段为NULL,就返回一个非空字符(这里的1可以是任意的非空字符),继而被COUNT函数统计在内;如果某条记录的ebonus字段非NULL,就返回NULL,继而不被COUNT函数统计在内。 PS : 亦可以使用两个COUNT函数进行相减的操作,即用统计所有结果的COUNT函数 - 统计非空的COUNT函数。eg : SELECT COUNT(*) - COUNT(ebonus) FROMemployee; [体现了SQL的灵活性!] ⑤ 若希望COUNT函数的统计结果去重,可以在column_name前增加DISTINCT进行修饰,即COUNT( DISTINCT column_name)。
2.代码演示 :
演示Ⅰ——
现有学生表stus如下——
现要求—— ①统计表中一共有几位学生(即表中一共有多少条记录); ②统计数学成绩大于等于130的学生个数; 代码如下 :
演示Ⅱ——
向表中添加两条id = NULL的记录,stus表如下图所示 :
现要求—— ①统计英语成绩在80分以下的学生个数; ②统计英语成绩在80分以下的,且id不等于NULL的学生个数; 代码如下 :
二、合计函数
1.基本语法 :
SELECT SUM (column_name), SUM (column_name)… FROM table_name [ WHERE where_definition]; 注意事项—— ① SUM函数仅对数值型字段起作用,否则无意义; ② 可以同时对多个列求和。
2.代码演示 :
仍对stus表进行操作,stus表目前如下 :
三、平均函数
1.基本语法 :
SELECT AVG (column_name), AVG (column_name)… FROM table_name [ WHERE where_definition]; 注意事项—— ① 若求平均值的列中有NULL数据,AVG函数会自动跳过该NULL数据。 ② 除了AVG函数,还可以使用SUM(column_name) / COUNT(column_name)的方式来统计某一字段的平均值。
2.代码演示 :
仍对stus表进行操作,stus表目前如下 :
现要求—— ①查询所有学生的数学成绩的平均分以及英语成绩的平均分; ②将id = 2的学生Ice的数学成绩置为空,再次查询全体学生的数学平均分; 代码如下 :
四、最值函数
1.基本语法 :
SELECT MAX (columun_name)… / MIN (column_name)… FROM table_name [ WHERE where_definition]; 注意事项—— ① 与上面几个函数类似地,MAX和MIN函数也可以同时多个使用,并且可以混用。
2.代码演示 :
仍然操作stus表,目前stus表如下 :
现要求—— ①查询全体学生中最高的数学成绩和最低的数学成绩; ②查询全体学生中最高的英语成绩和最低的英语成绩; 代码如下 :
五、字符串函数
1.常用字符串函数 :
1° CHARSET(str) : 返回字段(具体的字符串)的字符集类型; 2° CONCAT(string, string2…) : 连接多个字符串,将多个列拼接成一列; 3° INSTR(string, substring) : 返回substring在string中出现的位置,没有则返回0; 4° UCASE(string) : 将当前字符串转换成大写; 5° LCASE(string) : 将当前字符串转换成小写; 6° LEFT(string, length) : 从string的左边起取length个字符;(RIGHT可从右取) 7° LENGTH(string) : 获取当前string的长度(字节); 8° REPLACE(str, old_string, new_string) : 用new_string替换掉str中的old_string); 9° STRCMP(string1, string2) : 按照逐个字符比较两字符串大小; 10° SUBSTRING(str, position [, length]) : 从str的position开始(默认是1),取LENGTH个字符; 11° LTRIM(string) / RTRIM(string) / TRIM(string) : 去掉前端空格 / 后端空格 / 两端空格。
2.代码演示 :
① CHARSET(str) : 返回字段的字符集类型;
② CONCAT(string, string2…) : 连接多个字符串;
③ INSTR(string, substring) : 返回substring在string中出现的位置,没有则返回0;
④ UCASE(string) : 将当前字符串转换成大写;
⑤ LCASE(string) : 将当前字符串转换成小写;
⑥ LEFT(string, length) : 从string的左边起取length个字符;
六、数学函数
1.常用数学函数 :
1° ABS(num) : 求绝对值; 2° BIN(decimal_number) : 十进制转二进制; 3° CEILING(number) : 向上取整; 4° FLOOR(number) : 向下取整; 5° CONV(number, from_base, to_base) : 进制转换,将number以一个指定的进制转为另一个进制; 6° FORMAT(NUMBER, decimal_places) : decimal_places代表保留的小数位数(四舍五入); 7° HEX(DecimalNumber) : 转十六进制; 8° LEAST(number_1 [, number_2…number_n]) : 求最小值; 9° MOD(numerator, denominator) : 取余; 10° RAND([seed]) : 求0~1.0之间的随机数,若想要返回的随机数不变化,可以给出一个seed(种子)。
2.代码演示 :
七、日期函数
1.常用日期函数 :
1° CURRENT_DATE : 当前日期; 2° CURRENT_TIME : 当前时间; 3° CURRENT_TIMESTAMP : 当前时间戳; 4° DATE(datetime) : 返回当前时间的日期部分; //以下四个函数的date类型可以是DATE, DATETIME, TIMESTAMP类型 5° DATE_ADD(date, INTERVAL d_value d_type) : 在当前日期的基础上加上一段时间或日期;(d_type 可以是YEAR, MINUTE, SECOND, DAY等) 6° DATE_SUB(date, INTERVAL d_value d_type) : 在当前日期的基础上减去一段时间或日期;(d_type 可以是YEAR, MINUTE, SECOND, DAY等) 7° DATEDIFF(date1, date2) : 返回两个日期的时间差,结果是天; 8° TIMEDIFF(date1, date2) : 返回两个时间的时间差,结果是时间; 9° NOW() : 返回当前时间; 10° UNIX_TIMESTAMP() : 返回1970-1-1到现在的秒数。 11° FROM_UNIXTIME() : 返回年月日。实际开发中,可能会使用int类型来保存一个时间戳,然后使用FROM_UNIXTIME()函数进行转换。
2.代码演示 :

1° CURRENT_DATE : 当前日期; 2° CURRENT_TIME : 当前时间; 3° CURRENT_TIMESTAMP : 当前时间戳;
4° DATE(datetime) : 返回当前时间的日期部分; 5° DATE_ADD(date, INTERVAL d_value d_type) : 在当前日期的基础上加上一段时间或日期; 6° DATE_SUB(date, INTERVAL d_value d_type) : 在当前日期的基础上减去一段时间或日期;
先来建一张新闻消息表,代码如下:
7° DATEDIFF(date1, date2) : 返回两个日期的时间差,结果是天; 8° TIMEDIFF(date1, date2) : 返回两个时间的时间差,结果是时间;
八、加密函数
1.基本语法 :
1° SELECT USER() FROM table_name; ——查询当前登录到MySQL的用户及其IP; 2° SELECT DATABASE(); ——查询当前使用的数据库名称; 3° SELECT MD5(str); ——根据当前字符串,通过MD5特定算法得到一个32位的密码,常用于对数据库用户密码的加密,并且数据库中保存的用户密码,往往就是MD5加密后的密码; 4° SELECT * FROM mysql.user; ——查询mysql数据库中的所有用户。
2.代码演示 :
1° SELECT USER() FROM table_name; 2° SELECT DATABASE();
3° SELECT MD5(str);
九、 流程控制函数
1.基本语法 :
1° SELECT IF(expr_1, expr_2, expr_3) FROM table_name; ——若expr_1为TRUE则返回expr_2,否则返回expr_3)。(相当于java中的三目运算符) 2° SELECT IFNULL(expr_1, expr_2) FROM table_name; ——若expr_1为NULL,返回expr_2,否则返回expr_1)。 3° SELECT CASE WHEN expr_1 THEN expr_2 WHEN expr_3 THEN expr_4… WHEN expr_n-1 THEN expr_n ELSE expr_e END ; ——若expr_1成立,则返回expr_2;若expr_3成立,则返回expr_4,依此类推;若所有条件都不成立,返回ELSE中的内容。(相当于java中自带break语句的case分支语句)。
2.代码演示 :
1° SELECT IF(expr_1, expr_2, expr_3) FROM table_name; 2° SELECT IFNULL(expr_1, expr_2) FROM table_name;
3° SELECT CASE WHEN expr_1 THEN expr_2
WHEN expr_3 THEN expr_4…
WHEN expr_n-1 THEN expr_n
ELSE expr_e END;
stus表如下 :
System.out.println("END—————————————————————————–");

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/163894.html