目录
一、基础查询
1、语法:SELECT 要查询的东西 【FROM 表名】;
2、特点:
(1)通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
(2)要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数
二、条件查询
1、根据条件过滤原始表的数据,查询到想要的数据
2、语法:select 要查询的东西 from 表 where 条件 ;
3、分类:
(1)条件表达式
示例:salary>10000
条件运算符:
> < >= <= = != <>
(2)逻辑表达式
示例:salary>10000 && salary<20000
逻辑运算符:and(&&):两个条件如果同时成立,结果为true,否则为false
or(||):两个条件只要有一个成立,结果为true,否则为false
not(!):如果条件成立,则not后为false,否则为true
(3)模糊查询
关键词:like between and in is null/ is not null
Δ1、like
一般和通配符搭配使用
% 任意多个字符,包含0个字符
_ 任意单个字符
Δ2、between and
两个临界值不要调换顺序
Δ3、in
含义:判断某字段的值是否属于in列表中的某一项
特点:①使用in提高语句简洁度
②in列表的值类型必须一致或兼容
③in列表中不支持通配符: % _等
Δ4、is null/ is not null
=或<>不能用于判断null值
is null或is not null 可以判断null值
三、排序查询
1、语法:
select 要查询的东西 from 表 【where 条件】 order by 排序的东西 【asc/desc】;
2、特点:
(1)asc代表的是升序,可以省略 desc代表的是降序
(2)order by子句可以支持 单个字段、别名、表达式、函数、多个字段
(3)order by子句在查询语句的最后面,除了limit子句
四、常见函数
select 函数名(实参列表) 【from 表】;
1、单行函数
(1)字符函数
concat 拼接 substr 截取子串 upper 转换成大写 lower 转换成小写 trim 去前后指定的空格和字符 ltrim 去左边空格 rtrim 去右边空格 replace 替换 lpad 左填充 rpad 右填充 instr 返回子串第一次出现的索引 length 获取字节个数 | |
(2)数学函数
round 四舍五入 rand 随机数 floor 向下取整 ceil 向上取整 mod 取余 truncate 截断 | |
(3)日期函数
now当前系统日期+时间
curdate当前系统日期
curtime当前系统时间
str_to_date 将字符转换成日期
date_format 将日期转换成字符 | |
(4)流程控制函数
case - end 就相当于一个表达式
(5)其他函数
SELECT VERSION();
SELECT DATABASE();
SELECT USER();
2、分组函数
功能:用作统计使用,又称为聚合函数 / 统计函数 / 组函数
分类:
sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数
特点:
1、sum、avg一般用于处理数值型
max、min、count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和 distinct 搭配实现去重的运算
4、count函数的单独介绍
一般使用count(*)用作统计行数
5、和分组函数一同查询的字段要求是group by后的字段
五、分组查询
语法: select 查询列表 from 表 【where 筛选条件】 group by 分组的字段 【order by 排序的字段】;
特点:
1、和分组函数一同查询的字段必须是group by后出现的字段
2、筛选分为两类:分组前筛选和分组后筛选
| 针对的表 | 位置 | 连接的关键字 |
分组前筛选 | 原始表 | group by前 | where |
分组后筛选 | group by后的结果集 | group by后 | having |
问题1:分组函数做筛选能不能放在where后面
答:不能
问题2:where——group by——having
一般来讲,能用分组前筛选的,尽量使用分组前筛选,提高效率
3、分组可以按单个字段也可以按多个字段
4、可以搭配着排序使用
六、多表连接查询
七、子查询