一.查询语句模板

SELECT [ALL|DISTINCT] <字段1>/<表达式>,<字段2> [AS] <新字段名> FROM <表名> [AS] <别名>/子查询语句 [AS] <别名> [ WHERE <条件> ] [ GROUP BY <字段> [ HAVING <条件> ] ] [ ORDER BY <字段> [ ASC|DESC ] ];
ALL 与 DISTINCT

distinct去除重复的数据
默认为all不去重
AS 别名

AS 别名
表达式

字段类型是数字类型的字段可以进行加减乘除四则运算
二.条件查询

比较谓词 =, >, <, >=, <=, !=, <>, !>, !<; 字段 = 值; not not 字段 = 值 范围谓词 BETWEEN AND, NOT BETWEEN AND 字段 (not) between 值1 and 值2 集合谓词 IN, NOT IN 字段 (not) in (值1,值2,值3) 字符匹配 LIKE, NOT LIKE %:匹配多个任意字符 _:匹配一个任意字符 字段 (not) like “字符串” 空值谓词 IS NULL, IS NOT NULL 逻辑谓词 AND, OR, NOT 条件1 and 条件2 regexp正则 用于条件判断,进行字符串匹配 示例:字段 regexp '正则表达式' #select * from emp where name regexp '^j.*(n|y)$';
用于条件筛选
三.分组查询
GROUP BY 与 聚合函数
- GROUP BY 对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常配合聚合函数使用
- GROUP BY 分组之后进行条件判断只能使用HAVING
- 聚集函数
- max min avg sum count
- 示例:max (字段)
- max min avg sum count
HAVING短语
- 输出满足指定条件的组
- 示例 having 条件
ps:HAVING语句一般配合作用于分组函数之后
四.ORDER BY 排序CONCAT与limit
ORDER BY 排序

对查询结果表按指定列值的升序(asc)或降序(desc)排序,默认升序(sc)
示例:order by 字段 desc
CONCAT与GROUP_CONCAT

concat在未使用group by 的情况下来进行数据拼接
示例:select concat(字段1,’字符串‘,’字段2‘)
concat在使用group by 后来进行数据拼接
效果与concat相同
limit

用于限制条数,写在语句最后。 limit只有一个参数时,参数表示展示的条数 limit有两个参数时候,第一个参数表示起始位置,第二个参数表示起始位置之后的展示条数 select * from emp limit 5,5;
五.多表查询
- 表查询分类
- 联表查询
- 子查询
- 内连接(inner join)
- 取两张表有对应关系的记录
- select 表1 inner join 表2 on 表1.字段=表2.字段
- 左连接(left join)
- 在内连接的基础上保留左表没有对应关系的记录
- select 表1 left join 表2 on 表1.字段=表2.字段
- 右连接(right join)
- 在内连接的基础上,保留右表没有对应关系的记录
- select 表1 right join 表2 on 表1.字段=表2.字段
- 全连接(union)
- 在内连接的基础上保留左、右面表没有对应关系的的记录(就是左连接加右连接去除重复记录)
- select 表1 left join 表2 on 表1.字段1=表2.字段1 union select 表1 right join 表2 on 表1.字段=表2.字段
- 子查询
- 将一张表的查询结果作为另外一个sql语句的查询条件
六.严格模式
使用情况:Mysql使用分组后获取其他字段信息不报错
设置方式
- show variables like '%mode%'; #模糊匹配 查看sql_mode的值
- set session 当前窗口有效
- set global 全局有效
- set global sql_mode="strict_trans_tables,only_full_group_by";#修改为严格模式