news 2026/8/27 10:26:25

Oracle数据库1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Oracle数据库1

1. 执行顺序:
FROM > ON > JOIN > WHERE > GROUP BY > HAVING > SELECT > ORDER BY


2. 模糊查询:
LIKE + %(通配符) 如:LIKE '%A%'
LIKE + _(占位符) 如:LIKE 'A__'

3.

IN

NOT IN

JOB IN ('SALESMAN','CLERK')

4.

BETWEEN ... AND ...

NOT BETWEEN... AND ...

5.查询去重 DISTINCT

SELECT DISTINCT DEPTNO,JOB FROM EMP

6.查询排序 ORDER BY

ASC 升序可以省略,默认由小到大排序即升序排列;

DESC 降序

SELECT EMPNO,ENAME,DEPTNO,SAL FROM EMP

ORDER BY DEPTNO,SAL DESC;

7. 关键词:

SELECT

FROM

WHERE

GROUP BY

HAVING

ORDER BY

VARCHAR2

NUMBER

DATE

SUM()、和

AVG()、平均值

COUNT()、总个数

MAX()、最大值

MIN()、最小值

MEDIAN() 中间值

OVER() 开窗函数:

SELECT EMPNO,ENAME,SAL,SUM(SAL)OVER() FROM EMP;

8. 去null

NVL(COMM,0)

9. 约束

PRIMARY KEY 主键约束

NOT NULL 非空约束

DEFAULT 0 无约束,默认为0

DEFAULT SYSDATE 添加系统时间为默认入职时间

10.

①加别名 AS

SELECT SUM(SAL) AS 合计工资,

AVG(SAL) 平均工资, -- 这里省略了 AS

COUNT(*) AS CT, -- 工作中表头和表名尽量用英文表示

MAX(SAL) AS MAX_SAL1, -- 可以使用英文 + 下划线 + 数字表示,注意不能数字开头

FROM EMP;

②虚拟列 AS

CREATE TABLE PRORE(ID NUMBER,

名称 VARCHAR2(20),

数量 NUMBER,

单价 NUMBER,

金额 AS (数量 * 单价), -- 虚拟列:由数量乘以单价得来

其他名称 AS (名称||'国产') -- 虚拟列:由名称拼接国产得来

);

SELECT * FROM PRORE;

11. ASCII码

12. 删除语句:

----删除表结构和数据:DORP (DDL)

----删除指定条件数据语句:DELETE (DML)

----删除所有数据语句:TRUNCATE (DDL)不能回滚

13.

① CONSTRAINT 限制

② COMMIT; 提交

( TCL 语句)

③ ROLLBACK; 回滚

④ COMMENT 注释

COMMENT ON TABLE EMP240515 IS '这是一个员工表,用于存储员工的相关信息';--给表添加注释

COMMENT ON COLUMN EMP240515.EMPNO IS '这是一个员工号';--给EMMPNO添加注释

COMMENT ON COLUMN EMP240515.HIREDATE IS '默认获取系统时间为入职时间';--给HIREDATE添加注释

14. 集合:

UNION ALL(并集),

UNION(并集),

INTERSECT(交集),

MINUS(补集)

SELECT DEPTNO FROM DEPT --4 A

MINUS

SELECT DEPTNO FROM EMP --14 B A-B

15. 分组拼接明细数据: LISTAGG

SELECT JOB,COUNT(*),SUM(SAL),

LISTAGG(ENAME,' , ')WITHIN GROUP(ORDER BY SAL) AS ENAME,

LISTAGG(SAL,' < ')WITHIN GROUP(ORDER BY SAL) AS SAL

FROM EMP

GROUP BY JOB

-- MYSQL分组拼接明细数据

SELECT JOB,GROUP_CONCAT(ENAME SEPARATOR ',')

FROM EMP

GROUP BY JOB;

ORACLE函数

分为系统函数和自定义函数

--系统函数又分为:单行函数、聚合函数、开窗函数/分析函数

--单行函数又分为:数字函数、字符函数、日期函数

--数字函数

①ABS() --取绝对值

②ROUND(X,Y) --对数字X保留Y位小数,并进行四舍五入

SELECT ROUND(3.146,2) FROM DUAL; --3.15

SELECT ROUND(3.141) FROM DUAL; --3

