Oracle SQL常用操作语法与数据库对象速查
本文系统梳理了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操作会对表施加行级锁,为确保数据一致性与性能,请遵循以下流程:
- 确认范围:估算影响行数,尽量将单次事务控制在较小范围(如一万条以内)。
- 分批提交:若涉及十万级以上记录,建议分段执行并在每段后执行
COMMIT,以避免过大回退段导致系统响应缓慢。 - 异常回滚:若操作失败或发现错误,可执行
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常用操作语法的详细内容,更多关于数据库管理的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













