一、基本查询语句

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. TTTTTTTTTTT 400D Dima and Bacteria 细菌 最短路

    题意: 题目大意:给出n,m和k,表示有n个细菌,m种仪器和k种细菌,给出k种细菌的数量ci,然后每个细菌按照种类排成一排(所以有第i种细菌的序号从∑(1≤j≤i-1)cj + 1 到∑(1≤j≤i) ...

  2. 动态调用WebService接口的几种方式

    一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过 ...

  3. 原生Js_制作简易日历

    javascript制作简易日历,月份信息已经放在一个数组中,在<script>...</script>中编写代码实现其功能 实现步骤 a) 获取需要操作的dom对象 b) 在 ...

  4. ServletConfig接口

    ServletConfig接口 Servlet容器初始化Servlet对象时会为Servlet创建一个ServletConfig对象,在ServletConfig对象中包含了Servlet的初始化参数 ...

  5. scala基础-1

    函数式编程 ​ 并行编程 ​ 多核计算.云计算 ​ 引用透明,给值确定,结果也确定 数据类型 三种变量修饰符 ​ val 定义immutable variable ​ var 定义mutable va ...

  6. 数据聚类算法-K-means算法

    深入浅出K-Means算法 摘要: 在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. K-Mea ...

  7. [CSP-S模拟测试]:小L的数(数位DP+模拟)

    题目传送门(内部题132) 输入格式 第一行一个整数$t$. 接下来$t$行每行一个整数$n$. 输出格式 $t$行,每行一个整数表示答案. 样例 样例输入: 41818231232691052109 ...

  8. Android学习_7/23

    1.        在活动中使用Menu 1)        什么是Menu? 2)        怎么实现? step1:res目录下创建Menu resource file,使用<item… ...

  9. 一、linux下nginx1.7.8+php5.6.3的环境配置

    部分参考:http://www.cnblogs.com/simpman/p/4151662.html http://blog.zyan.cc/nginx_php_v6 1.利用linux系统自带的yu ...

  10. vs2015使用低版本编译的openssl问题

    用Vs2005编译的openssl,在vs2015中使用就悲剧了,报如下错误 >libeay32.lib(cryptlib.obj) : error LNK2019: 无法解析的外部符号 __v ...