③TRUNC(X,Y) --对数字X保留Y位小数,但不会进行 四舍五入

SELECT TRUNC(3.146,2) FROM DUAL; --3.14

SELECT TRUNC(3.646) FROM DUAL; --3

④POWER(X,Y) --返回X的Y次方,求幂

SELECT POWER(3,2) FROM DUAL; --9

⑤MOD(X,Y) --对X取Y的余数

SELECT MOD(5,2) FROM DUAL ; --1

--日期函数

--日期-日期=天数

系统时间:SYSDATE

SELECT SYSDATE - TO_DATE('2026-8-1','YYYY-MM-DD') FROM DUAL;

--日期+数字=日期

SELECT SYSDATE + 7 FROM DUAL; --2026/8/31 9:37:12

①ROUND(日期,截取单位)

SELECT ROUND(TO_DATE('20260824133423','YYYYMMDDHH24MISS'),'DD') FROM DUAL; --2026/8/25

SELECT ROUND(TO_DATE('20260813','YYYYMMDD'),'MM') FROM DUAL; --2026/8/01

SELECT ROUND(TO_DATE('20260413','YYYYMMDD'),'YYYY') FROM DUAL;--2026/1/01

②TRUNC(日期,截取单位) --用法跟ROUND一致,唯一区别是TRUNC不会四舍五入

③ADD_MONTHS(日期,数字) --返回几个月之后的当前时间

SELECT ADD_MONTHS(SYSDATE,2) FROM DUAL; --2026/10/24 9:45:55

SELECT ADD_MONTHS(SYSDATE,-2) FROM DUAL; --2026/6/24 9:46:10

④LAST_DAY(日期) --返回日期对应月份的最后一天

SELECT LAST_DAY(SYSDATE) FROM DUAL;

⑤MONTHS_BETWEEN(日期,日期) --返回两个日期相差的月份数

SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('20260521','YYYYMMDD')) FROM DUAL; --3.11084826762246

--字符函数

LENGTH() --返回字符串的长度

SELECT LENGTH('SCOTT') FROM DUAL; --5

--去空值时好用

REPLACE(X,Y,Z) --将字符串X中的Y替换成Z,Z不写默认替换成空值

SELECT REPLACE('SCOTT','S','T') FROM DUAL;

INSTR(X,Y,Z,M) --查找字符串X中字符Y的位置,从第Z为开始找,找第M次出现Y的位置

--示例:查找字符串'ABCDEFCG'中第一次出现C的位置

SELECT INSTR('ABCDEFCG','C',1,1) FROM DUAL; --3

SELECT INSTR('ABCDEFCG','C',4,2) FROM DUAL; --0

SUBSTR(X,Y,Z)

--截取函数,对字符串X进行截取,从第Y为开始截

--截取Z为长度,Y为负数时表示从右往左数,Z不写表示截取第Y为之后的所有字符

SELECT SUBSTR('20260824',1,4) FROM DUAL;

--2026

⑥CONCAT(X,Y) --拼接字符串X和Y,一次只能拼接两个参数

SELECT CONCAT('2026','08') FROM DUAL;

--202608

SELECT CONCAT(CONCAT('2026','08'),'24') FROM DUAL;

--20260824

⑦|| --管道符,也可以拼接多个字符串

WM_CONCAT() --拼接整个字段的值,默认用逗号拼接:

SELECT WM_CONCAT(ENAME) FROM EMP;

将EMP表的工作用横杠"-"拼接起来,并且不能重复

--输出:CLERK-SALESMAN-MANAGER-ANALYST-PRESIDENT

SELECT REPLACE(WM_CONCAT(DISTINCT JOB),',','-') FROM EMP

UPPER() 小写转大写

LOWER() 大写转小写

TRIM() --去左右空格

SELECT TRIM(' A B C ') FROM DUAL; --A B C

LTRIM() --去左空格

SELECT LTRIM(' A B C ') FROM DUAL; --A B C

RTRIM() --去右空格

SELECT RTRIM(' A B C ') FROM DUAL; -- A B C

--函数总结:

分析函数/开窗函数:可以同时输出明细数据和聚合值

主要有聚合型和非聚合型

--聚合型

