MySQL数据库学习之排序与单行处理函数详解
2023-06-13 09:20:09 时间
示例表内容见此篇文章
Mysql支持数据排序操作,例如,现在我们按照工资从小到大进行排序操作:
mysql select ename,sal from emp order by sal;+ + +
| ename | sal |
+ + +
| SMITH | 800.00 |
| JAMES | 950.00 |
| ADAMS | 1100.00 |
| WARD | 1250.00 |
| MARTIN | 1250.00 |
| MILLER | 1300.00 |
| TURNER | 1500.00 |
| ALLEN | 1600.00 |
| CLARK | 2450.00 |
| BLAKE | 2850.00 |
| JONES | 2975.00 |
| SCOTT | 3000.00 |
| FORD | 3000.00 |
| KING | 5000.00 |
+ + +
14 rows in set (0.00 sec)
如果需要降序排序的话,需要指定desc:(默认为升序排序,如果您进行指定的话,指定为asc即可)
mysql select ename,sal from emp order by sal desc;+ + +
| ename | sal |
+ + +
| KING | 5000.00 |
| SCOTT | 3000.00 |
| FORD | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| ALLEN | 1600.00 |
| TURNER | 1500.00 |
| MILLER | 1300.00 |
| WARD | 1250.00 |
| MARTIN | 1250.00 |
| ADAMS | 1100.00 |
| JAMES | 950.00 |
| SMITH | 800.00 |
+ + +
14 rows in set (0.00 sec)
更复杂的情况,为多字段排序:
比如我们想按照薪资升序排列,薪资一样的情况下,按照名字降序排序:
mysql select ename,sal from emp order by sal,ename desc;+ + +
| ename | sal |
+ + +
| SMITH | 800.00 |
| JAMES | 950.00 |
| ADAMS | 1100.00 |
| WARD | 1250.00 |
| MARTIN | 1250.00 |
| MILLER | 1300.00 |
| TURNER | 1500.00 |
| ALLEN | 1600.00 |
| CLARK | 2450.00 |
| BLAKE | 2850.00 |
| JONES | 2975.00 |
| SCOTT | 3000.00 |
| FORD | 3000.00 |
| KING | 5000.00 |
+ + +
14 rows in set (0.00 sec)
排序结合条件进行查找:
要求找出薪资在1250到3500之间,按照薪资降序排序:
mysql select ename,sal from emp where sal between 1250 and 3500 order by sal desc;+ + +
| ename | sal |
+ + +
| SCOTT | 3000.00 |
| FORD | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| ALLEN | 1600.00 |
| TURNER | 1500.00 |
| MILLER | 1300.00 |
| WARD | 1250.00 |
| MARTIN | 1250.00 |
+ + +
10 rows in set (0.00 sec) 2.单行处理函数
处理完一行再处理下一行:(一个输入对应一个输出)
内容转小写 mysql select lower(ename) from emp;+ +
| lower(ename) |
+ +
| smith |
| allen |
| ward |
| jones |
| martin |
| blake |
| clark |
| scott |
| king |
| turner |
| adams |
| james |
| ford |
| miller |
+ +
14 rows in set (0.00 sec) 内容转大写 mysql select upper(ename) from emp;
+ +
| upper(ename) |
+ +
| SMITH |
| ALLEN |
| WARD |
| JONES |
| MARTIN |
| BLAKE |
| CLARK |
| SCOTT |
| KING |
| TURNER |
| ADAMS |
| JAMES |
| FORD |
| MILLER |
+ +
14 rows in set (0.00 sec)
例如:我们想要取到每个名字的第一个字母:
mysql select substr(ename,1,1) from emp;+ -+
| substr(ename,1,1) |
+ -+
| S |
| A |
| W |
| J |
| M |
| B |
| C |
| S |
| K |
| T |
| A |
| J |
| F |
| M |
+ -+
14 rows in set (0.00 sec) 字符串拼接
拼接每个人的empno和ename:
mysql select concat(empno,ename) from emp;+ +
| concat(empno,ename) |
+ +
| 7369SMITH |
| 7499ALLEN |
| 7521WARD |
| 7566JONES |
| 7654MARTIN |
| 7698BLAKE |
| 7782CLARK |
| 7788SCOTT |
| 7839KING |
| 7844TURNER |
| 7876ADAMS |
| 7900JAMES |
| 7902FORD |
| 7934MILLER |
+ +
14 rows in set (0.00 sec)
取出每个人名字的字符数:
mysql select length(ename) from emp;+ +
| length(ename) |
+ +
| 5 |
| 5 |
| 4 |
| 5 |
| 6 |
| 5 |
| 5 |
| 5 |
| 4 |
| 6 |
| 5 |
| 5 |
| 4 |
| 6 |
+ +
14 rows in set (0.00 sec) 去除前后空白
查询名字为KING的详细信息,不包含前后空白:
mysql select * from emp where ename = trim( KING );+ -+ -+ + + + + + +
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
+ -+ -+ + + + + + +
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 |
+ -+ -+ + + + + + +
1 row in set (0.00 sec)
对123.456保留0位小数
mysql select round(123.456,0) from emp;+ +
| round(123.456,0) |
+ +
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
| 123 |
+ +
14 rows in set (0.00 sec) 生成随机数
生成0到1的随机小数:
mysql select rand() from emp;+ +
| rand() |
+ +
| 0.06316715857309024 |
| 0.5963954959031152 |
| 0.7924760345299505 |
| 0.17319371567405176 |
| 0.48854050551405226 |
| 0.923121411281751 |
| 0.1499855706002429 |
| 0.9805636498896066 |
| 0.4528615683809496 |
| 0.3226169229695731 |
| 0.25449994043866164 |
| 0.304648964018234 |
| 0.75974502950883 |
| 0.8847782862230933 |
+ +
14 rows in set (0.00 sec)
数据库中对于NULL进行运算结果一定为NULL 于是就有了NULL处理函数
例如:计算每个员工的年收入(月薪+月奖金):
mysql select ename,job,sal,- (case job when MANAGER then sal*1.1 when SALESMAN then sal*1.5 else sal*1.2 end) as newsal
- from emp;
+ + + + +
| ename | job | sal | newsal |
+ + + + +
| SMITH | CLERK | 800.00 | 960.00 |
| ALLEN | SALESMAN | 1600.00 | 2400.00 |
| WARD | SALESMAN | 1250.00 | 1875.00 |
| JONES | MANAGER | 2975.00 | 3272.50 |
| MARTIN | SALESMAN | 1250.00 | 1875.00 |
| BLAKE | MANAGER | 2850.00 | 3135.00 |
| CLARK | MANAGER | 2450.00 | 2695.00 |
| SCOTT | ANALYST | 3000.00 | 3600.00 |
| KING | PRESIDENT | 5000.00 | 6000.00 |
| TURNER | SALESMAN | 1500.00 | 2250.00 |
| ADAMS | CLERK | 1100.00 | 1320.00 |
| JAMES | CLERK | 950.00 | 1140.00 |
| FORD | ANALYST | 3000.00 | 3600.00 |
| MILLER | CLERK | 1300.00 | 1560.00 |
+ + + + +
14 rows in set (0.00 sec)
到此这篇关于MySQL数据库学习之排序与单行处理函数详解的文章就介绍到这了,更多相关MySQL排序 单行处理函数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL数据库学习之排序与单行处理函数详解
相关文章
- MySQL Status Ssl_finished_connects 数据库状态作用意思及如何正确
- MySQL删除数据库:简单SQL语句指南(mysql删除数据库语句)
- MySQL数据库无法连接:排查与解决方法(mysql数据库打不开)
- 数据库西部数码开发MySQL数据库(西部数码mysql)
- 老顽童教你MySQL:实战培训提高数据处理效率(老顽童mysql培训)
- 使用MySQL自带工具管理数据库(mysql自带工具)
- 提升MySQL性能优化,让你的数据库更加迅速(mysql性能如何)
- OS X下快速启动MySQL服务器(osx启动mysql)
- 台服务器探究MySQL如何安装在服务器上(mysql装在哪)
- MySQL如何启动数据库,详细步骤解析(mysql如何启动数据库)
- 深入探讨MySQL的.idb文件:如何利用它来管理数据库(mysql.idb文件)
- MySQL数据库恢复:简易步骤指南(mysql数据库还原步骤)
- 深入理解MySQL锁定机制,优化数据库性能(mysql锁定)
- MySQL中更新数据的语法简介(mysql中的更新语句)
- 使用PHP7 编译MySQL 数据库现代化之路(php7 编译mysql)
- 易性能优化的方法MySQL中交易易性能优化的方法(mysql中交)
- CVS格式数据导入MySQL数据库的方法(cvs导入到mysql)
- 解决MySQL连接数过多的方法(c mysql连接数太大)
- MySQL数据库的空白之谜(c mysql 空白)
- Chloe实现MySQL数据库的最佳用法(chloe.mysql)
- 用CMD命令快速启动MySQL服务器(cmd命令启动mysql)
- 深入剖析MySQL三级分类结构实现数据分类和检索(mysql 三级分类结构)
- MySQL一次查询缓存的机制及实现方式解析(mysql一次查询缓存)
- MySQL确保数据唯一性,不可重复添加(mysql 不可以重复)
- 学习MySQL如何对两个字段进行排序(mysql两字段排序)
- MySQL无法创建导致数据库操作异常的解决方法(mysql不能创建)
- MySQL字段设置为不允许NULL值的问题解决方案(mysql不能为null)
- 深入了解MySQL的不等表达式(mysql 不等的表达)