MySQL排序查询,常见函数,分组查询,连接查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL排序查询,常见函数,分组查询,连接查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4348字,纯文字阅读大概需要7分钟。
内容图文
MySQL排序查询,常见函数,分组查询,连接查询
2020-12-1
排序查询
常见函数
分组查询
连接查询
排序查询
1. 语法
select 查询列表
from 表
where 筛选条件
order by 排序列表 【asc升序/desc降序】
2. 特点
- asc :升序,如果不写默认升序
desc:降序 - 排序列表 支持 单个字段、多个字段、函数、表达式、别名
- order by的位置一般放在查询语句的最后(除limit语句之外)
常见函数
1. 概述
功能:类似于java中的方法
好处:提高重用性和隐藏实现细节
调用:select 函数名(实参列表);
2. 单行函数
- 字符函数
concat
:连接
substr
:截取子串
upper
:变大写
lowe
r:变小写
replace
:替换
length
:获取字节长度
trim
:去前后空格
lpad
:左填充
rpad
:右填充
instr
:获取子串第一次出现的索引 - 数学函数
ceil
:向上取整
round
:四舍五入
mod
:取模
floor
:向下取整
truncate
:截断
rand
:获取随机数,返回0-1之间的小数 - 日期函数
now
:返回当前日期+时间
curdate
:返回当前日期
curtime
:返回当前时间
year
:返回年
month
:返回月
monthname
:以英文形式返回月
day
:返回日
hour
:返回小时
minute
:返回分钟
second
:返回秒
date_format
:将日期转换成字符
str_to_date
:将字符转换成日期
datediff
:返回两个日期相差的天数 - 其他函数
version
: 当前数据库服务器的版本
database
: 当前打开的数据库
user
: 当前用户
password('字符')
:返回该字符的密码形式
md5('字符')
: 返回该字符的md5加密形式 - 流程控制函数
if(条件表达式,表达式1,表达式2)
:如果条件表达式成立,返回表达式1,否则返回表达式2
#case 情况1
#--------------------------
case 变量或表达式或字段
when 常量1 then 值1
when 常量2 then 值2
...
else 值n
end
#--------------------------
#case 情况2
#--------------------------
case
when 条件1 then 值1
when 条件2 then 值2
...
else 值n
end
3. 分组函数
- 分类
max
: 最大值
min
: 最小值
sum
: 和
avg
: 平均值
count
: 计算个数 - 特点
①语法
②支持的类型select max(字段) from 表名;
sum
和avg
一般用于处理数值型
max
、min
、count
可以处理任何数据类型
③以上分组函数都忽略null
④都可以搭配distinct
使用,实现去重的统计
⑤count函数select sum(distinct 字段) from 表;
count(字段)
:统计该字段非空值的个数
count(*)
:统计结果集的行数
效率上:
MyISAM存储引擎,count(*)
最高
InnoDB存储引擎,count(*)
和count(1)
效率高于count(字段)
⑥ 和分组函数一同查询的字段,要求是group by
后出现的字段
分组查询
1. 语法
select 分组函数,分组后的字段
from 表
【where 筛选条件】
group by 分组的字段
【having 分组后的筛选】
【order by 排序列表】
(【】
)表示可选
2. 特点
使用关键字 | 筛选的表 | 位置 | |
---|---|---|---|
分组前筛选 | where | 原始表 | group by的前面 |
分组后筛选 | having | 分组后的结果 | group by 的后面 |
连接查询
1. 含义
当查询中涉及到了多个表的字段,需要使用多表连接
select 字段1,字段2
from 表1,表2,...;
笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接
如何解决:添加有效的连接条件
2. 分类
按年代分类:
sql92:
等值
非等值
自连接
也支持一部分外连接(用于oracle、sqlserver,mysql不支持)
sql99【推荐使用】
- 内连接
等值
非等值
自连接
- 外连接
左外
右外
全外(mysql不支持)
- 交叉连接
3. SQL92语法
1. 等值连接
语法:
select 查询列表
from 表1 别名,表2 别名
where 表1.key=表2.key
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
特点:
① 一般为表起别名
②多表的顺序可以调换
③n表连接至少需要n-1个连接条件
④等值连接的结果是多表的交集部分
2. 非等值连接
语法:
select 查询列表
from 表1 别名,表2 别名
where 非等值的连接条件
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
3. 自连接
语法:
select 查询列表
from 表 别名1,表 别名2
where 等值的连接条件
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
4. SQL99语法
1.内连接
语法:
select 查询列表
from 表1 别名
【inner】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;
特点:
①表的顺序可以调换
②内连接的结果=多表的交集
③n表连接至少需要n-1个连接条件
分类:
等值连接
非等值连接
自连接
2.外连接
语法:
select 查询列表
from 表1 别名
left|right|full【outer】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;
特点:
①查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
②left join 左边的就是主表,right join 右边的就是主表
full join 两边都是主表
③一般用于查询除了交集部分的剩余的不匹配的行
3.交叉连接
语法:
select 查询列表
from 表1 别名
cross join 表2 别名;
特点:
类似于笛卡尔乘积
内容总结
以上是互联网集市为您收集整理的MySQL排序查询,常见函数,分组查询,连接查询全部内容,希望文章能够帮你解决MySQL排序查询,常见函数,分组查询,连接查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。