书写顺序

查询模板
SELECT [ALL|DISTINCT] <字段1>/<表达式>,<字段2> [AS] <新字段名>
FROM <表名> [AS] <别名>/子查询语句 [AS] <别名>
[ WHERE <条件> ]
[ GROUP BY <字段> [ HAVING <条件> ] ]
[ ORDER BY <字段> [ ASC|DESC ] ];
[ LIMIT [参数1,参数2] ] 
ALL 与 DISTINCT
distinct去除重复的数据
默认为all不去重
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 '正则表达式' 
GROUP BY 与 聚合函数
GROUP BY 对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常配合聚合函数使用
GROUP BY 分组之后进行条件判断只能使用HAVING
聚集函数
max min avg sum count
示例:max (字段)
HAVING短语
输出满足指定条件的组
示例 having 条件
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 * from 表1 inner join 表2 on 表1.字段=表2.字段
左连接(left join)
在内连接的基础上保留左表没有对应关系的记录
select * from表1 left join 表2 on 表1.字段=表2.字段
右连接(right join)
在内连接的基础上,保留右表没有对应关系的记录
select * from 表1 right join 表2 on 表1.字段=表2.字段
全连接(union)
在内连接的基础上保留左、右面表没有对应关系的的记录(就是左连接加右连接去除重复记录)
select * from 表1 left join 表2 on 表1.字段1=表2.字段1 union select * from 表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";#修改为严格模式
posted @ 2019-08-22 21:29  Aomur  阅读(151)  评论(0编辑  收藏  举报