Oracle SQL常用操作语法与数据库对象速查

小石头
小石头
发布时间:2026-10-14 | 4人浏览过
原创

本文系统梳理了Oracle数据库中的核心SQL语法,覆盖数据增删改(DML)、表结构定义(DDL)、复杂查询技巧及权限控制(DCL)。内容旨在为开发者提供一份关于Oracle对象管理与日常操作的实用参考。

一、数据控制语句 (DML)

第1步:插入记录 (INSERT)

向数据表中添加新记录时,需遵循以下规范:

  • 基本语法:INSERT INTO 表名(字段1, 字段2) VALUES (值1, 值2);
  • 从其他表复制:INSERT INTO 表名 SELECT ... FROM 另外的表;
  • 字符串处理:字段值必须使用单引号。若值中包含单引号,需替换为两个单引号 ''。
  • 日期处理:可使用系统时间 SYSDATE 或函数 TO_DATE('2001-08-01','YYYY-MM-DD')。完整格式建议为 YYYY-MM-DD HH24:MI:SS。
  • 长文本:普通字符限制约4000字节,超长内容请使用CLOB类型配合 DBMS_LOB 包。
  • 自增序列:先创建序列(如 CREATE SEQUENCE seq_name INCREMENT BY 1 START WITH 1 MAXVALUE 99999 NOCACHE;),插入时调用 seq_name.NEXTVAL。

第2步:删除记录 (DELETE & TRUNCATE)

清除数据有两种方式,需注意其行为差异:

  • DELETE:DELETE FROM 表名 WHERE 条件;。仅标记数据块为未使用,不释放空间,支持回滚。
  • TRUNCATE:TRUNCATE TABLE 表名;。直接释放数据块占用的表空间,性能更高,但操作不可回退,用于清空全表。

第3步:修改记录 (UPDATE)

更新现有数据:UPDATE 表名 SET 字段=值 WHERE 条件;。

风险提示:未赋值可能导致原值被设为NULL。执行前务必进行非空校验和长度检查,防止截断错误。

二、事务控制与执行规范

DML操作会对表施加行级锁,为确保数据一致性与性能,请遵循以下流程:

  1. 确认范围:估算影响行数,尽量将单次事务控制在较小范围(如一万条以内)。
  2. 分批提交:若涉及十万级以上记录,建议分段执行并在每段后执行 COMMIT,以避免过大回退段导致系统响应缓慢。
  3. 异常回滚:若操作失败或发现错误,可执行 ROLLBACK 撤销更改。

三、数据定义语句 (DDL)

第1步:创建表 (CREATE)

建表时需合理规划字段类型与约束:

  • 常用数据类型:CHAR(固定长度)、VARCHAR2(可变长度)、NUMBER(M,N)(数值型)、DATE(日期)。
  • 优化建议:将非空且较短的字段置于前面,可为空字段置后;建议使用英文命名,并设置默认值(如 DEFAULT SYSDATE)自动记录时间。

第2步:修改表结构 (ALTER)

通过ALTER命令调整已有对象:

  • 重命名:ALTER TABLE 旧名 TO 新名;(注:标准语法通常为 RENAME 旧名 TO 新名 或特定版本下的ALTER用法,此处依原文整理)。
  • 增删改列:ADD 增加字段,MODIFY 修改字段描述。
  • 约束管理:ADD CONSTRAINT ... PRIMARY KEY 添加主键,UNIQUE 添加唯一约束。
  • 内存缓存:CACHE 或 NOCACHE 控制表是否在内存区常驻。

第3步:删除对象 (DROP & TRUNCATE)

DROP 彻底删除对象:DROP TABLE 表名 CASCADE CONSTRAINTS; 同时解除相关依赖约束。
TRUNCATE 清空数据但保留结构:TRUNCATE TABLE 表名;。

四、查询语句 (SELECT) 进阶技巧

第1步:基础查询与函数应用

除标准 SELECT ... FROM ... WHERE 外,常利用内置函数处理数据:

  • 聚合与统计:COUNT(*), MIN/MAX, AVG, DISTINCT.
  • NVL:处理空值,NVL(expr1, expr2) 若expr1为空则返回expr2。
  • DECODE:实现类似IF-ELSE的逻辑,DECODE(字段, v1, r1, v2, r2, ...)。
  • LPAD:左填充字符,不足位数用指定字符补齐。

第2步:高级连接与集合操作

  • 内连接:通过 WHERE 表A.字段 = 表B.字段 关联。
  • 外连接:在关联字段旁加 (+) 号,自动补空值。
  • 集合运算:UNION(去重)、UNION ALL(保留重复)、MINUS(差集)、INTERSECT(交集)。

第3步:排序与分组

使用 ORDER BY 配合 ASC/DESC 排序;使用 GROUP BY 配合 HAVING 对分组结果筛选。模糊匹配推荐使用 LIKE 'xxx%' 或 INSTR(字段, '字符串') > 0。

五、常用数据对象 (SCHEMA)

第1步:索引 (INDEX)

提升查询速度,但会增加写入开销:

  • 创建与维护:CREATE INDEX idx_name ON table(col);,重建用 ALTER INDEX ... REBUILD。
  • 最佳实践:单个表建议索引不超过3个,优先单字段组合。注意不同版本对字符串索引长度的限制(如Oracle 8.1.7约为1578单字节)。

第2步:视图 (VIEW)

简化复杂查询逻辑:CREATE VIEW view_name AS SELECT ...;。若出现编译错误,可使用 ALTER VIEW ... COMPILE 修复。

第3步:同义词 (SYNONYM) 与数据库链接 (DATABASE LINK)

  • 同义词:CREATE SYNONYM syn_name FOR table_name;,简化远程表访问路径。
  • 数据库链接:跨库访问需在创建时指定用户密码及连接串:CREATE DATABASE LINK link_name CONNECT TO user IDENTIFIED BY pwd USING 'connection_string';。使用时在表名后加 @link_name。注意全局名称 global_name 参数的匹配要求。

六、权限管理 (DCL)

通过授权与回收机制控制用户访问级别:

  • 系统权限:CONNECT (连接), RESOURCE (开发), DBA (管理)。
  • 对象权限:SELECT, INSERT, UPDATE, DELETE, ALL (所有操作)。
  • 授权语法:GRANT 权限 ON 对象 TO 用户;
  • 回收语法:REVOKE 权限 ON 对象 FROM 用户;

以上就是Oracle SQL常用操作语法的详细内容,更多关于数据库管理的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表