书写顺序
Posted pangqian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了书写顺序相关的知识,希望对你有一定的参考价值。
查询模板
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";#修改为严格模式
以上是关于书写顺序的主要内容,如果未能解决你的问题,请参考以下文章