MySQL学习笔记之三排序和过滤

栏目: 数据库 · 发布时间: 5年前

内容简介:在数据库的使用中排序和过滤也是经常的操作排序检索数据,关键字order数据过滤,关键字where

在数据库的使用中 排序 和过滤也是经常的操作

排序检索数据,关键字order

1.按照某个列名排序

普通排序
mysql> select * from user;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  1 | 张三   |  20 | 北京海底市南区        |   1 |
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
|  3 | 赵芸   |  32 | 上海市徐汇区          |   2 |
|  4 | 王丽   |  31 | 广州厦门              |   2 |
+----+--------+-----+-----------------------+-----+
4 rows in set (0.00 sec)
按照列名name排序是什么样呢?
mysql> select * from user order by name;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  1 | 张三   |  20 | 北京海底市南区        |   1 |
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
|  4 | 王丽   |  31 | 广州厦门              |   2 |
|  3 | 赵芸   |  32 | 上海市徐汇区          |   2 |
+----+--------+-----+-----------------------+-----+
4 rows in set (0.00 sec)

2.按照多个列名排序

mysql> select * from user order by name, age;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  1 | 张三   |  20 | 北京海底市南区        |   1 |
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
|  4 | 王丽   |  31 | 广州厦门              |   2 |
|  3 | 赵芸   |  32 | 上海市徐汇区          |   2 |
+----+--------+-----+-----------------------+-----+
4 rows in set (0.00 sec)

3.指定排序方向,默认为字母(a-z),升序

使用关键字desc,可以改为降序排列
mysql> select * from user order by name desc;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  3 | 赵芸   |  32 | 上海市徐汇区          |   2 |
|  4 | 王丽   |  31 | 广州厦门              |   2 |
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
|  1 | 张三   |  20 | 北京海底市南区        |   1 |
+----+--------+-----+-----------------------+-----+
4 rows in set (0.00 sec)

4.和limit配合使用,限制检索数据数量

mysql> select * from user order by name limit 3;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  1 | 张三   |  20 | 北京海底市南区        |   1 |
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
|  4 | 王丽   |  31 | 广州厦门              |   2 |
+----+--------+-----+-----------------------+-----+
3 rows in set (0.00 sec)

数据过滤,关键字where

1.检索某一条记录

mysql> select * from user where id = 2;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
+----+--------+-----+-----------------------+-----+
1 row in set (0.00 sec)

order by 配合使用
mysql> select * from user where id <4  order by name limit 3;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  1 | 张三   |  20 | 北京海底市南区        |   1 |
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
|  3 | 赵芸   |  32 | 上海市徐汇区          |   2 |
+----+--------+-----+-----------------------+-----+
3 rows in set (0.00 sec)

关于where子句的位置: 在同时使用whereorder by子句时候, 我们应该让order by位于where 子句之后。

2.范围检索--between

mysql> select * from user where id between 2 and 4;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
|  3 | 赵芸   |  32 | 上海市徐汇区          |   2 |
|  4 | 王丽   |  31 | 广州厦门              |   2 |
+----+--------+-----+-----------------------+-----+
3 rows in set (0.00 sec)

3.过滤--组合where

mysql> select * from user where id >1 and id < 4;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
|  3 | 赵芸   |  32 | 上海市徐汇区          |   2 |
+----+--------+-----+-----------------------+-----+
2 rows in set (0.00 sec)

4. 数据过滤--or 操作符

mysql> select * from user where id <2 or id >=3;
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  1 | 张三   |  20 | 北京海底市南区        |   1 |
|  3 | 赵芸   |  32 | 上海市徐汇区          |   2 |
|  4 | 王丽   |  31 | 广州厦门              |   2 |
+----+--------+-----+-----------------------+-----+
3 rows in set (0.00 sec)

5.数据过滤--in 操作符

in操作符可以用于指定操作范围,范围内每个条件都可以进行匹配。
mysql> select * from user where name in ("张三","李四");
+----+--------+-----+-----------------------+-----+
| id | name   | age | address               | sex |
+----+--------+-----+-----------------------+-----+
|  1 | 张三   |  20 | 北京海底市南区        |   1 |
|  2 | 李四   |  22 | 北京海底市南区        |   1 |
+----+--------+-----+-----------------------+-----+
2 rows in set (0.00 sec)

in操作符的优势:
1. 使用长的合法选项清单时候, in操作符比较直观。
2. in操作符计算的次序比较好管理
3. in操作符一般比or操作符效率快
4. in操作符可以包括其他select语句,能够更加动态的创建where子句

6.数据过滤--not操作符

not操作符只有一个特点, 就是否定它后面的任何条件。
mysql支持notin, between, exists子句取反。

mysql> select * from user where name not in ("张三","李四");
+----+--------+-----+--------------------+-----+
| id | name   | age | address            | sex |
+----+--------+-----+--------------------+-----+
|  3 | 赵芸   |  32 | 上海市徐汇区       |   2 |
|  4 | 王丽   |  31 | 广州厦门           |   2 |
+----+--------+-----+--------------------+-----+
2 rows in set (0.00 sec)

我的网站: https://wayne214.github.io


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

迷茫的旅行商

迷茫的旅行商

[美] William J. Cook / 隋春宁 / 人民邮电出版社 / 2013-10-1 / 49.00

假设一名旅行商打算拜访一张城市列表中的所有城市,每座城市只去一次,最后回到出发地。要怎么走才能让路线最短呢?这就是旅行商问题,乍一听很简单,在应用数学界却是一道研究极其热烈的难题,时至今日仍无人能解。本书中,William J. Cook将带领读者踏上一场数学之旅,跟随旅行商的脚步,从19世纪初爱尔兰数学家W. R. Hamilton最初定义该问题开始,一路奔向当今最前沿、最顶尖的解题尝试。 ......一起来看看 《迷茫的旅行商》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具