博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【java】java学习之路-06-MySQL(四)
阅读量:6833 次
发布时间:2019-06-26

本文共 2786 字,大约阅读时间需要 9 分钟。

MySQL 数据库 day04

一、mysql函数

1、字符串处理函数
(1)char_length('a中') 字符数。一个中文是一个字符
select char_length('a中');
(2)length('a中') 字节数。要看是什么编码,如果是gbk,中文是2个编码;如果是utf8,中文是3个编码

(3)concat('a','b','cdf','fff') 字符串连接,其他数据库可用||连接字符串,'abc'||'def'

(4)concat_ws(';','a','b','cdf','fff') 用分隔符连接字符串。分隔符可以替换成其他连接字符串
select concat_ws(';','a','b','cdf','fff');

(5)instr('abcdefgdef','def') 返回第一个子串的位置,从1开始,找不到返回0

(6)locate('abc','---abc---abc') 返回第一个子串的位置,从1开始,找不到返回0
(7)locate('abc','---abc---abc',5) 从指定位置向后找

(8)insert('abceefghijklmn',2,11,'---') 用子串取代从2位置开始的11个字符

(9)lower('AdFLaK') 变为小写

(10)upper('AdFLaK') 变为大写

(11)left('AdFfLJf',3) 返回最左边的三个字符

(12)right('AdFfLJf',3) 返回最右边的三个字符

(13)lpad('abc',8,'*') 左侧填充,指定长度比源字符串少,相当于left

(14)rpad('abc',8,'*') 右侧填充,指定长度比源字符串少,相当于left

(15)trim(' a bc ') 去除两端空格

(16)substring('abcdefghijklmn',3) 从3位置开始的所有字符串

(17)substring('abcdefghijklmn',3,6) 从3位置开始的6个字符串

(18)repeat('abc',3) 重复三遍abc

(19)replace('Hello MySql','My','You') 子串替换

(20)reverse('Hello') 翻转字符串

(21)space(10) 返回10个空格

2、数字函数

(1)ceil(-3.14) -- -3 向上取整
(2)floor(3.94) -- 4 向下取整
(3)format(391.536,2) 数字格式化为字符串,四舍五入,第二个参数为小数位数

(4)round(673.4974) 四舍五入

(5)round(673.4974,2) 四舍五入到小数点后两位
(6)round(673.4974,-2) 四舍五入到百,参数为-1,表示四舍五入到十位

(7)truncate(234.31,1) 舍去至小数点后一位,【没有四舍五入】

(8)abs(-12) 绝对值,得到12

3、日期函数
(1)now() 返回当前的日期和时间

(2)curdate() 返回当前系统的日期

(3)curtime() 返回当前系统的时间

(4)date(时间) 提取日期或日期/时间表达式的日期部分

(5)time(时间) 提取日期或日期/时间表达式的时间部分

(6)extract(字段 from 日期) 返回日期/时间的单独部分

字段的合法值:second/minute/hour/day/week/month/quarter/year ......
(7)date_add(日期,interval 数量 字段) 给日期添加指定的时间间隔
字段的合法值同上
(8)date_sub(日期,interval 数量 字段) 从日期减去指定的时间间隔

(9)datediff(日期1,日期2) 返回两个日期之间的天数

(10)date_format(日期,格式) 用不同的格式显示日期/时间

格式字符:%Y-%m-%d%H:%i:%s
%d/%m/%year
%y年%m月%d日
...
...
(11)last_day(日期) 返回当月最后一天

 二、null相关

1、ifnull(数据1,数据2) 数据1是null返回数据2;不是null返回数据1

2、coalesce(数据,数据2,数据3,......) 从左向右第一个不是null的数据

三、加密

1、md5() 常用密码加密方式。返回32个长度的16进制数字字符串
2、sha() 比md5更安全

四、多行函数:

多行数据,运算产生一个结果;

多行函数不能与其他字段一起查询;
多行函数会忽略null值
1、count() 行数
2、sum() 求和
3、avg() 求平均
4、max() 最大值
5、min() 最小值

数据行数:count(*)

数据量非常大时,count(*)效率很低
可以把行数另存在一张表中,定期更新

五、分页查询(limit)

1、没有标准sql,不同数据库提供不同的分页查询方式

MySQL 提供一个limit语法

2、 limit 5 --前5行

limit 0,5 --0行(第一行)开始的5行
limit 5,5 --第六行开始的5条
limit 11,5 --第十一行开始的5条

3、在数据量非常大时

limit a,b 效率非常低
limit a 效率较高

4、 程序中计算起始行:(页数-1)*每页行数

最大页数:(count(*)/每页行数)再向上取整

六、group by子句、having子句

1、group by子句

多行函数的分组计算
只在求多行函数运算时,使用group by

2、having子句

对多行函数计算结果进行过滤
3、where和having区别:
where 过滤普通条件
having 过滤多行函数结果
4、having必须前面group by后面

七、select 查询语句的结构

select

distinct --去除重复
from
where
group by --分组求多行函数
having --多行函数过滤
order by

八、子查询:在查询语句中,嵌套的查询

1、where 后面的子查询
2、from 后面的子查询
3、select 查询列表中的子查询

4、条件子查询

子查询的查询结果,作为另一个查询的过滤条件
(1)单值子查询:
=
> >=
< =<
(2)多值子查询
in
> all 比最大的大
> any 比最小的大
(3)多列子查询
(a,b) =
(a,b) in
未完待续......

转载于:https://www.cnblogs.com/guzidi/p/7828651.html

你可能感兴趣的文章
Noi2011 : 智能车比赛
查看>>
设置tomcat 编译文件位置【转】
查看>>
NOI2010 : 超级钢琴
查看>>
sine曲线向前运动
查看>>
ios的@property属性和@synthesize属性(转)
查看>>
四种常见的 POST 提交数据方式
查看>>
编写一个C语言函数,要求输入一个url,输出该url是首页、目录页或者其他url
查看>>
ubuntu 14.04 chromium,firefox 怎样正确安装Adobe flash player
查看>>
Linux makefile 教程 很具体,且易懂
查看>>
linux用dd测试磁盘速度
查看>>
八大排序算法总结
查看>>
Fibre Channel和Fiber Channel
查看>>
两年前实习时的文档——Platform学习总结
查看>>
Performance Tuning MySQL
查看>>
【WP8】让TextBox文本支持滑动(Scroll)
查看>>
在IIS上创建FTP服务
查看>>
Orchard之在前台显式一个属于自己的列表
查看>>
openfire文件夹
查看>>
Eclipse下快速打开本地文件的插件easy explore
查看>>
uva216 Getting in Line
查看>>