上一篇记录了我对数据库基础学习的一些笔记,因为查询是数据库中很重要的一部分,所以单独列出来作为一篇,很多大型上线项目的数据库读写比例都在10以上,由此可见查询的重要性,查询也是数据库中最难的部分,难在优化。
一、查询:
1、比较运算符:大于:select字段 from 表名where 字段>值;
小于:select 字段 from 表名where 字段<值;
等于:select 字段 from 表名where 字段=值;
不等于:select 字段 from 表名where 字段 <>(!=)值;
逻辑运算符:并:select 字段 from 表名where 条件1 and 条件2;
或:select 字段 from 表名where 条件1 or 条件2;
取反:select 字段 from 表名where not 条件;
模糊查询:like:select 字段 from 表名where 字段 like ‘%值’;(%表示任意多个字符,包括0个)
Select 字段 where 字段 like (值);(表示任意一个字符)
范围查询:select 字段 where 字段 (not)in (范围);
Select 字段where 字段 (not)between ..and;(左右值都包含)
空判断:select from 表名 where 字段 is null;(null区分大小写,不等同于‘’空字符串)
聚合函数:统计:select count(字段)from 表名 where 条件;(满足条件的字段总数)
最大值:select max(字段)from 表名;(求字段最大值)
最小值:select min(字段) from 表名;(求字段最小值)
平均值:select avg(字段) from 表名;(求字段的平均值)
求和:select sum(字段) from 表名;(求字段之和)
分组:一般配合聚合函数使用,分组之后用having对结果集进行操作
Select avg(年龄)from 表名 group by 性别;查询年龄并通过性别分组
2、 排序:order by 升序(从小到大):select 字段 from表名 order by 字段(esc);
降序(从大到小):select 字段from 表名 order by 字段 desc;
Order by后面可添加多个字段,按字段先后顺序排序
3、查询结果分页:limit关键字 select 字段 from 表名 limit开始位置(从第0条开始可以省略),显示几条记录;
查询第n页,每页m条数据,select 字段 from 表名 limit (n-1)m,m;
Limit 必须放在查询语句最后使用;
4、 链接查询:内连接:返回两张表的交集:select 字段 from 表1 inner join 表2 on 表1.字段 = 表2.字段;返回两张表某个字段相等的数据,就是重合部分
左连接:返回左表的数据加上右表字段值跟左表相等的数据:
Select 字段 from 表1 left join 表2 on 表1.字段=表2.字段;
返回表1和表2与表1字段相等的结果;
右链接:与左链接相反,实际多用左连接,用到的地方不多
5、 子查询:一个查询语句嵌套另一个:select 字段 from 表名 where id=(select max(字段2)from 表名);查询id最大的记录某个字段的值
6、 自关联:省市区查询表:select * from areas as p inner join areas as c on p.id = c.pid having p.name = ‘山东’;同一张表里有省市区并且有自己的id,查询省份名字为山东并且城市id 等于省份id的城市,相当于同一张表用自己两个不同的字段做内连接