数据库基础入门 — 函数

简介: 数据库基础入门 — 函数

函数分为单行函数和多行函数(聚合函数)
MySQL单行函数可以嵌套,聚合函数不可以嵌套!Oracle可以。
主要函数请参考上方PDF,非常全
函数一般写于select子句,或者where子句

单行函数

/*
分支结构
*/
-- 流程控制IF
select last_name,salary,if(salary>6000,'高工资','低工资') '对比'
from employees
order by salary desc;
-- 流程控制 case when then when then else end
select last_name,salary,case when salary > 10000 then '大牛'
                              when salary > 8000 then '中牛'
                              when salary > 6000 then '小牛'
                              else '牛' end '薪资对比'
from employees
order by salary desc;
--也可以去掉else 
select last_name,salary,case when salary > 10000 then '大牛'
                              when salary > 8000 then '中牛'
                              when salary > 6000 then '小牛'
                              end '薪资对比'
from employees
order by salary desc;
--另外得一种情况 (case后面跟列名 when后面跟其条件,then后面跟符合条件的匹配结果)
select last_name,salary,department_id,case department_id when 10  then salary * 1.5
                              when 20 then salary * 1.8
                              when 30 then salary * 2.6
                              else salary * 1.2 
                              end '薪资对比'
from employees
order by salary desc;
-- 数据库字段加密方式 关键字password,md5,sha不可逆操作
-- MySQL8.0已经弃用
select password('aaabbb') '加密'
from DUAL
select md5('aaabbb') '加密',sha('aaabbb') '加密'
from DUAL
--经典例题
-- 查询超过1000天的员工姓名以及入职时间
select * from employees
select last_name, hire_date,if(DATEDIFF(CURDATE(), hire_date)>1000,DATEDIFF(CURDATE(), hire_date),null)
from employees

聚合函数

--聚合函数作用于一组数据,并对一组数据返回一个值。
/*AVG()
SUM()
MAX()
MIN()
COUNT()
GROUP BY +列名
可以使用GROUP BY子句将表中的数据分成若干组
*/
SELECT department_id,AVG(salary)
FROM employees
WHERE department_id > 80
GROUP BY department_id WITH ROLLUP;
--使用 WITH ROLLUP 关键字之后,
--在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。
--当使用ROLLUP时,不能同时使用ORDER BY子句进行结果排序,即ROLLUP和ORDER BY是互相排斥的。
/*过滤分组:HAVING子句要求:(和where具有同等作用-过滤)
使用了聚合函数。
HAVING 不能单独使用,必须要跟 GROUP BY 一起使用。
WHERE 子句中不能使用聚合函数
*/

有关查询MySQL数据库信息的一些函数


SELECT的执行过程

--方式1:
SELECT ...,....,...
FROM ...,...,....
WHERE 多表的连接条件
AND 不包含组函数的过滤条件
GROUP BY ...,...
HAVING 包含组函数的过滤条件
ORDER BY ... ASC/DESC
LIMIT ...,...
--方式2:
SELECT ...,....,...
FROM ... JOIN ...
ON 多表的连接条件
JOIN ...
ON ...
WHERE 不包含组函数的过滤条件
AND/OR 不包含组函数的过滤条件
GROUP BY ...,...
HAVING 包含组函数的过滤条件
ORDER BY ... ASC/DESC
LIMIT ...,...
/*#其中:
#(1)from:从哪些表中筛选
#(2)on:关联多表查询时,去除笛卡尔积
#(3)where:从表中筛选的条件
#(4)group by:分组依据
#(5)having:在统计结果中再次筛选
#(6)order by:排序
#(7)limit:分页
*/
--执行顺序
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT 的字段 -> DISTINCT -> ORDER BY -> LIMIT
目录
相关文章
|
4天前
|
存储 数据处理 数据库
深入了解达梦数据库的增删查改操作:从入门到精通
深入了解达梦数据库的增删查改操作:从入门到精通
|
2天前
|
数据库 Android开发
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
|
4天前
|
SQL Java 关系型数据库
零基础轻松入门Java数据库连接(JDBC)
零基础轻松入门Java数据库连接(JDBC)
13 0
|
4天前
|
安全 Java 数据库连接
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
|
4天前
|
存储 Oracle 关系型数据库
达梦数据库入门语法:从基础到进阶的指南
达梦数据库入门语法:从基础到进阶的指南
|
4天前
|
关系型数据库 数据库
Postgres数据库获取绝对值的函数
【5月更文挑战第4天】Postgres数据库获取绝对值的函数
24 6
|
4天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
4天前
|
SQL 关系型数据库 MySQL
【PHP开发专栏】PHP与数据库交互入门
【4月更文挑战第29天】本文介绍了PHP与数据库交互的基础,包括选择MySQL或PostgreSQL等关系型数据库,使用MySQLi或PDO扩展进行连接。示例展示了如何使用PHP连接数据库,如MySQLi的面向对象连接方式和PDO的多数据库支持。此外,还讲解了执行SQL查询(如SELECT、INSERT、UPDATE、DELETE)的操作,并强调了安全性与错误处理,如使用预处理语句防止SQL注入。通过学习,读者可掌握PHP操作数据库的基本技能。
|
4天前
|
存储 关系型数据库 MySQL
MySQL数据库实战:从入门到精通
本文介绍了MySQL的使用和优化,适合Web开发者阅读。首先,确保安装并配置好MySQL,熟悉SQL基础。接着,通过命令行客户端连接数据库,执行创建、查询、添加、修改和删除数据等操作。学习数据类型并创建表存储数据。最后,探讨了数据库优化,包括查询优化和索引使用,以提升性能。
28 2
|
4天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句