【1】    LOWER : 将字符串中的内容全部转成小写
             UPPER : 将字符串中的内容全部转成大写

  1. SELECT LOWER ('abAcD')
  2. FROM DUAL
  3. SELECT UPPER('abAcd')
  4. FROM DUAL
  5. SELECT UPPER(first_name)
  6. FROM employees

【2】CONCAT : 字符串拼接

SUBSTR :截取子串,从2的位置开始偏移量为3

LENGTH :长度

  1. CONCAT('Hello', 'World') HelloWorld
  2. SUBSTR('HelloWorld',1,5) Hello
  3. LENGTH('HelloWorld') 10
  4. INSTR('HelloWorld', 'W') 6
  5. LPAD(salary,10,'*') *****24000
  6. RPAD(salary, 10, '*') 24000*****
  7. TRIM('H' FROM 'HelloWorld') elloWorld
  8. REPLACE('abcd','b','m') amcd

【3】  LPAD (右对齐)| RPAD (左对齐):
           TRIM : 清除字符串左右两端指定的字符
           REPLACE : 替换字符串中指定的某个字符

  1. SELECT CONCAT ('aaa','bbb','ccc')abc
  2. FROM DUAL
  3. SELECT CONCAT(first_name,'',last_name) NAME
  4. FROM employees

【4】mysql的索引值是从1开始的,截取子串,从2的位置开始偏移量为3

  1. SELECT SUBSTR('HelloMysql',2,3)
  2. FROM DUAL
  3. SELECT LENGTH('Hello')
  4. FROM DUAL
  5. SELECT INSTR('hellolo','lo')
  6. FROM DUAL
  7. SELECT LPAD(first_name,10,'')
  8. FROM employees
  9. SELECT TRIM(''FROM 'abc de')
  10. FROM DUAL
  11. SELECT TRIM('#' FROM '####abc de#####')
  12. FROM DUAL
  13. SELECT REPLACE('abcdef','a','A')
  14. FROM DUAL

【5】数字函数

  1. ROUND: 四舍五入
  2. ROUND(45.926, 2) 45.93
  3. TRUNCATE: 截断
  4. TRUNCATE(45.926) 45
  5. MOD: 求余
  6. MOD(1600, 300) 100

  1. SELECT ROUND(123.65,1) ,ROUND(123.53,0),ROUND(123.43,-1)
  2. FROM DUAL
  3. SELECT TRUNCATE(123.65,1),TRUNCATE(123.53,0),TRUNCATE(123.53,-1)
  4. FROM DUAL
  5. SELECT MOD(5,3),MOD(-5,3),MOD(5,-3),MOD(-5,-3)
  6. FROM DUAL

【6】 日期函数  now() : 获取当前时间

  1. SELECT NOW()
  2. FROM DUAL

【7】   通用函数 : ifnull
             注意 :null和其它值做运算结果仍为null

  1. SELECT employee_id,salary,12*salary*(1+commission_pct)
  2. FROM employees;
  3. SELECT salary,commission_pct,salary * commission_pct
  4. FROM employees
  5. WHERE employee_id =100

【8】 IFNull(commission_pct,0) :如果commission_pct 的值为null那么就将值设置为0


  1. SELECT employee_id,salary,12*salary*(1 + IFNULL(commission_pct,0))
  2. FROM employees
  3. WHERE employee_id = 100

【11】    练习:查询部门号为 10, 20, 30 的员工信息, 若部门号为 10,
               则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍,
               30 号部门打印其工资的 1.3 倍数

  1. SELECT first_name,salary,department_id,
  2. CASE department_id
  3. WHEN 10 THEN salary * 1.1
  4. WHEN 20 THEN salary * 1.2
  5. WHEN 30 THEN salary * 1.3
  6. ELSE salary * 1.4 END new_salary
  7. FROM employees
  8. SELECT first_name,salary,job_id,
  9. CASE job_id
  10. WHEN 'IT_PROG' THEN salary*2
  11. ELSE salary *1.4 END new_salary
  12. FROM employees

