select、from、where、group by、having、order by、limit组合用法

一、关键词意义

【1】select 用来指定查询哪些列,可以使用聚合函数。

【2】from 用来指定查询哪张表。

【3】where用来指定过滤条件,针对原表,那么条件中的列名只能是是原表的列名,不可以是别名或者使用聚合函数。

【4】group by 用来对结果集进行分组,条件中的列可以使用原名,也可以使用别名。

【5】having 用来指定对分组后的数据进行再次过滤的条件,条件中的列可以使用原名,也可以使用别名。

【6】order by 对结果集中某一列进行排序,默认降序。有 asc 升序,desc 降序两种选择。条件中的列可以使用原名,也可以使用别名。

【7】limit 用来取出结果集中的某些行.limit m,n取出的是从第m+1行开始一共n行的数据。limit n相当于limit 0,n

oracle中返回前10条数据不用limit,而是用where rownum<=10;


二、sql语句编写顺序

select .. from ..是必须的,其他的关键词可选。

那么他们的组合顺序为

select ... from ..  where ... group by ... having ... order by ... limit ...


三、sql语句执行顺序

【1】from 用于指定待查询的表

【2】where 由where后面的提交过滤表中的数据,形成结果集1

【3】group by 由后面的列对结果集1中的数据进行分组,形成结果集2

【4】having 对结果集2再次进行过滤,形成结果集3

【5】order by 对结果集3进行排序操作,形成结果集4

【6】limit 取结果集4中的某些行,返回最终结果集


四、一个简单的例子

(1)数据库建表语句

