数据处理函数又被称为单行处理函数

    1. 单行处理函数的特点:一个输入对应一个输出。
    2. 单行处理函数常见:
    3. //lower 转换小写
    4. mysql> select lower(ename) as ename from emp;
    5. +--------+
    6. | ename |
    7. +--------+
    8. | smith |
    9. | allen |
    10. | ward |
    11. | jones |
    12. | martin |
    13. | blake |
    14. | clark |
    15. | scott |
    16. | king |
    17. | turner |
    18. | adams |
    19. | james |
    20. | ford |
    21. | miller |
    22. +--------+
    23. 14个输入就有14个输出
    24. //upper 转换大写
    25. mysql> select upper(name) as name from t_student;
    26. //substr 取子串(substr(被截取的字符串, 起始下标,截取的长度))
    27. mysql> select substr(ename, 1, 1) as ename from emp;
    28. //SQL语言的起始是从1开始的
    29. //concat函数进行字符串的拼接
    30. mysql> select concat(empno,ename) from emp;
    31. //length 取长度
    32. mysql> select length(ename) enamelength from emp;
    33. //trim 去空格(去除的是头部和尾部的空格)
    34. mysql> select ename,sal from emp where ename =trim(' KING');
    35. +-------+---------+
    36. | ename | sal |
    37. +-------+---------+
    38. | KING | 5000.00 |
    39. +-------+---------+
    40. //str_to_date 将字符串转换成日期
    41. //date_format 格式化日期
    42. //format 设置千分位
    43. //curdate() 返回当前的日期
    44. //curtime() 返回当前的时间
    45. //now() 返回当前的日期和时间
    46. //year(date) 获取指定date的年份
    47. //month(date) 获取指定date的月份
    48. //day(date) 获取指定date的日期
    49. //datediff(date1、date2) 返回起始时间date1 和 结束时间date2 之间的天数
    50. //case..when..then..when..then..else..end
    51. 当员工的工作岗位是MANAGER的时候,工资上调10%,当工作岗位是SALESMAN的时候,工资上调50%,其它正常。 (注意:不修改数据库,只是将查询结果显示为工资上调)
    52. select
    53. ename,job, sal as oldsal,
    54. (case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 else sal end) as newsal
    55. from
    56. emp;
    57. +--------+-----------+---------+---------+
    58. | ename | job | oldsal | newsal |
    59. +--------+-----------+---------+---------+
    60. | SMITH | CLERK | 800.00 | 800.00 |
    61. | ALLEN | SALESMAN | 1600.00 | 2400.00 |
    62. | WARD | SALESMAN | 1250.00 | 1875.00 |
    63. | JONES | MANAGER | 2975.00 | 3272.50 |
    64. | MARTIN | SALESMAN | 1250.00 | 1875.00 |
    65. | BLAKE | MANAGER | 2850.00 | 3135.00 |
    66. | CLARK | MANAGER | 2450.00 | 2695.00 |
    67. | SCOTT | ANALYST | 3000.00 | 3000.00 |
    68. | KING | PRESIDENT | 5000.00 | 5000.00 |
    69. | TURNER | SALESMAN | 1500.00 | 2250.00 |
    70. | ADAMS | CLERK | 1100.00 | 1100.00 |
    71. | JAMES | CLERK | 950.00 | 950.00 |
    72. | FORD | ANALYST | 3000.00 | 3000.00 |
    73. | MILLER | CLERK | 1300.00 | 1300.00 |
    74. +--------+-----------+---------+---------+
    75. //round(x,y) 四舍五入(求参数x的四舍五入的值,保留y位小数)
    76. mysql> select 'abc' from dept;
    77. +-----+
    78. | abc |
    79. +-----+
    80. | abc |
    81. | abc |
    82. | abc |
    83. | abc |
    84. +-----+
    85. mysql> select 1234 from dept;
    86. +------+
    87. | 1234 |
    88. +------+
    89. | 1234 |
    90. | 1234 |
    91. | 1234 |
    92. | 1234 |
    93. +------+
    94. //结论:select后面可以跟某个表的的字段名(类似于变量名),也可以跟字面值\字面量
    95. mysql> select round(1236.567, 0) as result from emp; //保留整数位。
    96. +--------+
    97. | result |
    98. +--------+
    99. | 1237 |
    100. | 1237 |
    101. | 1237 |
    102. | 1237 |
    103. | 1237 |
    104. | 1237 |
    105. | 1237 |
    106. | 1237 |
    107. | 1237 |
    108. | 1237 |
    109. | 1237 |
    110. | 1237 |
    111. | 1237 |
    112. | 1237 |
    113. +--------+
    114. mysql> select round(1236.567, 1) as result from emp; //保留1个小数
    115. mysql> select round(1236.567, 2) as result from emp; //保留2个小数
    116. mysql> select round(1236.567, -1) as result from emp; // 保留到十位。
    117. //rand() 生成随机数 0~1之间(0,1)开区间0到1
    118. mysql> select rand() from dept;
    119. +---------------------+
    120. | rand() |
    121. +---------------------+
    122. | 0.3132190455805688 |
    123. | 0.6032885737747778 |
    124. | 0.07678576286582812 |
    125. | 0.574063123738452 |
    126. +---------------------+
    127. // 100以内的随机数(包括100,因为有round()可以实现四舍五入)
    128. mysql> select round(rand()*100,0) from emp;
    129. //ifnull 可以将 null 转换成一个具体值
    130. ifnull是空处理函数。专门处理空的。
    131. 在所有数据库当中,只要有NULL参与的数学运算,最终结果就是NULL
    132. 注意:NULL只要参与运算,最终结果一定是NULL。为了避免这个现象,需要使用ifnull函数。ifnull函数用法:ifnull(数据, 被当做某个值)
    133. 如果“数据”为NULL的时候,把这个数据结构当做某个值。
    134. 补助为null时,将补助当做0来处理
    135. mysql> select ename,(sal + ifnull(comm,0)) * 12 yearsal from emp;
    136. +--------+----------+
    137. | ename | yearsal |
    138. +--------+----------+
    139. | SMITH | 9600.00 |
    140. | ALLEN | 22800.00 |
    141. | WARD | 21000.00 |
    142. | JONES | 35700.00 |
    143. | MARTIN | 31800.00 |
    144. | BLAKE | 34200.00 |
    145. | CLARK | 29400.00 |
    146. | SCOTT | 36000.00 |
    147. | KING | 60000.00 |
    148. | TURNER | 18000.00 |
    149. | ADAMS | 13200.00 |
    150. | JAMES | 11400.00 |
    151. | FORD | 36000.00 |
    152. | MILLER | 15600.00 |
    153. +--------+----------+

    流程函数

    //if(value,t,f) 如果value为true ,则返回t,否则返回f
    
    //ifnull(value1, value2) 如果value1 不为空,返回value1,否则返回value2
    
    //case when [val1] thenp [res1 ]when..then..else [default] end
    //如果val1为true,返回res1,... 否则返回default默认值
    
    //case [expr] when [val1] then [res1] when..then..else [default] end
    //如果expr的值等于val1,返回res1,... 否则返回default默认值