Oracle SQL语言培训教材
福建省电力公司
内部培训资料 | 2026年4月
目录
第一章:SQL语言基础
认识SQL与Oracle数据库,掌握基础架构与数
据类型
第二章:SQL核心查询与操作
深入学习数据的增删改查(CRUD),掌握核心
语法逻辑
第三章:SQL高级特性与函数
探讨聚合函数、多表连接与窗口函数等高级应
用
第四章:电力行业实战案例分析
结合电力业务场景,通过真实案例巩固所学知
识
SQL 数据库培训课程 · 2024
第一章
SQL语言基础
认识SQL与Oracle数据库
什么是SQL?
定义:全称Structured Query Language(结构化查询语言),是
管理和操作关系型数据库的标准语言。
核心功能:实现数据的查询、插入、更新、删除,以及数据库对
象(表、索引等)的创建与修改。
语言四大分类
DDL 数据定义
定义结构(CREATE/ALTER)
DML 数据操作
增删改数据(INSERT/UPD)
DQL 数据查询
查询数据(SELECT核心)
DCL 数据控制
权限管理(GRANT/REVOKE) “与数据库沟通的桥梁”
Oracle数据库简介
全球领先的企业级
关系型数据库管理系统
行业地位与声誉
全球顶尖的RDBMS,以极高的可靠性、安全性和卓越性能著称,是企业级
数据管理的首选标准。
核心技术特性
高可用性:支持RAC集群,保障7x24小时业务连续。
安全合规:提供多层级访问控制、透明加密及审计功能。
弹性扩展:线性扩展架构,从容应对业务数据爆发式增长。
电力行业深度应用
广泛支撑ERP、电网调度、电力营销及设备资产管理等核心业务系统,是
电力信息化建设的坚实基石。
第二章
SQL核心查询与操作
数据的增删改查
SELECT查询基础
基本语法结构
SELECT[DISTINCT] 列1, 列2, ..., *
FROM表名
[WHERE]条件
[ORDER BY]排序列 [ASC|DESC];
实战示例:查询员工信息
-- 从员工表中查询姓名和部门
SELECTEMP_NAME, DEPT_NAME
FROMEMPLOYEES;
关键字详解
SELECT:指定要查询的列,使用 * 可表示所有列
DISTINCT:可选参数,用于去除结果集中的重复行
FROM:指定数据来源的表名,是查询的基础
WHERE:可选参数,用于过滤满足特定条件的数据
ORDER BY:可选参数,对查询结果进行升序(ASC)或降序
(DESC)排序
条件查询与排序
条件查询 (WHERE)
• 比较运算:使用 =, >, <, >=, <=, <> 进行筛选
• 逻辑组合:使用 AND, OR, NOT 连接多个条件
• 模糊查询:使用 LIKE,%匹配任意,_匹配单个
SELECTFROMEMPLOYEES
WHERESALARY > 5000ANDGENDER = '男';
示例:查询薪资大于5000的男性员工
排序 (ORDER BY)
• 排序规则:对查询结果进行升序或降序排列
• 关键字:ASC升序(默认),DESC降序
• 多列排序:可指定多个字段依次排序
SELECTFROMEMPLOYEES
ORDER BYSALARYDESC;
示例:按薪资降序排列所有员工
数据插入、更新与删除
插入数据 (INSERT)
INSERT INTO 表名 (列1, 列2...)
VALUES (值1, 值2...);
示例:插入一条新员工记录
INSERT INTO EMPLOYEES
(EMP_ID, EMP_NAME, DEPT_ID)
VALUES (1001, '张三', 10);
更新数据 (UPDATE)
UPDATE 表名 SET 列1=值1...
WHERE 条件;
示例:更新员工1001的薪资
UPDATE EMPLOYEES
SET SALARY = 6500
WHERE EMP_ID = 1001;
删除数据 (DELETE)
DELETE FROM 表名
WHERE 条件;
示例:删除员工1001的记录
DELETE FROM EMPLOYEES
WHERE EMP_ID = 1001;
重要提醒:执行 UPDATE 和 DELETE 操作时,务必加上 WHERE 条件,否则会更新或删除表中所
有数据!
第三章
SQL高级特性与函数
聚合、连接与常用函数
聚合函数与分组查询
常用聚合函数
• SUM(列):对指定列的值求和
• AVG(列):计算指定列的平均值
• COUNT(*):统计表中总行数
• MAX(列) / MIN(列):求列的最大/最小值
分组查询 (GROUP BY)
将数据按照指定的列进行逻辑分组,对每个分组独立应用聚
合函数进行统计。
过滤分组 (HAVING)
在分组统计后对结果集进行过滤,功能类似 WHERE,但专
门作用于分组后的结果。
Ὃ� 示例:统计部门人数与平均薪资(人数>5)
SELECTDEPT_ID,
COUNT(*)ASEMP_COUNT,
AVG(SALARY)ASAVG_SALARY
FROMEMPLOYEES
GROUP BYDEPT_ID
HAVINGCOUNT(*) > 5;
Ὃ� 核心逻辑:
先 FROM 取表 -> GROUP BY 分组 -> 聚合计算 -> HAVING 筛
选结果 -> SELECT 展示
多表连接查询
核心连接类型
内连接 (INNER JOIN)
仅返回两个表中满足连接条件的匹配记录(交集)。
左连接 (LEFT JOIN)
返回左表所有记录,以及右表中匹配的记录(左表全量)。
右连接 (RIGHT JOIN)
返回右表所有记录,以及左表中匹配的记录(右表全量)。
连接条件:使用 ON 子句指定关联字段(如外键),精
准关联多表。
实战示例:查询员工与部门
_NAME, _NAME
FROMEMPLOYEES E
INNER JOINDEPARTMENTS D
_ID = _ID;
语法结构参考
常用单行函数
字符函数
UPPER(str):转换为大写
LOWER(str):转换为小写
SUBSTR(s,p,l):截取子串
LENGTH(str):返回长度
数字函数
ROUND(n, d):四舍五入
TRUNC(n, d):直接截断
MOD(n1, n2):取模(余数)
日期函数
SYSDATE:当前系统时间
ADD_MONTHS:日期加减月
TO_CHAR:转指定格式
实战示例:将员工姓名转换为大写,并计算其入职天数
SELECTUPPER(EMP_NAME),TRUNC(SYSDATE - HIRE_DATE)ASDAYS_EMPLOYED
FROMEMPLOYEES;
子查询与集合操作
子查询 (Subquery)
• 嵌套在另一个SQL语句中的内部查询
• 可用于 WHERE、FROM、SELECT 等子句
• 常用于解决复杂的依赖关系查询
-- 示例:查询薪资高于平均薪资的员工
SELECT * FROM EMPLOYEES
WHERE SALARY > (SELECT AVG(SALARY) FROM
EMPLOYEES);
集合操作 (Set Operations)
• UNION:合并并去重 /UNION ALL:合并不去重
• INTERSECT:返回两个结果集的交集
• MINUS:返回两个结果集的差集
-- 示例:合并两个部门的员工列表
SELECT EMP_NAME FROM EMP WHERE DEPT_ID = 10
UNIONSELECT EMP_NAME FROM EMP WHERE DEPT_ID =
20;
核心要点:子查询用于处理“先有鸡还是先有蛋”的依赖逻辑;集合操作则是对多个独立结果集进行数学集合运算。
第四章
电力行业实战案例分析
结合业务场景的 SQL 深度应用与解决方案
案例一:设备台账管理
业务场景描述
管理电力设备的基本信息,包括设备ID、名称、类型、状态、安装日期等核心资产数据,为运维提供基础支撑。
建表语句 (DDL)
CREATE TABLE EQUIPMENT (
EQ_ID INT PRIMARY KEY,
EQ_NAME VARCHAR2(100),
EQ_TYPE VARCHAR2(50), STATUS VARCHAR2(20),
INSTALL_DATE DATE
);
查询示例 (DQL)
-- 1. 查询所有运行中的设备
SELECT * FROM EQUIPMENT WHERE STATUS = '运行中';
-- 2. 统计各类型设备数量
SELECT EQ_TYPE, COUNT(*) FROM EQUIPMENT GROUP BY
EQ_TYPE;
通过结构化查询语言(SQL),我们可以高效地完成设备数据的存储与检索,实现从“台账登记”到“状态监控”的数字化闭环。
案例二:用电数据统计
业务场景:统计用户的用电数据,分析用电趋势,为制定电价策略和用电优化提供数据支持。
建表语句 (DDL)
CREATE TABLEELECTRIC_USAGE(
USER_IDINT,
USAGE_DATEDATE,
USAGE_AMOUNTNUMBER(10,2)
);
统计示例:用户2023年各月用电量统计SELECT
TO_CHAR(USAGE_DATE, 'YYYY-MM') ASMONTH,
SUM(USAGE_AMOUNT) ASTOTAL_USAGE
FROMELECTRIC_USAGE
WHERE USER_ID = 1001 AND USAGE_DATE BETWEEN TO_DATE('2023-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-
31', 'YYYY-MM-DD')
GROUP BY TO_CHAR(USAGE_DATE, 'YYYY-MM')
ORDER BYMONTH;
案例三:故障数据分析
业务场景 记录电网故障信息,分析故障原因和频率,为设备维护和改进提供数据支持。
建表语句 (DDL)
CREATE TABLEFAULT_RECORDS (
FAULT_IDINT,
EQ_IDINT,
FAULT_DATEDATE,
FAULT_REASONVARCHAR2(200)
);
分析示例 (Query)
SELECTFAULT_REASON,COUNT(*)ASCNT
FROMFAULT_RECORDS
GROUP BYFAULT_REASON
ORDER BYCNTDESC;
核心价值:通过分组统计故障原因,快速识别高频故障点,辅助制定精准的运维策略。
SQL性能优化简介
合理使用索引
为查询条件、排序、分组的列建立索引,显著提升查询速度。
避免全表扫描
避免在WHERE子句中使用SELECT *和对列进行函数操作,防止索引失效。
优化 JOIN 语句
确保连接条件使用的列有索引,避免不必要的笛卡尔积。
限制结果集
使用 ROWNUM 或 FETCH FIRST 限制返回行数,按需获取数据。
分析执行计划
使用 EXPLAIN PLAN 分析执行路径,精准定位性能瓶颈。
总结与回顾
SQL基础
SQL定义与分类
Oracle数据库
基础架构介绍
核心操作
SELECT基础查询
条件与排序筛选
增删改(CRUD)操作
高级特性
聚合函数与分组
多表连接查询
子查询与集合操作
实战应用
电力设备台账管理
用电数据统计分析
故障原因深度排查
性能优化
索引创建与使用
避免全表扫描
执行计划分析原则
“将理论知识融会贯通,高效解决电力行业数据处理与分析问题”
Q & A
问答环节
欢迎提出疑问或建议,我们将逐一解答
感谢聆听
T H A N K S F O R L I S T E N I N G
福建省电力公司 | 2026年4月