Oracle数据库作为企业级关系型数据库管理系统,其基础命令是数据库管理与操作的核心,掌握这些命令对于开发人员和数据库管理员至关重要,以下从连接管理、数据操作、对象控制等方面详细介绍Oracle基础命令。

连接数据库是操作的前提,使用SQLPlus或SQL Developer等工具时,需通过conn
或connect
命令建立会话,格式为conn 用户名/密码@数据库服务名
。conn scott/tiger@orcl
表示以scott用户连接到orcl服务,若需以特权用户登录,可使用/ as sysdba
,该命令无需密码直接以管理员身份连接,断开连接则使用disc
或disconnect
命令,退出SQLPlus环境则用exit
或quit
。
数据查询是Oracle最频繁的操作,基础查询命令为SELECT
,语法为SELECT 字段列表 FROM 表名 WHERE 条件 GROUP BY 分组字段 HAVING 分组条件 ORDER BY 排序字段 [ASC|DESC]
。SELECT ename, sal FROM emp WHERE deptno=10 ORDER BY sal DESC
查询10部门员工姓名及薪资并降序排列,多表查询需使用JOIN
,如SELECT e.ename, d.dname FROM emp e JOIN dept d ON e.deptno=d.deptno
通过部门ID关联员工与部门表,聚合函数COUNT()
、SUM()
、AVG()
等常与GROUP BY
配合使用,如SELECT deptno, AVG(sal) FROM emp GROUP BY deptno
计算各部门平均薪资。
数据操作语言(DML)包括增删改查,插入数据使用INSERT INTO 表名(字段列表) VALUES(值列表)
,如INSERT INTO emp(empno, ename, sal) VALUES(1001, '张三', 5000)
,若需从其他表插入数据,可采用INSERT INTO 目标表 SELECT 查询语句
,更新数据通过UPDATE 表名 SET 字段=新值 WHERE 条件
,例如UPDATE emp SET sal=sal*1.1 WHERE ename='张三'
将张三薪资上调10%,删除数据使用DELETE FROM 表名 WHERE 条件
,需注意不加条件会删除整表数据,建议先用SELECT
验证条件,事务控制命令COMMIT
提交事务,ROLLBACK
回滚事务,SAVEPOINT A
设置保存点,可通过ROLLBACK TO A
回滚到指定点。
数据定义语言(DDL)用于管理数据库对象,创建表使用CREATE TABLE 表名(字段名 数据类型 [约束], ...)
,如CREATE TABLE student(id NUMBER(10) PRIMARY KEY, name VARCHAR2(20) NOT NULL)
,常见约束包括PRIMARY KEY
(主键)、FOREIGN KEY
(外键)、UNIQUE
(唯一)、NOT NULL
(非空)、CHECK
(检查),修改表结构通过ALTER TABLE
命令,如添加列ALTER TABLE student ADD (age NUMBER(3))
,修改列类型ALTER TABLE student MODIFY (name VARCHAR2(30))
,删除列ALTER TABLE student DROP COLUMN age
,删除表使用DROP TABLE 表名 [CASCADE CONSTRAINTS]
,CASCADE CONSTRAINTS
可同时删除相关约束,创建索引通过CREATE INDEX 索引名 ON 表名(字段)
,如CREATE INDEX idx_emp_ename ON emp(ename)
提高查询效率。

权限管理保障数据库安全,使用GRANT
授权,REVOKE
收权。GRANT SELECT, INSERT ON emp TO scott
授予scott对emp表的查询和插入权限,GRANT CONNECT, RESOURCE TO user1
授予用户user1连接和资源角色,回收权限则用REVOKE SELECT ON emp FROM scott
。
为了更直观地展示部分命令,以下表格列出常用DML和DDL命令示例:
命令类型 | 命令格式 | 示例 |
---|---|---|
插入数据 | INSERT INTO 表名(字段) VALUES(值) | INSERT INTO dept(deptno, dname) VALUES(50, '研发部') |
更新数据 | UPDATE 表名 SET 字段=值 WHERE 条件 | UPDATE dept SET loc='北京' WHERE deptno=50 |
删除数据 | DELETE FROM 表名 WHERE 条件 | DELETE FROM dept WHERE deptno=50 |
创建表 | CREATE TABLE 表名(字段 数据类型) | CREATE TABLE temp(id NUMBER, name VARCHAR2(10)) |
删除表 | DROP TABLE 表名 | DROP TABLE temp |
在实际操作中,需注意命令的大小写敏感(默认不敏感,但对象名若用引号包裹则敏感)、分号结尾、事务提交等细节,合理使用这些基础命令,可有效完成Oracle数据库的日常管理与数据维护工作。
FAQs

-
问:Oracle中如何查看当前用户下的所有表?
答:使用SELECT table_name FROM user_tables;
命令可查询当前用户拥有的所有表名,若需查看其他用户的表,可切换到该用户或使用SELECT table_name FROM all_tables WHERE owner='用户名';
,其中all_tables
包含用户有权限访问的所有表。 -
问:执行DML操作后未提交,其他会话能否看到修改结果?
答:无法看到,Oracle采用事务隔离机制,未提交的修改仅对当前会话可见,其他会话只能提交前的数据,若需让其他会话立即看到修改,需执行COMMIT
提交事务,或在事务中使用SET TRANSACTION ISOLATION LEVEL READ COMMITTED
设置隔离级别(默认已满足)。