设为首页 加入收藏

TOP

Mysql 单表查询-排序-分页-group by初识(一)
2019-10-10 11:17:56 】 浏览:116
Tags:Mysql 单表 查询 排序 -分页 -group 初识

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

对于select 来说, 分组聚合(((group by; aggregation), 排序 (order by** ), 分页查询 (limit), 等这些操作, 都是结合 where 过滤(算术表达式, 逻辑表达式, 判空, 范围过滤, 模糊查询), 来进一步对数据集为所欲为地操作哦, group by 也是我工作中每天都必用的, 因为我每天要拆分数据嘛, 先按一或多个字段 group by, 然后, 再对每组的抑或多个字段进行聚合(sum, avg, max, quartile...)等.

直接来理解SQL分组聚合, 一开始还是不容易的, 一个是对group by 不熟, 另一个对sql语句不熟. 针对这点, 我是每天都在用Excel的透视表, 各种透视, 多条件透视, 整吐了过后, 就彻底明白了. 虽然我是有些讨厌Excel, 但不得不说, 它能让你直观地理解很多数据, 数据结构, 编程相关的概念.

数据依然是上篇, students表(where 初识那一篇).

准备测试数据

-- win 下, 进入终端 (cmd + R)
mysql -u root -p

C:\Users\chenjie>mysql -u root -p
Enter password: ********

-- 再重新来手打一遍吧, 一点经验之谈, 对我学习方法就是, 多抄代码, 抄多了, 手就有感觉了, 跟打字一样的, 变成了一种下意识, 而非脑袋过一遍就觉得懂了哦,真的是唯手熟尔哦.

-- 创建数据库
drop database if exists student_db;
create database student_db charset=utf8;

use student_db;

-- 创建学生表-测试
create table students(
    id int unsigned primary key auto_increment not null,
    name varchar(20) default "",
    age tinyint unsigned default 0, -- 建议给默认值, Null查询慢
    height decimal(5,2),  -- 共5位, 小数占2位
    gender enum("男", "女", "未填写"),
    class_id int unsigned default 1,
    is_delete bit default 0
);

-- 班级表
drop table if exists classes;
create table classes(
    id int unsigned auto_increment primary key not null,
    name varchar(20) not null
);

-- 插入偶像, 用于测试哦只是, 别无它意
insert into students values
(0,'爱因斯坦',18,180.00,1,1,0),
(0,'居里夫人',18,180.00,2,2,1),
(0,'小王子',14,185.00,1,1,0),
(0,'李银河',59,175.00,1,2,1),
(0,'黄蓉',38,160.00,2,1,0),
(0,'冰心',28,150.00,2,2,1),
(0,'王祖贤',18,172.00,2,1,1),
(0,'周杰伦',36,NULL,1,1,0),
(0,'王小波',57,181.00,1,2,0),
(0,'林徽因',25,166.00,2,2,0),
(0,'小星',33,162.00,3,3,1),
(0,'张爱玲',12,180.00,2,4,0),
(0,'冯唐',12,170.00,1,4,0),
(0,'胡适',34,176.00,2,5,0);

insert into classes values
(0, "科学"),
(0, "艺术");

-- 如果失败, 要么就是语法不对, 要么就是 没有开服服务
Query OK, 14 rows affected (0.03 sec)
Records: 14  Duplicates: 0  Warnings: 0

mysql>
mysql> insert into classes values
    -> (0, "科学"),
    -> (0, "艺术");
Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0

-- 测试
select * from students;
select * from calsses;

+----+--------------+------+--------+-----------+----------+-----------+
| id | name         | age  | height | gender    | class_id | is_delete |
+----+--------------+------+--------+-----------+----------+-----------+
|  1 | 爱因斯坦     |   18 | 180.00 | 男        |        1 |           |
|  2 | 居里夫人     |   18 | 180.00 | 女        |        2 |          |
|  3 | 小王子       |   14 | 185.00 | 男        |        1 |           |
|  4 | 李银河       |   59 | 175.00 | 男        |        2 |          |
|  5 | 黄蓉         |   38 | 160.00 | 女        |        1 |           |
|  6 | 冰心         |   28 | 150.00 | 女        |        2 |          |
|  7 | 王祖贤       |   18 | 172.00 | 女        |        1 |          |
|  8 | 周杰伦       |   36 |   NULL | 男        |        1 |           |
|  9 | 王小波       |   57 | 181.00 | 男        |        2 |           |
| 10 | 林徽因       |   25 | 166.00 | 女        |        2 |           |
| 11 | 小星         |   33 | 162.00 | 未填写    |        3 |          |
| 12 | 张爱玲       |   12 | 180.00 | 女        |        4 |           |
| 13 | 冯唐         |   12 | 170.00 | 男        |        4 |           |
| 14 | 胡适         |   34 | 176.00 | 女        |        5 |           |
+----+--------------+------+--------+-----------+----------+-----------+
14 rows in set (0.00 sec)

mysql> select * from classes;
+----+--------+
| id | name   |
+----+--------+
|  1 | 科学   |
|  2 | 艺术   |
+----+--------+

-- 手抖了, 改下 胡适先生的性别
update students as s
set s.gender := "男"
where s.name = "胡适";

Query OK, 1 row affected (0.10 sec)
Rows matched: 1  Changed: 1  Warnings: 0

-- 检测一波
select s.name, s.gender
from students s  -- 养成 as 取别名的习惯, 为后面多张表连接预热哦
where s.name = "胡适";

+--------+--------+
| name   | gender |
+--------+--------+
| 胡适   | 男     |
+--------+--------+
1 row in set (0.00 sec)

排序 order by

  • order by 字段
  • desc
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数据库面试时常见的26个问题 下一篇通过语句对SQL Server 表结构进行..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目