Oracle 数据库知识整理

一、Oracle 与 MySQL 对比

对比项 Oracle MySQL
适用场景 大型数据库 中小型数据库
开源情况 不开源 开源
收费情况 收费 免费
内存占用 默认物理内存的1/8 几百MB
默认端口 1521 3306

二、Oracle 安装与配置

2.1 安装注意事项

  1. 安装顺序:先安装 Oracle11g,再安装 PLSQL_Developer
  2. 重要提示
    • 安装路径不能包含中文
    • 严格按照视频教程步骤安装
    • 新手安装失败率较高

2.2 配置服务

需要启动的两个核心服务:

  1. OracleServiceORCL
  2. OracleOraDb11g_home1TNSListener

注:默认自动启动,如无问题无需手动配置

三、用户创建与授权

3.1 用户类型

账户类型 描述 功能
sysdba 数据库管理员 启停服务器、备份恢复、日志归档、会话限制、管理功能、创建数据库等
sysoper 数据库操作员 启停服务器、备份恢复、日志归档、会话限制
normal 普通用户 无权限(需授权后才能操作)

3.2 默认账户

用户名 密码设置 类型 说明
sys 安装时设 sysdba, sysoper 最高权限账户
system 安装时设 normal (有dba角色) 普通用户但有管理员权限

3.3 用户管理命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- 创建账户
CREATE USER username IDENTIFIED BY password;

-- 修改密码
ALTER USER username IDENTIFIED BY new_password;

-- 删除用户
DROP USER username CASCADE;

-- 查询所有用户
SELECT * FROM all_users;

-- 授权
GRANT privilege TO user;

-- 撤销授权
REVOKE privilege FROM user;

四、数据类型

类型 说明 限制条件
CHAR 固定长度字符串 最大2000 bytes
VARCHAR2 可变长度字符串 最大4000 bytes
DATE 日期(日-月-年) YYYY-MM-DD (时间可选)
TIMESTAMP 时间戳(精确到微秒) YYYY-MM-DD HH24:MI:SS.ff
NUMBER(P,S) 数字类型(P:总位数,S:小数位)
INTEGER 整数类型
FLOAT 浮点数类型

注:VARCHAR2中文占2字节,英文占1字节

五、SQL分类

5.1 DDL (数据定义语言)

  • CREATE / ALTER / DROP / CREATE VIEW

5.2 DML (数据操作语言)

  • INSERT / UPDATE / DELETE

Oracle特殊语法:

  • 自增字段:使用SEQUENCE替代AUTO_INCREMENT
  • dual:系统虚表,当不确定操作表时使用

5.3 DQL (数据查询语言)

  • SELECT

查询运算符:

  1. 算术运算符:+ - * /
  2. 连接符:||&&CONCAT(arg1,arg2)
  3. 比较运算符:<,>,<=,>=,=,!=,<>,is,is not,in,not,between..and,like
  4. 通配符:
    • %:匹配任意多个字符
    • _:匹配1个字符
  5. 其他:
    • AS:起别名
    • DISTINCT:去重
    • ORDER BY:排序(ASC默认/DESC)
    • GROUP BY:分组

5.4 多表查询

(内容待补充)

六、视图

6.1 视图特点

  • 虚拟表(存储的SELECT语句)
  • 基于基表创建
  • 不存储实际数据

6.2 视图作用

  1. 封装复杂查询
  2. 隐藏敏感字段

七、索引

7.1 索引作用

  • 加快数据检索速度
  • 通过ROWID快速定位数据
  • 减少磁盘IO

7.2 创建原则

适合创建索引的情况

  • 频繁SELECT操作的表
  • 大表且数据分布广
  • 字段常出现在WHERE或连接条件中

不适合创建索引的情况

  • 频繁INSERT/UPDATE/DELETE的表
  • 小表或不常作为查询条件的字段

注:主键/唯一约束字段会自动创建索引

八、事务

8.1 事务支持对比

特性 Oracle MySQL(InnoDB)
事务支持 完全支持 仅InnoDB支持
默认提交方式 不自动提交 自动提交

8.2 事务问题

  • 脏读
  • 不可重复读
  • 幻读
  • 覆盖更新

8.3 ACID原则

  1. 原子性(Atomicity)
  2. 一致性(Consistency)
  3. 隔离性(Isolation)
  4. 持久性(Durability)

8.4 隔离级别

  1. SERIALIZABLE(序列化)
  2. REPEATABLE READ(可重复读)
  3. READ COMMITTED(读已提交)
  4. READ UNCOMMITTED(读未提交)

九、锁机制

9.1 锁级别

  1. 行级锁
    • 对查询数据加排他锁
    • 锁定期间其他用户不能修改
  2. 表级锁
    • 共享锁:允许查询,禁止修改
    • 共享更新锁:允许查询和更新未锁定行
    • 排他锁:仅允许查询,禁止所有修改
1
undefined