MySQL学习

    技术2024-08-21  65

    四、常用函数

    4.1常见函数

    select upper(指定字符串)

    select upper(指定字符串)

    left(str,len) 返回左边的字符

    select Lower(‘ABC’);

    select Lower('ABC');

    SELECT SUBSTRING(STR,POS); POS为开始索引,STR为字符串

    SELECT SUBSTRING('你好啊2222',2);

    SELECT LTRIM(’ 你们好 2 ') AS ac;'去除左边的空格

    SELECT LTRIM(' 你们好 2 ') AS ac;'

    SELECT LENGTH(‘你们好!’); 返回字符串的长度

    SELECT LENGTH('你们好!');

    RIGHT(str,len)

    SELECT RIGHT('123465',4);

    SELECT LOCATE(s_str,p_str); 返回一个串的子串

    SELECT LOCATE('你好','你好!');

    SOUNDEX() 返回发音相同的串

    常用函数 SELECT LEFT('0521561',2) LEFT(str,len) -- 返回从左边数起的len长度字符串 SELECT RIGHT('123465',2); RIGHT(str,len) -- 返回从右边边数起的len长度字符串 SELECT LOCATE('0','123456') LOCATE(`substr`,str) -- 返回substr 在str中的位置 -- 找出串的一个字串 -- 若不存在则返回0 SELECT LOWER('ABC') LOWER(str) -- 转为小写 SELECT UPPER('abc') UPPER(str); -- 转为大写 SELECT LTRIM(' 123') -- 去掉左边的空格 SELECT RTRIM('123dddd ') AS b -- 去掉右边的空格 -- 空格必须为英文空格,也就是半角空格 SELECT SOUNDEX('mike') -- 匹配发音类似的串 SELECT SUBSTRING('12345678',5,1); SUBSTRING(str,pos) SUBSTR(str,pos,len) SELECT stbstr(,) -- 返回从pos开始处的字串,len为返回长度,不填则默认返回后面的所有长度 SELECT REPLACE('丽日','日','月') REPLACE(str,from_str,to_Str) -- 将str 中的 from 替换成to SELECT REVERSE('张家口'); -- 逆序 SELECT INSERT(str,pos,len,newstr) SELECT INSERT('123456',4,2,'你') -- 用newstr替换 pos位置开始的len长度的字符串 SELECT ABS(-8) -- 绝对值 SELECT CEILING(9.4) -- 向上取整 SELECT FLOOR(9.4) -- 向下取整 SELECT RAND() -- 返回0`1 之间的一个随机数 SELECT SIGN(10) -- 判断一个数的符号 负数 -1 ,正数1

    4.2时间处理函数(重要)

    -- 时间和日期函数(记住) SELECT CURRENT_DATE() -- 获取当前日期 SELECT CURDATE() select current_time() --获取当前时间 select date() -- 获取日期时间的日期部分 date_format() -- 返回一个格式化的日期或者十间川 SELECT NOW() -- 当前时间localtime SELECT LOCALTIME() -- 本地时间 SELECT SYSDATE() -- 获取系统时间 yyyy-MM-DD hh:mm:ss select second() --获得一个时间的秒部分 SELECT MINUTE(NOW()) -- 获得一个时间分钟部分 SELECT HOUR(NOW()) -- 获得一个时间小时部分 select year() -- 获得指定日期的年份 select time() --获得一个日期时间的时间部分 SELECT DATEDIFF('2017-02-05','2018-05-06') SELECT DATEDIFF(NOW(),'2018-05-05') DATEDIFF(expr1,expr2) expr1-expr2 DATE_ADD(DATE,INTERVAL expr unit) -- expr:指定的是一个间隔值,在起始时间中增加或者减少,注意:expr是一个字符串.对于负值间隔,可以以"-"开头 -- unit:表示的是一个单位,比如,加上的是1天还是一个小时. SELECT DATE_ADD(NOW(),INTERVAL 5 HOUR) SELECT DATE_ADD(NOW(),INTERVAL 5 MINUTE) SELECT DATE_ADD(NOW(),INTERVAL 5 YEAR) -- date:起始日期或者起始时间

    4.3数值处理函数

    -- 数学运算 SELECT ABS(-8) -- 绝对值 SELECT CEILING(9.4) -- 向上取整 SELECT FLOOR(9.4) -- 向下取整 SELECT RAND() -- 返回0`1 之间的一个随机数 SELECT SIGN(10) -- 判断一个数的符号 负数 -1 ,正数1 select tan() -- 返回一个角度的正切值 select sqrt() -- 返回一个值的平方根 select mod() -- 返回除操作的余数 select pi() --返回圆周率

    五、聚集函数

    5.1AVG()函数

    计算平均值

    select avg(score) from sc;

    5.2count()函数

    三种使用方式

    1.使用count(*)对表中的行的数目进行计数,不管表列中包含的是空值(null)还是非空值 2.count(column)对特定列中的具有值的行进行计数,忽略null值 3.count(1),同样不会忽略null值

    三者之间的区别: 执行效果上: count(星)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。 执行效率上: 列名为主键,count(列名)会比count(1)快 列名不为主键,count(1)会比count(列名)快 如果表多个列并且没有主键,则 count(1) 的执行效率优于 count() 如果有主键,则 select count(主键)的执行效率是最优的 如果表只有一个字段,则 select count()最优。 转载自:https://www.cnblogs.com/zxf330301/p/10217350.html

    5.3MAX()函数

    返回指定列的最大值,MAX()要求指定列名

    对日期使用,返回最大的日期

    max会忽略null值

    可以对非数值类型使用

    5.4 MIN()函数

    MIN函数同样忽略为null值的行,同样需要指定列名可以对非数值类型使用,sname为varcahr类型

    5.5 SUM()函数

    用来返回指定字段的和可以利用算数操作符对多个列进行运算

    5.6聚集不同值

    对所有的行进行计算,指定all 或者不给参数(默认为all)只包含不同的值,指定distinct参数

    六、数据分组

    6.1group by 语句

    with rollup 可以得到每个分组以及每个分组总结别的值。

    没用WITH ROLLUP

    用了之后 可看见后面加了统计值

    6.2过滤分组 HAVING

    HAVING和where的区别:where在分组前过滤,having在分组后过滤

    过滤num不等于2的记录

    Processed: 0.011, SQL: 9