查询基础
查询列表可以是:字段名,常量,表达式,函数
查询列表使用 `符号可以避免关键字命名冲突,不用也可
查询常量值结果为直接显示常量值
查询表达式可以理解为进行运算
逻辑运算符:<,>,<>,!=,<=>
模糊查询:like关键字:_占一位,%占多位
between and
in
is null
查询函数:
单行函数:即返回值为单行
字符函数:
length();返回字节数(注意utf-8为3字节,gbk为2字节)
upper();转为大写
lower();转为小写
concat();拼接连个字符串
substr();截取字符串,第一个参数为需要操作的字符串,第二个参数为开始截取的位置,第三个参数为截取长度
instr();返回子字符串第一次出现的位置
replace();替换字符串
trim();去前后空格,也可去指定的字符,但是只能去前后的trim('字符' form '操作字符')
lpad();左填充
rpad();右填充
数学函数:
round();四舍五入,round(m,n)即小数点后保留n位
ceil();向上取整
floor();向下取整
truncat();截断
mod();取余
日期函数:
now();返回当前时间,带日期时间
curdate();返回当前日期,不包含时间
curtime();返回当前时间,不包含日期
year(),month(),day(),hour,minute(),seconds()
str_to_date();将日期格式的字符串转为指定格式的日期
date_format();将日期转换位字符串
其它函数:
version();版本
database();数据库
user();用户
流程控制函数:
if(条件表达式,'值','值')
case 条件表达式
when 常量 then 语句;
when 常量 then 语句
...
else 语句;
end
case
when 条件1 then 要显示的值或语句;
when 条件2 then 要显示的值或语句;
else 要显示的值或语句
end
分组函数总结:(聚合函数)
avg(),sum(),count(*),max(),min()均忽略null值
搭配distinct实现去从。sum(distinct 字段)
group by后的字段是分组关键
查询语句总结:
select 查询字段
from 表名
where 筛选条件
group by 分组字段
having 分组筛选条件
order by 排序条件
limit (page-1)*size,size
注意事项:
1.有having语句必须含有group语句
2.desc降序,asc升序
3.筛选条件中:
等值:=,<=>(检测空值)
非等值:between and
范围:in,not in
4.limit有的话必须出现在最后,第一个参数为起始,默认为0,第二个参数为个数,即从起始位置后面的多少个
多表查询时的连接
内连接(inner join)
等值连接(=)
非等值连接(between and)
自连接(本表和本表进行连接)
查询两个表的交叉部分,即交集
外连接
左外 (left out join)
右外(right out join)
全外(full out join)
分为主表和从表,必须含有主表的所有数据,交叉部分按内连接处理,没有的部分设置从表为null,通常用来查询补集
交叉连接
cross join,笛卡尔集
子查询通俗总结:
可嵌套在查询字段,表名,筛选条件中
嵌套在查询字段时:子查询结果应该为标量子查询,通俗的数就是查询结果单行单列
嵌套在from后时:子查询结果应为一张表的形式
嵌套在筛选条件时:子查询结果可为单行子查询也可为表的形式
联合查询:Union
将多个查询条件通过union划分为多个查询语句,最后返回一个结果集