1.where 子句
后面可以跟
and or
like
> < <= >= != <>
between and
is null is not null
in()
2.模糊查询like
%:表示0个,一个,多个
_:仅代替一个字符
3.order by 排序,写在where子句后面
asc :升序,默认
desc :降序
如果order by 后面跟着两个属性,那么先根据第一个属性进行排序,第一个排序相同的,再根据第二个属性进行排序
4.分页 limit
mysql有limit关键字,oracle没有,要手动写.
limit Num1,num2:
num1:从第几条数据开始显示
num2:显示多少条数据
eg:一页显示八条,第三页怎么显示: limit 16,8 、
5.常用函数
-concat 字符串连接
-日期函数
-now()
-curdate()
-date():获取表达式日期部分
-time():获取表达式时间部分
6.聚合函数
-sum(列): 求总和
-avg(列):求平均值
-count(*/1):求数据个数
-min():最小值
-max():最大值
select 查询语句的执行顺序
1.from关键字:先找数据源
2.where : 根据条件进行数据筛选,确定返回的条目数量
3.group by : 开始分组,将数据划分成多个组
4.聚合函数运算:因此如果把聚合函数放在where子句中,就会报错
5.having子句筛选分组条件:因此聚合函数可以放在having子句中
6.计算所有表达式:
7.确定select后面的字段:
8.使用order by 进行排序展示
group by 使用 having子句过滤条件
在sql语句中添加having子句的原因,是因为where关键字无法与聚合函数一起使用
where条件用于过滤行数,having条件用于过滤分组数量
(where、group by 、having之间的执行顺序)执行顺序:首先执行where,然后执行group by ,根据一个或者多个列进行分组,之后执行having,
对分组以后的数据再次过滤,最后执行order by .
总结:having子句经常和聚合函数一起使用,如果没有使用到聚合函数,要注意是否可以写在where中,如果可以写在where中,那么优先使用where先过滤。免得第三第四部做无效运算
mysql子查询
1.子查询是指,在DML语句中,嵌套了另外一个DQL语句
2.某些DDL语句中也可以使用嵌套,例如create
3.子查询语句,称为内部查询,而包含子查询的查询语句,称为外部查询
4.常用的子查询会出现两种
-外部查询的where子句使用子查询
-子查询在from后面,用子查询的结果充当一张表
5.子查询可以在表达式的任何地方出现,但是必须在括号中关闭
6.子查询可以嵌套在另外一个子查询中
表连接:
1.笛卡儿积
当多表相连时,如果没有写关联条件,返回的结果就是这几张表条目数的乘积,这个乘积就叫过笛卡儿积
多数情况下,笛卡儿积是毫无意义且浪费资源的。要尽量避免
https://blog.csdn.net/seanb/article/details/51594234