插件窝 干货文章 oracle数据库从入门到实战

oracle数据库从入门到实战

Oracle employees SQL salary 395    来源:    2025-03-29

Oracle数据库从入门到实战指南

一、Oracle数据库基础

1. Oracle数据库简介

  • Oracle关系型数据库管理系统(RDBMS)特点
  • Oracle产品系列(企业版、标准版、快捷版等)
  • Oracle架构概览(实例、数据库、表空间等概念)

2. 安装与配置

  • 系统需求与准备工作
  • Oracle数据库安装步骤(Windows/Linux)
  • 数据库创建向导(DBCA)使用
  • 初始配置与网络服务配置

3. 基本管理工具

  • SQL*Plus基础使用
  • Oracle SQL Developer安装与使用
  • Oracle Enterprise Manager(OEM)简介

二、SQL语言基础

1. 数据定义语言(DDL)

-- 创建表
CREATE TABLE employees (
    emp_id NUMBER PRIMARY KEY,
    emp_name VARCHAR2(50) NOT NULL,
    hire_date DATE DEFAULT SYSDATE,
    salary NUMBER(10,2),
    dept_id NUMBER
);

-- 修改表结构
ALTER TABLE employees ADD (email VARCHAR2(100));

-- 删除表
DROP TABLE employees PURGE;

2. 数据操作语言(DML)

-- 插入数据
INSERT INTO employees VALUES (1, '张三', TO_DATE('2020-01-15', 'YYYY-MM-DD'), 8500, 10);

-- 更新数据
UPDATE employees SET salary = salary * 1.1 WHERE dept_id = 10;

-- 删除数据
DELETE FROM employees WHERE emp_id = 1;

3. 数据查询语言(DQL)

-- 基本查询
SELECT emp_id, emp_name, salary FROM employees WHERE salary > 5000;

-- 连接查询
SELECT e.emp_name, d.dept_name 
FROM employees e JOIN departments d ON e.dept_id = d.dept_id;

-- 聚合函数
SELECT dept_id, AVG(salary) avg_salary 
FROM employees 
GROUP BY dept_id 
HAVING AVG(salary) > 6000;

三、Oracle高级特性

1. PL/SQL编程

-- 存储过程示例
CREATE OR REPLACE PROCEDURE raise_salary (
    p_dept_id IN NUMBER,
    p_percent IN NUMBER
) AS
BEGIN
    UPDATE employees 
    SET salary = salary * (1 + p_percent/100)
    WHERE dept_id = p_dept_id;
    COMMIT;
    DBMS_OUTPUT.PUT_LINE('薪资调整完成');
EXCEPTION
    WHEN OTHERS THEN
        ROLLBACK;
        DBMS_OUTPUT.PUT_LINE('错误: ' || SQLERRM);
END raise_salary;
/

-- 触发器示例
CREATE OR REPLACE TRIGGER trg_emp_audit
BEFORE INSERT OR UPDATE OR DELETE ON employees
FOR EACH ROW
BEGIN
    IF INSERTING THEN
        INSERT INTO emp_audit VALUES ('INSERT', :new.emp_id, SYSDATE, USER);
    ELSIF UPDATING THEN
        INSERT INTO emp_audit VALUES ('UPDATE', :old.emp_id, SYSDATE, USER);
    ELSIF DELETING THEN
        INSERT INTO emp_audit VALUES ('DELETE', :old.emp_id, SYSDATE, USER);
    END IF;
END;
/

2. 索引与性能优化

-- 创建索引
CREATE INDEX idx_emp_dept ON employees(dept_id);

-- 复合索引
CREATE INDEX idx_emp_name_dept ON employees(emp_name, dept_id);

-- 函数索引
CREATE INDEX idx_emp_upper_name ON employees(UPPER(emp_name));

-- 执行计划查看
EXPLAIN PLAN FOR SELECT * FROM employees WHERE dept_id = 10;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