CREATE TABLE `t_score` (`sc_id` int(11) NOT NULL auto_increment COMMENT '自增序号',`sc_student_id` varchar(20) NOT NULL COMMENT '学号',`sc_student_name` varchar(20) NOT NULL COMMENT '姓名',`sc_course_name` varchar(50) NOT NULL COMMENT '课程名称',`sc_course_credit` double(3,1) NOT NULL COMMENT '课程学分',`sc_course_nature` varchar(10) NOT NULL COMMENT '课程性质',`sc_score` varchar(10) NOT NULL COMMENT '总评成绩',`sc_remark` varchar(20) default NULL COMMENT '备注',`sc_gpa` double(3,1) default NULL COMMENT '绩点',`sc_make_up_score` varchar(10) default NULL COMMENT '补考成绩',`sc_rebuild_score` varchar(10) default NULL COMMENT '重修成绩',`sc_class_name` varchar(20) NOT NULL COMMENT '班级',`sc_class_belong` varchar(10) default NULL COMMENT '课程归属',`sc_rebuild_mark` int(11) default NULL COMMENT '重修标记',`sc_select_course_id` varchar(50) NOT NULL COMMENT '选课课号',`sc_edu_year` varchar(12) NOT NULL COMMENT '学年',`sc_edu_term` varchar(2) NOT NULL COMMENT '学期',`sc_academy_name` varchar(20) NOT NULL COMMENT '学生所属学院',PRIMARY KEY  (`sc_student_id`,`sc_select_course_id`),KEY `sc_id` (`sc_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(2)数据截图,数据量还是比较大的,有15万条数据。

(3)查询嵌入式1511这个班级中,平均绩点高于2.6前三位同学以及他们的平均绩点

select sc_student_name as name,avg(sc_course_credit) as avg_credit from t_score where sc_class_name='嵌入式1511' group by name having avg_credit>2.6 order by avg_credit desc limit 0,3;

查询结果:


五、几点注意

【1】count

count(*)会返回结果集中的所有行数,即使有一行全为null,也会参与行数计算。

count(列名)当列名出现null值时,不会参与行数计算。

【2】select与group by的一个原则

当select后出现的列中没有使用到聚合函数时,那么尽量出现在group by中。否则的话,查询会变得没有意义。比如查询课程分类下的选课人数

select 课程类别 ,sum(人数) from 选课表 where 班级='嵌入式1511' group by 课程类别;

【3】待补充

【数据库】select、from、where、group by、having、order by、limit的组合用法相关推荐

  1. 查询语句中select from where group by having order by的执行顺序

    查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为  select--from--whe ...

  2. select的5中子句where,group by, havaing, order by, limit的使用顺序及实例

    -- 语法: SELECT select_list FROM table_name [ WHERE search_condition ] [ GROUP BY group_by_expression ...

  3. oracle查询语句中select from where group by having order by的解释与应用

    oracle查询语句中select from where group by having order by的解释与应用 查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from- ...

  4. 查询limit_MySQL查询语句(where,group by,having,order by,limit)

    Ⅰ where语句 -- 条件语句 where -- 条件判断 查询id值大于3,且小于5的记录 -- 字段>3 and 字段< 5; mysql> select * from wo ...

  5. mysql分页查询limit_MySQL查询语句(where,group by,having,order by,limit)

    Ⅰ where语句 -- 条件语句 where -- 条件判断 查询id值大于3,且小于5的记录 -- 字段>3 and 字段< 5; mysql 查询id值大于等于3,且小于等于5的记录 ...

  6. mysql数据库select语句用法_mysql学习笔记之完整的select语句用法实例详解

    本文实例讲述了mysql学习笔记之完整的select语句用法.分享给大家供大家参考,具体如下: 本文内容: 完整语法 去重选项 字段别名 数据源 where group by having order ...

  7. SQL数据分析:sqlzoo官网学习select,where,order by,limit,聚合函数,having,常用函数,窗口函数,表链接,子查询

    SQL数据分析: 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金 ...

  8. SQL中的Where,Group By,Order By和Having的用法/区别

    GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想 你用了GROUP BY 按  ITEM.ITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改如何 ...

  9. mysql “group by ”与order by的研究--分类中最新的内容

    这两天让一个数据查询难了.主要是对group by 理解的不够深入.才出现这样的情况 这种需求,我想很多人都遇到过.下面是我模拟我的内容表 我现在需要取出每个分类中最新的内容 select * fro ...

最新文章

  1. ACL 2021 | 腾讯AI Lab、港中文杰出论文:用单语记忆实现高性能NMT
  2. [译] 解密 Airbnb 的数据科学部门如何构建知识仓库
  3. 安装完python后怎么使用-安装anaconda后该怎么使用
  4. 刷光借呗额度之后用户突然去世,支付宝会怎么做?
  5. Html5做webapp中界面适配的问题总结
  6. python元组求和_Python 列表和元组 - 学习笔记(持续更新)
  7. zoj 2313 Chinese Girls' Amusement(2-A)
  8. 《编程之美》1.3一摞烙饼的排序
  9. start_kernel之前的调用流程(head.s)
  10. 原根求解算法 NTT算法
  11. python编程方式_python的两种编程方式是什么
  12. python selenium手动输入验证码_Python Selenium Cookie 绕过验证码实现登录
  13. 怎样给word插入页码,点击进来有惊喜
  14. Apache Calcite论文概要
  15. less (三) 一个less 文件引用另一个less文件
  16. 在Visual Studio代码内部调试节点应用
  17. SIEMENS SMART知识网站
  18. 安装AUTOROM、导入ROMs
  19. Matlab画线性规划可行域
  20. 豆瓣读书top250爬取

热门文章

  1. 【C#】关闭 Window 之后,无法设置 Visibility,也无法调用 Show、ShowDialogor 或 WindowInteropHelper.EnsureHandle
  2. MAC 安装及配置maven
  3. Java面经:小米暑期实习+秋招真题分享
  4. 建立一个学生数据库/表
  5. 解密Uber自动驾驶系统,警方披露撞人案细节
  6. [k8s]非集群安装过程-笔记
  7. 白帽子讲web安全之 浏览器安全
  8. oracle导入solr,从Oracle数据库导入XML数据时solr dih会变慢
  9. 华擎j3455装服务器系统,华擎J3455M主板u盘重装系统win8教程
  10. maven能帮我们做什么