一、基本查询语句

select的基本语法格式如下:

select 属性列表 from 表名和视图列表

[ where 条件表达式1 ]

[ group by 属性名1 [ having 条件表达式2 ] ]

[ order by 属性名2 [ asc | desc ] ]

属性列表参数表示需要查询的字段名;

表名和视图列表参数表示从此处指定的表或者视图中查询数据,表和视图可以有多个;

条件表达式1参数指定查询条件;

属性名1参数指按照该字段的数据进行分组;

条件表达式2参数满足该表达式的数据才能输出;

属性名2参数指按照该字段中的数据进行排序;排序方式由asc和desc这两个参数指出;

asc参数表示升序,这是默认参数,desc表示降序;(升序表示从小到大)

对记录没有指定是asc或者desc,默认情况下是asc;

如果有where子句,就按照“条件表达式1”指定的条件进行查询;如果没有where子句,就查询所有记录;

如果有group by子句,就按照“属性名1”指定的字段进行分组,如果group by后面带having关键字,那么只有

满足“条件表达式2”中知道的条件才能输出。group by子句通常和count()、sum()等聚合函数一起使用;

如果有order by子句,就按照“属性名2”指定的字段进行排序,排序方式由asc和desc两个参数指出;默认情况下是asc;

================================================================================================

分组查询:

group by关键字可以将查询结果按照某个字段或多个字段进行分组,字段的值相等的为一组

语法格式:group by 属性名 [ having 条件表达式 ] [ with rollup ]

属性名参数是指按照该字段的值进行分组;

having 条件表达式 用来限制分组后的显示,满足条件表达式的结果将被显示

with rollup关键字将会在所有记录的最后加上一条记录,该记录是上面所有记录的总和

注意:group by关键字一般和聚合函数一起使用,如果不一起使用,那么查询结果就是字段取值的分组情况;

字段中取值相同的记录为一组,但只显示该组的第一条记录。

=======================================================================================

基础:前提:

(1)单独使用group by关键字来分组

如果单独使用group by关键字,查询结果只显示一个分组的一条记录;

执行语句:

select * from student group by ssex;

(2)group by关键字与group_concat()函数一起使用

group by关键字与group_concat()函数一起使用时,每个分组中指定字段值都显示出来

执行语句:

select sid,group_concat(sname),ssex from student group by ssex;

(3)group by关键字与集合函数一起使用

count()用来统计记录的条数;

sum()用来计算记录的值的总和;

avg()用来计算字段的值的平均值;

max()用来查询字段的最大值;

min()用来查询记录的最小值;

执行语句:

select ssex,count(ssex) from student group by ssex;

(4)group by关键字与having一起使用

如果加上having 条件表达式可以限制输出结果

举例:select sex ,count(sex) from employee group by sex having count(sex)>=3;

注释:"having 条件表达式"与"where 条件表达式"都是用来限制显示的,但是两者起的作用又不相同,

"where 条件表达式"作用于表或者视图,是表和视图的查询条件;

"having 条件表达式"作用于分组后的记录,用于选择满足条件的组;

执行语句:

select ssex ,group_concat(sname),count(ssex) from student group by ssex having count(ssex)>=3;

(5)group by关键字与rollup一起使用

使用rollup时,将会在所有记录的最后加上一条记录,这条记录是上面所有记录的总和;

举例:select sex,concat(name) from employee group by sex with rollup;

select ssex ,group_concat(sname),count(ssex) from student group by ssex with rollup;

(5)按多个字段进行分组

举例:select * from employee group by d_id,sex;

查询结果显示,记录先按照d_id字段进行分组,因为有2条记录的d_id值为1001,所以这2条记录再按照sex字段的值进行分组。

要修改一个sid,不然不好示例:

select * from student;

update student set sid= '' where sname = 'qiandian'

执行语句:

select ssex ,group_concat(sname),count(ssex) from student group by ssex,sid;

(7)、为表和字段取别名

为表和字段取别名

1、语法:表名 表的别名

select * from department d where d.d_id = 1001;

2、语法:属性名 [as] 别名

示例:select d_id as department_id,d_name department_name from department;

数据库中,可以同时为表和字段取别名

示例:select d_id as department_id,d_name department_name,d.functione,d.address from department d where d.d_id = 1001;

执行语句:

select sid id,sname name from student sd;