3. 分区表

-- 范围分区
CREATE TABLE sales (
    sale_id NUMBER,
    sale_date DATE,
    amount NUMBER(10,2),
    region VARCHAR2(50)
) PARTITION BY RANGE (sale_date) (
    PARTITION sales_q1 VALUES LESS THAN (TO_DATE('01-APR-2023', 'DD-MON-YYYY')),
    PARTITION sales_q2 VALUES LESS THAN (TO_DATE('01-JUL-2023', 'DD-MON-YYYY')),
    PARTITION sales_q3 VALUES LESS THAN (TO_DATE('01-OCT-2023', 'DD-MON-YYYY')),
    PARTITION sales_q4 VALUES LESS THAN (TO_DATE('01-JAN-2024', 'DD-MON-YYYY')),
    PARTITION sales_future VALUES LESS THAN (MAXVALUE)
);

-- 查询特定分区
SELECT * FROM sales PARTITION(sales_q1);

四、数据库管理实战

1. 用户与权限管理

-- 创建用户
CREATE USER app_user IDENTIFIED BY "P@ssw0rd"
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 100M ON users;

-- 授予权限
GRANT CONNECT, RESOURCE TO app_user;
GRANT SELECT, INSERT ON employees TO app_user;

-- 创建角色
CREATE ROLE hr_clerk;
GRANT SELECT, INSERT, UPDATE ON employees TO hr_clerk;
GRANT hr_clerk TO app_user;

2. 备份与恢复

-- RMAN备份示例
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

-- 表空间备份
RMAN> BACKUP TABLESPACE users;

-- 数据泵导出(expdp)
expdp system/password DIRECTORY=dpump_dir DUMPFILE=employees.dmp TABLES=hr.employees

-- 数据泵导入(impdp)
impdp system/password DIRECTORY=dpump_dir DUMPFILE=employees.dmp TABLES=hr.employees

3. 性能监控与调优

-- 查看锁等待
SELECT * FROM v$session WHERE blocking_session IS NOT NULL;

-- 查看资源消耗高的SQL
SELECT sql_id, executions, buffer_gets, disk_reads, elapsed_time/1000000 elapsed_sec
FROM v$sqlarea
ORDER BY buffer_gets DESC;

-- AWR报告生成
SQL> @?/rdbms/admin/awrrpt.sql

五、实战项目案例

1. 电商系统数据库设计

  • 用户表设计
  • 商品表设计
  • 订单表设计
  • 支付系统设计
  • 库存管理设计

2. 数据仓库构建

  • 星型模型设计
  • 物化视图应用
  • ETL流程设计
  • 分区表应用
  • 并行查询优化

3. 高可用解决方案

  • Oracle RAC配置
  • Data Guard部署
  • Golden Gate实时复制
  • 故障转移测试

六、学习资源推荐

1. 官方文档

  • Oracle Database Concepts
  • Oracle Database Administrator's Guide
  • Oracle Database SQL Language Reference

2. 推荐书籍

  • 《Oracle Database 12c SQL 官方指南》
  • 《Oracle PL/SQL程序设计》
  • 《Oracle性能诊断艺术》

3. 在线资源

  • Oracle官方学习路径(learning.oracle.com)
  • Oracle社区论坛(community.oracle.com)
  • Oracle技术网(oracle-base.com)

七、学习路径建议

  1. 初级阶段(1-3个月)

    • 掌握SQL基础
    • 理解Oracle架构
    • 学习基本管理操作
  2. 中级阶段(3-6个月)

    • 深入PL/SQL编程
    • 学习性能调优
    • 掌握备份恢复技术
  3. 高级阶段(6个月以上)

    • 高可用解决方案
    • 数据仓库设计
    • 云数据库管理

通过系统学习和实践,您将能够掌握Oracle数据库从基础到实战的各项技能,为成为专业的Oracle DBA或开发人员打下坚实基础。