数据库的高级查询
2017-12-27 09:24
399 查看
转载自:http://blog.csdn.net/qq_35246620/article/details/74938609
数据的高级操作
第 1 点:分组统计的结果或者说统计函数只有
执行如下 SQL 语句,进行测试:
2
3
如上图所示,显然
第 2 点:
执行如下 SQL 语句,进行测试:
2
3
如上图所示,显然咱们的结论得到了验证。究其原因,
基本语法:
其中,
执行如下 SQL 语句,进行测试:
2
此外,咱们可以进行「多字段排序」,即先根据某个字段进行排序,然后在排序后的结果中,再根据某个字段进行排序。
执行如下 SQL 语句,进行测试:
2
基本语法:
其中,
第 1 种:只用来限制长度(数据量)
执行如下 SQL 语句,进行测试:
2
3
4
第 2 种:限制起始值,限制长度(数据量)
执行如下 SQL 语句,进行测试:
2
3
4
第 3 种:主要用来实现数据的分页,目的是为用户节省时间,提高服务器的相应效率,减少资源的浪费
大致设计:
对于用户来讲,可以通过点击页码按钮,如
对于服务器来讲,可以根据用户选择的页码来获取不同的数据。
其中,
如果大家感兴趣的话,可以结合
温馨提示:符号
数据的高级操作
查询数据(下)
having
子句
having字句:与
where子句一样,都是进行条件判断的,但是
where是针对磁盘数据进行判断,数据进入内存之后,会进行分组操作,分组结果就需要
having来处理。思考可知,
having能做
where能做的几乎所有事情,但是
where却不能做
having能做的很多事情。
第 1 点:分组统计的结果或者说统计函数只有
having能够使用
执行如下 SQL 语句,进行测试:
-- 求出表 student 中所有班级人数大于等于 2 的班级 select grade,count(*) from student group by grade having count(*) >= 2; select grade,count(*) from student where count(*) >= 2 group by grade;1
2
3
如上图所示,显然
having子句可以对统计函数得到的结果进行筛选,但是
where却不能。
第 2 点:
having能够使用字段别名,
where则不能
执行如下 SQL 语句,进行测试:
-- 求出表 student 中所有班级人数大于等于 2 的班级 select grade,count(*) as total from student group by grade having total >= 2; select grade,count(*) as total from student where total >= 2 group by grade;1
2
3
如上图所示,显然咱们的结论得到了验证。究其原因,
where是从磁盘读取数据,而磁盘中数据的名字只能是字段名,别名是数据(字段)进入到内存后才产生的。值得注意的是,在上述 SQL 语句中咱们使用了字段别名,这在无意中就优化了 SQL 并提高了效率,因为少了一次统计函数的计算。
order by
子句
order by子句:根据某个字段进行升序或者降序排序,依赖校对集。
基本语法:
order by + [asc/desc];
其中,
asc为升序,为默认值;
desc为降序。
执行如下 SQL 语句,进行测试:
-- 将表 student 中的数据按年龄 age 进行排序 select * from student order by age;1
2
此外,咱们可以进行「多字段排序」,即先根据某个字段进行排序,然后在排序后的结果中,再根据某个字段进行排序。
执行如下 SQL 语句,进行测试:
-- 将表 student 中的数据先按年龄 age 升序排序,再按班级 grade 降序排序 select * from student order by age,grade desc;1
2
limit
子句
limit子句:是一种限制结果的语句,通常来限制结果的数量。
基本语法:
limit + [offset] + length;
其中,
offset为起始值;
length为长度。
第 1 种:只用来限制长度(数据量)
执行如下 SQL 语句,进行测试:
-- 查询表 student 中的全部记录 select * from student; -- 查询表 student 中的 3 条记录 select * from student limit 3;1
2
3
4
第 2 种:限制起始值,限制长度(数据量)
执行如下 SQL 语句,进行测试:
-- 查询表 student 中的记录 select * from student limit 0,2; -- 查询表 student 中的记录 select * from student limit 2,2;1
2
3
4
第 3 种:主要用来实现数据的分页,目的是为用户节省时间,提高服务器的相应效率,减少资源的浪费
大致设计:
对于用户来讲,可以通过点击页码按钮,如
1、
2、
3等来进行选择;
对于服务器来讲,可以根据用户选择的页码来获取不同的数据。
其中,
length:表示每页的数据量,基本不变;
offset:表示每页的起始值,公式为
offset=(页码-1)*length.
如果大家感兴趣的话,可以结合
PHP或者其他语言进行测试。
温馨提示:符号
[]括起来的内容,表示可选项;符号
+,则表示连接的意思。
相关文章推荐
- 数据库的高级查询exists,数据库的三大范式,视图
- Laravel框架学习(数据库高级查询)
- SQL Server 数据库设计和高级查询
- MongoDB 数据库操作(三)-高级查询
- 2014.9.9数据库高级查询
- 高级查询和连接数据库
- 第五部分:高级查询 第六部分:常规索引管理 第七部分:全文索引管理 第八部分:数据库的备份和恢复 第九部分:数据库的安全管理
- 数据库---高级查询
- Sqlserver 数据库高级查询和设计
- 数据库部分---高级查询;
- 数据库——基础(数据库操作,表格操作)——增加高级查询
- 反射的高级运用:通过一个实体类,以及查询到数据库的DataReader,进行绑定
- MySQL 数据库 高级查询
- 数据库查询--高级议题
- 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
- JAVA高级【4.7】《Java核心技术2》数据库-简单分页查询
- 数据库高级查询
- 数据库高级查询
- 15-07-17 数据库--高级查询
- 数据库基本查询与高级查询