mysql——单表查询——分组查询——示例的更多相关文章

  1. MySQL单表多次查询和多表联合查询,哪个效率高?

    很多高性能的应用都会对关联查询进行分解. 简单地,可以对每个表进行一次单表查询,然后将结果在应用程序中进行关联.例如,下面这个查询: select * from tag join tag_post o ...

  2. MYSQL 单表一对多查询,将多条记录合并成一条记录

    一.描述: 在MySQL 5.6环境下,应工作需求:将一个表中多条某个相同字段的其他字段合并(不太会表达,有点绕,直接上图) 想要达到的效果: 实现SQL语句: SELECT a.books, GRO ...

  3. python 3 mysql 单表查询

    python 3 mysql 单表查询 1.准备表 company.employee 员工id id int 姓名 emp_name varchar 性别 sex enum 年龄 age int 入职 ...

  4. Mysql 单表查询 子查询 关联查询

    数据准备: ## 学院表create table department( d_id int primary key auto_increment, d_name varchar(20) not nul ...

  5. Mysql 单表查询-排序-分页-group by初识

    Mysql 单表查询-排序-分页-group by初识 对于select 来说, 分组聚合(((group by; aggregation), 排序 (order by** ), 分页查询 (limi ...

  6. MySQL单表多字段模糊查询

    今天工作时遇到一个功能问题:就是输入关键字搜索的字段不只一个字段,比如 我输入: 超天才 ,需要检索出 包含这个关键字的 name . company.job等多个字段.在网上查询了一会就找到了答案. ...

  7. MySQL对数据表进行分组查询

    MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的为一组.基本的语法格式如下: GROUP BY 属性名 [HAVI ...

  8. MySQL对数据表进行分组查询(GROUP BY)

    MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的为一组.基本的语法格式如下: GROUP BY 属性名 [HAVI ...

  9. Mysql 单表查询where初识

    Mysql 单表查询where初识 准备数据 -- 创建测试库 -- drop database if exists student_db; create database student_db ch ...

  10. BBS--功能4:个人站点页面设计(ORM跨表与分组查询)

    查询: 日期归档查询 1 date_format ============date,time,datetime=========== create table t_mul_new(d date,t t ...

随机推荐

  1. css文件分类

    简介 CSS(层叠样式表)是一门历史悠久的标记性语言,同 HTML 一道,被广泛应用于万维网(World Wide Web)中.HTML 主要负责文档结构的定义,CSS 负责文档表现形式或样式的定义. ...

  2. sqlite3创建自增主键,以及清空表使自增列归零

    1.创建自增主键 CREATE TABLE tb_python (ID INTEGER PRIMARY KEY AUTOINCREMENT,TITLE TEXT,URL TEXT); 2.清空表 SQ ...

  3. 未能从程序集“netstandard, Version=2.0.0.0......”中加载类型“...”。

      需要在机器上安装:4.7.1的framework 下载地址: https://www.microsoft.com/zh-CN/download/details.aspx?id=56116 说明:n ...

  4. JavaScript的数组API函数

    ㈠数组转字符串 ⑴String(arr):将arr中的每个元素转为字符串,用逗号分隔     固定套路:对数组拍照:用于鉴别是否数组被修改过 ⑵arr.join("连接符"):将a ...

  5. JavaScript 数组2—关联数组

    ㈠什么是关联数组 可以自定义下标名称的数组 ㈡为什么 索引数组中的数字下标没有明确的意义 ㈢何时 只希望每个元素都有专门的名称时 ㈣如何:2步 1)创建空数组 2)向空数组中添加新元素,并自定义下标名 ...

  6. Linux培训教程lgzip命令详解和使用实例

    gzip不仅可以用来压缩大的.较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式.据统计,gzip命令对文本文件有60%-70%的压缩率. 1.命令格式 ...

  7. ueditor+复制word+图片不能上传

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...

  8. CodeForces 538F A Heap of Heaps

    题意 给定一个长度为n的数组A,将它变为一颗k叉树(1 <= k <= n - 1)(堆的形式编号). 问对于每一个k,有多少个节点小于它的父节点. 解题 显然,最初的想法是暴力.因为树的 ...

  9. Java中String.getBytes()

    在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组.这个表示在不通OS下,返回的东西不一样!  String.getBytes(String decode) ...

  10. Java 8 - Stream Collectors分组的例子

    1.分组依据,计数和排序 1.1按a分组List并显示它的总数. package com.mkyong.java8; import java.util.Arrays; import java.util ...