SUM/AVG/MAX/MIN/COUNT()OVER([PARTITION BY ...][ORDER BY ...])

--加了ORDER BY 有累计效果

--非聚合型

RATIO_TO_REPORT()OVER([PARTITION BY ...]) --占比函数

FIRST_VALUE()OVER([PARTITION BY ...][ORDER BY ...]) --取第一个值

NTILE()OVER([PARTITION BY ...][ORDER BY ...]) --切片函数

WM_CONCAT()OVER([PARTITION BY ...][ORDER BY ...]) --拼接函数

--排名

ROW_NUMBER()OVER([PARTITION BY ...][ORDER BY ...]) --不考虑并列,1 2 3 4

RANK()OVER([PARTITION BY ...][ORDER BY ...]) --考虑并列,并空出排名,1 2 2 4

DENSE_RANK()OVER([PARTITION BY ...][ORDER BY ...]) --考虑并列,不会空出排名,1 2 2 3

--偏移

LAG()OVER([PARTITION BY ...][ORDER BY ...]) --向上偏移

LEAD()OVER([PARTITION BY ...][ORDER BY ...]) --向下偏移

--注意:分析函数不能直接用在WHERE之后,一般分析函数不会跟GROUP BY 一起使用

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 10:26:09

机器人运动会技术拆解:ROS2导航避障与视觉识别实战

这篇不从新闻角度讨论事件&#xff0c;只从开发视角聊一件事&#xff1a;机器人运动会背后到底考的是什么技术。媒体镜头里是一台台跑动、抓取、避障的机器人&#xff0c;但落到开发者面前&#xff0c;核心是一条完整的链路&#xff1a;机器人怎么选型&#xff0c;导航怎么跑通…

作者头像 李华
网站建设 2026/8/27 10:24:33

紧凑型电源管理IC如何实现超低待机功耗?

1. 项目概述这颗标题非常典型&#xff0c;一看就是半导体行业的新品发布稿或者产品选型参考&#xff1a;紧凑型电源管理IC&#xff0c;核心卖点是低待机功耗。这两年全球都在推能效法规&#xff0c;从消费电子到工业传感器&#xff0c;谁都希望设备在“睡觉”的时候少耗电&…

作者头像 李华
网站建设 2026/8/27 10:24:07

i.MX8 QuadMax SoM模块化方案:从选型到量产的关键技术要点

看到 Variscite 发布了两款基于 i.MX8 QuadMax 的模块&#xff0c;我第一反应是&#xff1a;这颗高端芯片终于不用再“求”着画底板了。i.MX8 QuadMax 在 NXP 的 i.MX8 系列里属于性能顶配&#xff0c;带四核 A75、双核 A53 加双核 M4F&#xff0c;旁边还挂着 GPU、VPU、ISP&am…

作者头像 李华
网站建设 2026/8/27 10:23:45

C++模板编程:从泛型到元编程的核心原理与实战技巧

1. 项目概述&#xff1a;为什么C模板是“元编程”的基石&#xff1f; 聊到C&#xff0c;很多人会先想到指针、内存管理、面向对象&#xff0c;但真正让C在性能和抽象能力上独树一帜的&#xff0c;其实是它的模板系统。我刚开始学C时&#xff0c;也觉得模板这东西神神秘秘的&…

作者头像 李华
网站建设 2026/8/27 10:23:17

别迷信 Star!三款 Vue3 后台脚手架深度对比

不等于长期业务开发效率的是高 Star, 大量开发者在选型时仅仅去看热度, 却忽略了 CRUD 日常开发当中真实存在的痛点, vben-admin、pure-admin 常年有着数万的 star, 另有一款 -admin 热度少得可怜, 然而日常开发体验的差距极大, 很多团队踩坑, 根源就是在选型时只看热度, 本文从…

作者头像 李华
网站建设 2026/8/27 10:22:24

Web前端工程师的全面指南:职责、要求、技术与面试准备

处于当下数字化时代当中, Web前端工程师起着相当关键的作用, 他们承担构建用户界面这个任务, 要保证网站以及应用程序的交互能够顺畅, 视觉效果好看, 还有与后端系统相连, 随着技术快速发展, 前端领域从单纯的HTML页面转变成为复杂度高的单页应用也就是SPA以及跨平台解决方案, …

作者头像 李华