一 函数
MySQL中提供了许多内置函数,例如:
一、数学函数1 ROUND(x,y)
2 返回参数x的四舍五入的有y位小数的值
3
4 RAND()
5 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。View Code
二、聚合函数(常用于GROUP BY从句的SELECT查询中)1 AVG(col)返回指定列的平均值
2 COUNT(col)返回指定列中非NULL值的个数
3 MIN(col)返回指定列的最小值
4 MAX(col)返回指定列的最大值
5 SUM(col)返回指定列的所有值之和
6 GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果三、字符串函数1 CHAR_LENGTH(str)
2 返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。
3 CONCAT(str1,str2,...)
4 字符串拼接
5 如有任何一个参数为NULL ,则返回值为 NULL。
6 CONCAT_WS(separator,str1,str2,...)
7 字符串拼接(自定义连接符)
8 CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
9
10 CONV(N,from_base,to_base)
11 进制转换
12 例如:
13 SELECT CONV('a',16,2); 表示将 a 由16进制转换为2进制字符串表示
14
15 FORMAT(X,D)
16 将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。若 D 为 0, 则返回结果不带有小数点,或不含小数部分。
17 例如:
18 SELECT FORMAT(12332.1,4); 结果为: '12,332.1000'
19 INSERT(str,pos,len,newstr)
20 在str的指定位置插入字符串
21 pos:要替换位置其实位置
22 len:替换的长度
23 newstr:新字符串
24 特别的:
25 如果pos超过原字符串长度,则返回原字符串
26 如果len超过原字符串长度,则由新字符串完全替换
27 INSTR(str,substr)
28 返回字符串 str 中子字符串的第一个出现位置。
29
30 LEFT(str,len)
31 返回字符串str 从开始的len位置的子序列字符。
32
33 LOWER(str)
34 变小写
35
36 UPPER(str)
37 变大写
38
39 REVERSE(str)
40 返回字符串 str ,顺序和字符顺序相反。
41
42 SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)
43 不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。
44
45 mysql> SELECT SUBSTRING('Quadratically',5);
46 -> 'ratically'
47
48 mysql> SELECT SUBSTRING('foobarbar' FROM 4);
49 -> 'barbar'
50
51 mysql> SELECT SUBSTRING('Quadratically',5,6);
52 -> 'ratica'
53
54 mysql> SELECT SUBSTRING('Sakila', -3);
55 -> 'ila'
56
57 mysql> SELECT SUBSTRING('Sakila', -5, 3);
58 -> 'aki'
59
60 mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);
61 -> 'ki'四、日期和时间函数1 CURDATE()或CURRENT_DATE() 返回当前的日期
2 CURTIME()或CURRENT_TIME() 返回当前的时间
3 DAYOFWEEK(date) 返回date所代表的一星期中的第几天(1~7)
4 DAYOFMONTH(date) 返回date是一个月的第几天(1~31)
5 DAYOFYEAR(date) 返回date是一年的第几天(1~366)
6 DAYNAME(date) 返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE);
7 FROM_UNIXTIME(ts,fmt) 根据指定的fmt格式,格式化UNIX时间戳ts
8 HOUR(time) 返回time的小时值(0~23)
9 MINUTE(time) 返回time的分钟值(0~59)
10 MONTH(date) 返回date的月份值(1~12)
11 MONTHNAME(date) 返回date的月份名,如:SELECT MONTHNAME(CURRENT_DATE);
12 NOW() 返回当前的日期和时间
13 QUARTER(date) 返回date在一年中的季度(1~4),如SELECT QUARTER(CURRENT_DATE);
14 WEEK(date) 返回日期date为一年中第几周(0~53)
15 YEAR(date) 返回日期date的年份(1000~9999)重点:
DATE_FORMAT(date,format) 根据format字符串格式化date值1 CURDATE()或CURRENT_DATE() 返回当前的日期
2 CURTIME()或CURRENT_TIME() 返回当前的时间
3 DAYOFWEEK(date) 返回date所代表的一星期中的第几天(1~7)
4 DAYOFMONTH(date) 返回date是一个月的第几天(1~31)
5 DAYOFYEAR(date) 返回date是一年的第几天(1~366)
6 DAYNAME(date) 返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE);
7 FROM_UNIXTIME(ts,fmt) 根据指定的fmt格式,格式化UNIX时间戳ts
8 HOUR(time) 返回time的小时值(0~23)
9 MINUTE(time) 返回time的分钟值(0~59)
10 MONTH(date) 返回date的月份值(1~12)
11 MONTHNAME(date) 返回date的月份名,如:SELECT MONTHNAME(CURRENT_DATE);
12 NOW() 返回当前的日期和时间
13 QUARTER(date) 返回date在一年中的季度(1~4),如SELECT QUARTER(CURRENT_DATE);
14 WEEK(date) 返回日期date为一年中第几周(0~53)
15 YEAR(date) 返回日期date的年份(1000~9999)五、加密函数1 MD5()
2 计算字符串str的MD5校验和
3 PASSWORD(str)
4 返回字符串str的加密版本,这个加密过程是不可逆转的,和UNIX密码加密过程使用不同的算法。六、控制流函数1 CASE WHEN[test1] THEN [result1]...ELSE [default] END
2 如果testN是真,则返回resultN,否则返回default
3 CASE [test] WHEN[val1] THEN [result]...ELSE [default]END
4 如果test和valN相等,则返回resultN,否则返回default
5
6 IF(test,t,f)
7 如果test是真,返回t;否则返回f
8
9 IFNULL(arg1,arg2)
10 如果arg1不是空,返回arg1,否则返回arg2
11
12 NULLIF(arg1,arg2)
13 如果arg1=arg2返回NULL;否则返回arg1七、控制流函数小练习1 #7.1、准备表
2 /*
3 Navicat MySQL Data Transfer
4
5 Source Server : localhost_3306
6 Source Server Version : 50720
7 Source Host : localhost:3306
8 Source Database : student
9
10 Target Server Type : MYSQL
11 Target Server Version : 50720
12 File Encoding : 65001
13
14 Date: 2018-01-02 12:05:30
15 */
16
17 SET FOREIGN_KEY_CHECKS=0;
18
19 -- ----------------------------
20 -- Table structure for course
21 -- ----------------------------
22 DROP TABLE IF EXISTS `course`;
23 CREATE TABLE `course` (
24 `c_id` int(11) NOT NULL,
25 `c_name` varchar(255) DEFAULT NULL,
26 `t_id` int(11) DEFAULT NULL,
27 PRIMARY KEY (`c_id`),
28 KEY `t_id` (`t_id`)
29 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
30
31 -- ----------------------------
32 -- Records of course
33 -- ----------------------------
34 INSERT INTO `course` VALUES ('1', 'python', '1');
35 INSERT INTO `course` VALUES ('2', 'java', '2');
36 INSERT INTO `course` VALUES ('3', 'linux', '3');
37 INSERT INTO `course` VALUES ('4', 'web', '2');
38
39 -- ----------------------------
40 -- Table structure for score
41 -- ----------------------------
42 DROP TABLE IF EXISTS `score`;
43 CREATE TABLE `score` (
44 `id` int(11) NOT NULL AUTO_INCREMENT,
45 `s_id` int(10) DEFAULT NULL,
46 `c_id` int(11) DEFAULT NULL,
47 `num` double DEFAULT NULL,
48 PRIMARY KEY (`id`)
49 ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
50
51 -- ----------------------------
52 -- Records of score
53 -- ----------------------------
54 INSERT INTO `score` VALUES ('1', '1', '1', '79');
55 INSERT INTO `score` VALUES ('2', '1', '2', '78');
56 INSERT INTO `score` VALUES ('3', '1', '3', '35');
57 INSERT INTO `score` VALUES ('4', '2', '2', '32');
58 INSERT INTO `score` VALUES ('5', '3', '1', '66');
59 INSERT INTO `score` VALUES ('6', '4', '2', '77');
60 INSERT INTO `score` VALUES ('7', '4', '1', '68');
61 INSERT INTO `score` VALUES ('8', '5', '1', '66');
62 INSERT INTO `score` VALUES ('9', '2', '1', '69');
63 INSERT INTO `score` VALUES ('10', '4', '4', '75');
64 INSERT INTO `score` VALUES ('11', '5', '4', '66.7');
65
66 -- ----------------------------
67 -- Table structure for student
68 -- ----------------------------
69 DROP TABLE IF EXISTS `student`;
70 CREATE TABLE `student` (
71 `s_id` varchar(20) NOT NULL,
72 `s_name` varchar(255) DEFAULT NULL,
73 `s_age` int(10) DEFAULT NULL,
74 `s_sex` char(1) DEFAULT NULL,
75 PRIMARY KEY (`s_id`)
76 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
77
78 -- ----------------------------
79 -- Records of student
80 -- ----------------------------
81 INSERT INTO `student` VALUES ('1', '鲁班', '12', '男');
82 INSERT INTO `student` VALUES ('2', '貂蝉', '20', '女');
83 INSERT INTO `student` VALUES ('3', '刘备', '35', '男');
84 INSERT INTO `student` VALUES ('4', '关羽', '34', '男');
85 INSERT INTO `student` VALUES ('5', '张飞', '33', '女');
86
87 -- ----------------------------
88 -- Table structure for teacher
89 -- ----------------------------
90 DROP TABLE IF EXISTS `teacher`;
91 CREATE TABLE `teacher` (
92 `t_id` int(10) NOT NULL,
93 `t_name` varchar(50) DEFAULT NULL,
94 PRIMARY KEY (`t_id`)
95 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
96
97 -- ----------------------------
98 -- Records of teacher
99 -- ----------------------------
100 INSERT INTO `teacher` VALUES ('1', '大王');
101 INSERT INTO `teacher` VALUES ('2', 'alex');
102 INSERT INTO `teacher` VALUES ('3', 'egon');
103 INSERT INTO `teacher` VALUES ('4', 'peiqi');
104
105 #7.2、统计各科各分数段人数.显示格式:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]
106
107 select score.c_id,
108 course.c_name,
109 sum(CASE WHEN num BETWEEN 85 and 100 THEN 1 ELSE 0 END) as '[100-85]',
110 sum(CASE WHEN num BETWEEN 70 and 85 THEN 1 ELSE 0 END) as '[85-70]',
111 sum(CASE WHEN num BETWEEN 60 and 70 THEN 1 ELSE 0 END) as '[70-60]',
112 sum(CASE WHEN num < 60 THEN 1 ELSE 0 END) as '[ <60]'
113 from score,course where score.c_id=course.c_id GROUP BY score.c_id;DATE_FORMAT(date,format)小练习1 #1 基本使用
2 mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
3 -> 'Sunday October 2009'
4 mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
5 -> '22:23:00'
6 mysql> SELECT DATE_FORMAT('1900-10-04 22:23:00',
7 -> '%D %y %a %d %m %b %j');
8 -> '4th 00 Thu 04 10 Oct 277'
9 mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
10 -> '%H %k %I %r %T %S %w');
11 -> '22 22 10 10:23:00 PM 22:23:00 00 6'
12 mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
13 -> '1998 52'
14 mysql> SELECT DATE_FORMAT('2006-06-00', '%d');
15 -> '00'
16
17
18 #2 准备表和记录
19 CREATE TABLE blog (
20 id INT PRIMARY KEY auto_increment,
21 NAME CHAR (32),
22 sub_time datetime
23 );
24
25 INSERT INTO blog (NAME, sub_time)
26 VALUES
27 ('第1篇','2015-03-01 11:31:21'),
28 ('第2篇','2015-03-11 16:31:21'),
29 ('第3篇','2016-07-01 10:21:31'),
30 ('第4篇','2016-07-22 09:23:21'),
31 ('第5篇','2016-07-23 10:11:11'),
32 ('第6篇','2016-07-25 11:21:31'),
33 ('第7篇','2017-03-01 15:33:21'),
34 ('第8篇','2017-03-01 17:32:21'),
35 ('第9篇','2017-03-01 18:31:21');
36
37 #3. 提取sub_time字段的值,按照格式后的结果即"年月"来分组
38 SELECT DATE_FORMAT(sub_time,'%Y-%m'),COUNT(1) FROM blog GROUP BY DATE_FORMAT(sub_time,'%Y-%m');
39
40 #结果
41 +-------------------------------+----------+
42 | DATE_FORMAT(sub_time,'%Y-%m') | COUNT(1) |
43 +-------------------------------+----------+
44 | 2015-03 | 2 |
45 | 2016-07 | 4 |
46 | 2017-03 | 3 |
47 +-------------------------------+----------+
48 rows in set (0.00 sec)
49
50 需要掌握函数:date_formatView Code
更多函数:中文猛击这里 OR 官方猛击这里
一 自定义函数
#!!!注意!!!1 #函数中不要写sql语句(否则会报错),函数仅仅只是一个功能,是一个在sql中被应用的功能
2 #若要想在begin...end...中写sql,请用存储过程1 delimiter //
2 create function f1(
3 i1 int,
4 i2 int)
5 returns int
6 BEGIN
7 declare num int;
8 set num = i1 + i2;
9 return(num);
10 END //
11 delimiter ;
12 delimiter //
13 create function f5(
14 i int
15 )
16 returns int
17 begin
18 declare res int default 0;
19 if i = 10 then
20 set res=100;
21 elseif i = 20 then
22 set res=200;
23 elseif i = 30 then
24 set res=300;
25 else
26 set res=400;
27 end if;
28 return res;
29 end //
30 delimiter ;
二 删除函数
1 drop function func_name;
三 执行函数
1 # 获取返回值
2 select UPPER('egon') into @res;
3 SELECT @res;
4
5
6 # 在查询中使用
7 select f1(11,nid) ,name from tb2;
MYSQL中CONTAINS函数的用法 mysql conv函数
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Mysql 常用函数
Mysql常用函数
mysql 常用函数 mysql函数 -
contains函数用法python python中contains函数
python语言Python是一门非常方便的编程语言,这也是其成为当前热门行业(如人工智能,数据分析)首选工具的主要原因之一。python的便利之处不仅仅在于各种多功能强大的封装库,更多的是其大量人性化的函数调用,但这一点也是学习python的难点之一。 python语言 python拥有海量内置函数已经接触过python的读者应该都对python海量的内置函数有所了解,这些函数把我们原
contains函数用法python python contains类似函数 python rfind函数用法 python 字符串 -
mysql的convert函数不能用 mysql conv函数
其他函数 1.格式化函数format(x,n) format(x,n)将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串的形式返回。若n为0,则返回结果函数不含小数部分。
mysql的convert函数不能用 MySQL函数 MySQL其他函数 MySQL函数其他函数 MySQL