【12】 AVG() : 求平均值
            SUM() :求和
            MAX() : 求最大值
            MIN() : 求最小值
            COUNT() : 求个数

  1. -- avg只能运算数值(double,int
  2. SELECT AVG(salary)
  3. FROM employees
  4. SELECT SUM(salary)
  5. FROM employees
  6. -- max,min 可以运算数值,字符串,日期
  7. SELECT MAX(first_name),MAX(salary)
  8. FROM employees

SELECT MIN(first_name),MIN(salary)
FROM employees

【13】count:统计的个数不包含数值为null

SELECT COUNT(salary),COUNT(commission_pct)
FROM employees

SELECT AVG(salary),SUM(salary)/107,SUM(salary)/COUNT(commission_pct)
FROM employees

【14】 需求:求表中的数据有多少

SELECT COUNT(*),COUNT(1),COUNT(2)
FROM employees

SELECT first_name
FROM employees
WHERE 1 =1; -- 可以理解为没有条件

【15】    group by

①  需求:求所有员工的平均工资

  1. SELECT AVG(salary)
  2. FROM employees
  3. -- 下面的写法是错误的
  4. SELECT first_name,AVG(salary)
  5. FROM employees

② 需求: 求各部门员工的平局工资

  1. 如果列中出现了组函数和其他的列。那么其他的列必须作为
  2. group by 后面分组的条件
  3. SELECT department_id,AVG(salary)
  4. FROM employees
  5. -- group by 按照什么样的格式来分组
  6. GROUP BY department_id

③需求:求各部门中不同工种的员工的平均工资

  1. SELECT department_id, job_id,AVG(salary)
  2. FROM employees
  3. GROUP BY department_id,job_id
  4. SELECT department_id, job_id,AVG(salary)
  5. FROM employees
  6. -- group by 后面的两个列交换顺序是没有区别的
  7. GROUP BY job_id,department_id

【16】 having

①需求 :求各个部门中最高工资大于10000的部门
-- 注意 :如果过滤条件中出现了组函数,那么只能放在having后面使用

  1. SELECT department_id,MAX(salary)
  2. FROM employees
  3. GROUP BY department_id
  4. HAVING MAX(salary)>10000

②需求:求 20,30,40部门中最高工资大于10000的部门

  1. SELECT department_id,MAX(salary)
  2. FROM employees
  3. GROUP BY department_id
  4. HAVING MAX (salary)>10000 AND department_id IN (20,30,40)
  5. -- 下面的方式比上面的好
  6. SELECT department_id,MAX(salary)
  7. FROM employees
  8. WHERE department_id IN(20,30,40)
  9. GROUP BY department_id
  10. HAVING MAX(salary)>10000
  11. DESC customers
  12. INSERT INTO customers(NAME,email,birth) VALUES('鲁宾','ccc.@.qq.com','1196-02-56')

数据库之 MySQL --- 数据处理 之 单行函数、组函数 (四)的更多相关文章

  1. 数据库之 MySQL --- 数据处理 之 表的约束与分页(七)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有)     1.约束 :为了保证数据的一致性和完整性,SQL规范以约束的方式对表数据进行额外的条件限制 ​ ...

  2. 数据库之 MySQL --- 数据处理 之 表操作、CRUD(六)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一. 表操作 创建数据库CREATE DATABASE demo-- 删除数据库DROP DATABAS ...

  3. 数据库之 MySQL --- 数据处理 之 子查询 (二)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一 .数据库语言定义及命令行查看数据库操作 -- SQL 语言可以分为三类-- DML: 数据操纵语言. ...

  4. 数据库之 MySQL --- 数据处理 之 多行子查询(五)

    ​ [1]需求: 谁的工资比Abel 高?方式一: 第一步线查出Abel共子 第二部进行过滤 SELECT salary FROM employees WHERE last_name = 'Abel' ...

  5. 数据库之 MySQL --- 数据处理 之多表查询 (三)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.多表查询 [1]什么是多表查询? 即,从多个表中获取数据. 注意: 在多表查询是,如果列明在两个表中 ...

  6. MySQL-第九篇分组和组函数

    1.组函数 组函数:即多行函数,组函数将一组记录作为整体计算,每组记录返回一个结果,而不是每条记录返回一个结果. 2.常用的组函数有: 1>avg([distinct|all]expr):计算多 ...

  7. Netsuite Formula > Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt

    PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 ...

  8. 【数据库】MySql常用函数梳理

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5866388.html MySql常用函数梳理: 1:数学函数 使用格式:一般用于插入.修改语句中,直接 函数( ...

  9. Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

    count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age ...

随机推荐

  1. Synchronized 和 ReentrantLock (Lock )的区别

    原始构成 Synchronized 是关键字,属于JVM层面,底层是通过 monitorenter 和 monitorexit 完成,依赖于 monitor 对象来完成.由于 wait/notify ...

  2. 推荐算法_CIKM-2019-AnalytiCup 冠军源码解读

    最近在帮一初创app写推荐系统,顺便学习一波用户兴趣高速检索的冠军算法. 写总结前贴出冠军代码的git地址:https://github.com/ChuanyuXue/CIKM-2019-Analyt ...

  3. 【Linux系列汇总】小白博主的嵌入式Linux实战快速进阶之路(持续更新)

    我把之前在学习嵌入式Linux和工作中遇到问题和相关经验等,一起整理到这里,方便自己查阅和学习,温故而知新,如果能帮助到您,请帮忙点个赞: 本文的宗旨 嵌入式Linux 的项目通常需要一个团队来开发, ...

  4. SVN 分支代码合并到主线

    SVN 分支代码合并到主线 步骤一安装TortoiseSVN 客户端,在本地 checkout主线代码 步骤二:创建branches分支 步骤三.branches修改提交代码 步骤四:分支代码合并到主 ...

  5. 关于redis内存分析,内存优化

    对于redis来说,什么是最重要的? 毋庸置疑,是内存. 一.reids 内存分析 redis内存使用情况:info memory 示例: 可以看到,当前节点内存碎片率为226893824/20952 ...

  6. rabbitMQ基于spring-rabbitnq

    一.什么是MQ MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递 ...

  7. JDBC基本使用方法

    JDBC基本使用方法 JDBC固定步骤: 加载驱动 String url="jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true& ...

  8. Appium自动化(15) - 针对 webview 进行自动化测试

    如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html webview 简介 WebVie ...

  9. 根据ip查询ip归属地

    http://www.oschina.net/code/snippet_944819_33978 http://www.jb51.net/article/54287.htm public String ...

  10. 阿里面试官必问的12个MySQL数据库基础知识,哪些你还不知道?

    数据库基础知识 1.为什么要使用数据库 (1)数据保存在内存 优点: 存取速度快 缺点: 数据不能永久保存 (2)数据保存在文件 优点: 数据永久保存 缺点: 1)速度比内存操作慢,频繁的IO操作. ...