SQL入门第二篇——函数

简介: 单行处理函数的特点:一个输入对应一个输出多行处理函数的特点:多个输入对应一个输出单行处理函数有哪些

SQL入门第二篇——函数

数据处理函数

  • 单行处理函数的特点:一个输入对应一个输出
  • 多行处理函数的特点:多个输入对应一个输出
  • 单行处理函数有哪些
Lower 转换小写
Upper 转换大写
substr 取字串(被截取的字符串,起始,截取长度);
length 取长度
trim 去空格
str_to_date 将字符串转换成日期
date_format 格式化日期
format 设置千分位
round 四舍五入
rand() 生成随机数
ifnull 可以将null转换成一个具体值
  • Lower 转换小写 Upper 转换大写
    select lower(ename) from emp;
    如果ename那一列有15个数据就会有14个输入和15个输出
    select upper(ename) from emp;
    一样的只不过相反而已
  • substr 取字串(被截取的字符串,起始,截取长度);
    找出员工名字第一个字母是A的员工信息
    第一种方法:模糊查询,这里就不演示了
    第二种方法:substr函数
    select ename from emp where substr(ename,1,1) = 'A';
  • length 取长度
    取出员工名字的长度
    select length(ename) from emp;
  • trim 取空格
    select * from emp where ename = ('   KING');
  • round 四舍五入
    对1236.567取一位小数
    select round(1236.567,1) as result from emp;
    对1236.567小数点前一位四舍五入
    select round(1236.567,-1) as result from emp;
  • rand() 取随机数
    取一百以内的随机数
    select round(rand() * 100,0) from emp;
  • ifnull(字段,0)将一个为null转换为具体值
    计算总体员工的年薪(月工资+月补助)*12考虑到月补助有可能为null需要使用ifnull 赋值 因为null也会参与运算,那样的话他的年薪都没有了肯定不开心
    select ename,(sal + ifnull(comm,0)) *12 as yearsal from emp;
  • 还有一个语句做补充:case...when..then..when..then...else..end 类似于switch语句
    当员工的工作岗位是MANAGER的时候,给你工资上调10%,当工作岗位是SALESMAN的时候,工资上调50%,其他正常(这里不修改数据库,只作为显示)
    select ename,job,sal,(case job when 'MANAGER' then sal * 1.1 when 'SALESMAN' then sal * 1.5 else sal end) from emp;

分组函数(多行处理函数)

  • 多行处理函数的特点:多个输入对应一个输出
  • 分组函数在使用的时候必须先分组,然后才能使用如果没有分组整张表默认为一组
count 计数
sum 求和
min 最小值
max 最大值
avg 求平均值
  • min/max
    计算最低工资
    select min(sal) from emp;
    计算最高工资
    select mxa(sal) from emp;
  • sum
    求工资总和
    select sum(sal) from emp;
  • 求平均工资
    select avg(sal) from emp;
  • 求员工总量
    select count(ename) from emp;
  • 分组函数需要注意哪些
  1. 分组函数自动忽略null
  2. 分组函数count( * )和count(具体字段)区别在于count(具体字段)只记录具体字段的行数,count(*)记录总行数
  3. 分组函数不能够直接使用在where子句中

分组查询(很重要)

  • 当我们知道对某个部门的工资和就需要使用
  • select ..... from ....where...gruop by....order by....
  • 执行顺序:from > where > gruop by > select > order by 所以我们知道了为什么上面说分组函数不能在where后面使用
  • select ename,job,sum(sal) from emp group by job;
    这个语句在mysql中可以执行,但没有意义,在Oracle中会报错
    这里就是:在一条select 语句中,如果有group by语句的话,select后面只能跟:参加分组的字段,以及分组函数其它一律不跟。
    就像这样:select job sum(sal) from emp group by job;
  • 找出每个部门的最高薪资
    select deptno,max(sal) from emp group by deptno;
  • 找出每个部门薪资大于3000的
    第一种:select deptno,max(sal) from emp where sal>3000 group by deptno;
    第二种:select deptno,max(sal) from emp  group by deptno having max(sal)>3000;
  • 找出平均薪资超过2500的
    select deptno avg(sal) from emp group by deptno having avg(sal) > 2500;
  • 总结(单表查询)
    select
    ...
    from
    ...
    where
    ...
    group by
    ...
    having
    ...
    order by
    ...
    执行顺序:from>where>group by>having>select>order by
    小知识:distinct去重,要去除重复记录放在最前面使用select后面
相关文章
|
23天前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
29天前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
30天前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
|
1月前
|
SQL 存储 数据管理
SQL数据库的使用指南:从入门到精通
随着信息技术的飞速发展,数据库已成为各类企业和组织不可或缺的一部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各种场景,如数据存储、数据管理、数据分析等。本文将详细介绍SQL数据库的使用方法,帮助初学者快速入门,并帮助有经验的开发者深化理解。一、SQL数据库基础首先,我们需要理解SQL数
97 2
|
17天前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)
|
30天前
|
SQL 关系型数据库 MySQL
SQL日期函数
SQL日期函数
|
1月前
|
SQL 安全 关系型数据库
SQL自动化注ru-SQLmap入门操作(一)
SQL自动化注ru-SQLmap入门操作(一)
|
1月前
|
SQL 安全 关系型数据库
SQL自动化注茹-SQLmap入门操作(二)
SQL自动化注茹-SQLmap入门操作(二)
|
2月前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
83 6
|
2月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)