接上篇文章查询
写在最前,本篇文章大部分来源于动力节点MySQL入门基础的提炼,并附带自己的理解。主要是为了复习此前学了又忘的数据库。如果同时还能对其他人有所裨益,那就更好不过了。如果有谬误的地方,还请不吝指出。
排序
排序指令:order by
, 默认升序(但也可加asc
指定升序)
mysql> select sal from emp order by sal
-> ;
+---------+
| sal |
+---------+
| 800.00 |
| 950.00 |
| 1100.00 |
| 1250.00 |
| 1250.00 |
| 1300.00 |
+---------+
降序:在后面加 desc
mysql> select sal from emp order by sal desc;
+---------+
| sal |
+---------+
| 1300.00 |
| 1250.00 |
| 1250.00 |
| 1100.00 |
| 950.00 |
| 800.00 |
+---------+
多字段排序
比如:薪资为第一次序,名字为第二次序。
mysql> select ename, sal from emp order by sal,ename;
按代码顺序来排列
按字段位置排序(了解)
select sal from emp order by 2
按列数排序,但并不健壮。
综合条件排序
mysql> select ename,sal from emp where sal between 1250 and 3000 order by sal;
+--------+---------+
| ename | sal |
+--------+---------+
| 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 |
+--------+---------+
注意:不能改换order by
和where
的顺序,排序总是在最后执行。
数据处理函数
又被称为单行处理函数
特点:一个输入(一条记录)对应一个输出
多行处理函数:多个输入(多条记录)对应一个输出,例如sum函数
常见单行处理函数
lower
转为小写,upper
转为大写
注意:字段名本身也会改名,使用as
关键字更改别名。
substr
取子串,substr(source, 起始下标, 截取长度)
,注意起始下标为1而不为0。
length
字符串长度
trim
去空格
select
后面如果跟着的是字面量(字符串和数值),会根据表的row的数量来生成一个表,比如
mysql> select 'abc' from emp;
+-----+
| abc |
+-----+
| abc |
| abc |
| abc |
| abc |
| abc |
| abc |
| abc |
| abc |
| abc |
| abc |
| abc |
| abc |
| abc |
| abc |
+-----+
也就是说可以通过函数手动生成一个表
rand
生成0-1的随机数
round
第一个参数为表名(或数字),第二个参数为保留小数的个数(-1则会保留到整数部分,以此类推)
通过ifnull
可以避免null+其他值为null的情况。第一个参数为字段,第二个参数为将null替换的值
case
条件显示,模拟if语句,可以匹配某一个字段的列,并根据某个条件来显示,比如:
mysql> select ename, job, sal, (case job when 'manager' then sal*100 else sal end) as new_sal from emp;
+--------+-----------+---------+-----------+
| ename | job | sal | new_sal |
+--------+-----------+---------+-----------+
| SMITH | CLERK | 800.00 | 800.00 |
| ALLEN | SALESMAN | 1600.00 | 1600.00 |
| WARD | SALESMAN | 1250.00 | 1250.00 |
| JONES | MANAGER | 2975.00 | 297500.00 |
| MARTIN | SALESMAN | 1250.00 | 1250.00 |
| BLAKE | MANAGER | 2850.00 | 285000.00 |
| CLARK | MANAGER | 2450.00 | 245000.00 |
| SCOTT | ANALYST | 3000.00 | 3000.00 |
| KING | PRESIDENT | 5000.00 | 5000.00 |
| TURNER | SALESMAN | 1500.00 | 1500.00 |
| ADAMS | CLERK | 1100.00 | 1100.00 |
| JAMES | CLERK | 950.00 | 950.00 |
| FORD | ANALYST | 3000.00 | 3000.00 |
| MILLER | CLERK | 1300.00 | 1300.00 |
+--------+-----------+---------+-----------+