排序
- 语法
SELECT 查询列表 FROM 表 WHERE 筛选条件 ORDER BY排序列表【ASC/DESC】
- 特点
1》.asc:升序,如果不写表示默认升序;
desc:降序
2》.排序列表支持 单字段 多字段 函数 表达式 别名
3》.order by一般放在查询语句最后(除limit之外)
常见函数
-
概述
功能:提高重用性和隐藏实现细节
调用:select 函数名(实参列表); -
单行函数
①字符函数:
concat:连接
substr:截取子串
length:获取字节长度
instr:获取子串第一次出现的位置
replace:替换
upper:转大写
lower:转小写
trim:去除字串前后指定字符
lpap:左填充
rapap:右填充
②数学函数
mod:取余
round:四舍五入
ceil:向上取整
floor:向下取整
rand:随机数
truncate:截断
③日期函数
now:获取系统日期及时间
curdate:日期
curtime:时间
year:年
month:月
day:日
hour:时
minute:分
second:秒
yearname:年的英文名
str_to_date:字符转化为日期
date_format:日期转化为字符
datediff:两个日期相差天数
④其他函数
version:查看版本号
user:查看用户
database:查看库名
password:以加密形式显示字符
md5:以md5加密形式显示字符
⑤流程控制函数
if:
if(条件,语句1,语句2):和双面运算符类似
case:
①case 表达式
when 常量1 then 语句1
when 常量2 then 语句2
…
else 语句n
end
②case
when 条件1 then 语句1
when 条件2 then 语句2
…
else 语句n
end -
分组函数
分类: max 最大值
min 最小值
avg平均值
sum 总和
count 总个数
特点:①sum avg一般适用于数值型
②都忽略null值
③可以与distinct连用去除重复值
④一般用count(*)统计行数
⑤和分组函数一同查询字段,要求是group by后出现的字段 -
分组查询
语法:select 分组函数,分组后的字段 from 表 [where 筛选条件] group by分组的字段 [having 分组后的筛选] [order by排序的字段asc/desc ]
特点
使用关键字 | 筛选的表 | 位置 | |
---|---|---|---|
分组前筛选 | where | 原始表 | group by前边 |
分组后筛选 | having | 分组后的虚拟表 | group by后边 |
- 连接查询:又称为多表查询
分类:
内连接:包括等值连接 非等值连接 自然连接
外连接 包括右外连接 左外连接 全外连接(mysql不支持)
交叉连接
语法
等值连接
selcet 查询列表 from 表1 as 别名 ,表2 as 别名...... where 表1.key=表2.key...... [and 筛选条件] [group by....] [having 分组后筛选] [order by...]
非等值连接
select 查询列表 from 表1 as别名,表2as别名...... where 表1.key非等值连接条件2.key....... [and 筛选条件] [group by....] [having 分组后筛选] [order by...]
自连接
select 查询列表 from 表as别名1,表as别名2...... where 别名1.key=别名2.key..... [and 筛选条件] [group by....] [having 分组后筛选] [order by...]