菜鸟科技网

Oracle常见命令有哪些实用技巧?

Oracle数据库作为企业级关系型数据库管理系统,其强大的功能和稳定性离不开丰富的命令支持,掌握Oracle常见命令是数据库管理员和开发人员必备的技能,这些命令涵盖了数据库的连接、数据操作、用户管理、权限控制、性能监控等多个方面,以下将详细介绍Oracle常用命令及其应用场景。

Oracle常见命令有哪些实用技巧?-图1
(图片来源网络,侵删)

数据库连接与退出命令

在操作Oracle数据库之前,首先需要建立与数据库的连接,最常用的工具是SQLPlus,连接命令的基本格式为:sqlplus 用户名/密码@数据库服务名,以管理员身份连接到本地数据库,可使用sqlplus / as sysdba,该命令无需用户名和密码,直接以操作系统认证的特权用户身份登录,若要连接到远程数据库,需确保网络配置正确,服务名(或数据库名)在tnsnames.ora文件中已定义,退出当前会话则使用exitquit命令,两者功能相同,都会关闭当前SQLPlus会话并返回操作系统提示符。

数据操作语言(DML)命令

DML命令用于操作数据库中的数据,主要包括查询、插入、更新和删除。

  1. 查询数据(SELECT)SELECT命令是Oracle中最常用的命令,用于从表中检索数据,基本语法为SELECT 列名 FROM 表名 WHERE 条件 ORDER BY 排序列名SELECT * FROM employees WHERE department_id = 10 ORDER BY hire_date DESC表示查询10号部门所有员工信息,并按入职日期降序排列,使用可查询表中所有列,DISTINCT关键字可去除重复行。
  2. 插入数据(INSERT)INSERT命令用于向表中添加新数据,语法为INSERT INTO 表名 (列名1, 列名2) VALUES (值1, 值2),若要插入所有列的值,可省略列名列表,但值的顺序必须与表中列的顺序一致。INSERT INTO employees (employee_id, first_name, last_name, email) VALUES (1001, 'John', 'Doe', 'john.doe@example.com'),还可使用INSERT INTO ... SELECT ...将查询结果插入到另一张表中。
  3. 更新数据(UPDATE)UPDATE命令用于修改表中现有数据,语法为UPDATE 表名 SET 列名1 = 新值1, 列名2 = 新值2 WHERE 条件注意WHERE子句至关重要,若省略,则会更新表中的所有行,可能导致数据丢失。UPDATE employees SET salary = salary * 1.1 WHERE employee_id = 1001表示将员工ID为1001的薪资提高10%。
  4. 删除数据(DELETE)DELETE命令用于从表中删除数据,语法为DELETE FROM 表名 WHERE 条件,同样,WHERE子句不可省略,否则会清空整个表。DELETE FROM employees WHERE employee_id = 1001表示删除员工ID为1001的记录,若需删除表中所有数据,可使用TRUNCATE TABLE 表名,该命令比DELETE更快,且不记录undo日志,但无法回滚。

数据定义语言(DDL)命令

DDL命令用于定义或修改数据库对象的结构,如表、索引、视图等。

  1. 创建表(CREATE TABLE)CREATE TABLE命令用于创建新表,语法为CREATE TABLE 表名 (列名1 数据类型1 [约束], 列名2 数据类型2 [约束])CREATE TABLE departments (department_id NUMBER(4) PRIMARY KEY, department_name VARCHAR2(50) NOT NULL, location_id NUMBER(4)),常见约束包括PRIMARY KEY(主键)、FOREIGN KEY(外键)、NOT NULL(非空)、UNIQUE(唯一)、CHECK(检查)等。
  2. 修改表结构(ALTER TABLE)ALTER TABLE命令用于修改已存在的表结构,如添加列、修改列数据类型、删除列等。ALTER TABLE employees ADD (phone_number VARCHAR2(20))添加新列,ALTER TABLE employees MODIFY (salary NUMBER(10,2))修改薪资列的数据类型。
  3. 删除表(DROP TABLE)DROP TABLE命令用于删除表及其所有数据、索引和约束,语法为DROP TABLE 表名 [CASCADE CONSTRAINTS]CASCADE CONSTRAINTS选项用于删除与该表相关的外键约束,删除表后,数据无法恢复,需谨慎操作。
  4. 创建索引(CREATE INDEX):索引可提高查询速度,语法为CREATE INDEX 索引名 ON 表名 (列名)CREATE INDEX idx_employees_lastname ON employees (last_name),但索引会降低DML操作速度,并占用存储空间,需根据实际需求创建。

用户与权限管理命令

Oracle是多用户数据库,用户和权限管理至关重要。

Oracle常见命令有哪些实用技巧?-图2
(图片来源网络,侵删)
  1. 创建用户(CREATE USER)CREATE USER 用户名 IDENTIFIED BY 密码命令用于创建新用户。CREATE USER john IDENTIFIED BY password123,新用户创建后无任何权限,需手动授权。
  2. 授予权限(GRANT)GRANT命令用于授予用户权限,权限包括系统权限(如CREATE SESSIONCREATE TABLE)和对象权限(如SELECT ON 表名UPDATE ON 表名)。GRANT CREATE SESSION TO john授予用户john连接数据库的权限,GRANT SELECT ON employees TO john授予查询employees表的权限。
  3. 撤销权限(REVOKE)REVOKE命令用于撤销已授予的权限。REVOKE CREATE SESSION FROM john撤销john的会话权限。
  4. 修改用户密码(ALTER USER)ALTER USER 用户名 IDENTIFIED BY 新密码命令用于修改用户密码。ALTER USER john IDENTIFIED BY newpassword

数据库控制命令

控制命令用于管理数据库实例的运行状态。

  1. 启动数据库(STARTUP):以sysdba身份登录后,使用STARTUP命令启动数据库实例,可附加选项,如STARTUP NOMOUNT(仅启动实例,不加载数据文件)、STARTUP MOUNT(启动实例并加载数据文件,但不打开数据库)。
  2. 关闭数据库(SHUTDOWN)SHUTDOWN命令用于关闭数据库,常用选项包括SHUTDOWN NORMAL(等待所有用户断开连接后关闭)、SHUTDOWN TRANSACTIONAL(等待事务提交后关闭)、SHUTDOWN IMMEDIATE(立即关闭,未提交的事务回滚)、SHUTDOWN ABORT(立即终止实例,恢复时需要实例恢复)。
  3. 切换数据库状态(ALTER DATABASE)ALTER DATABASE OPEN打开数据库,ALTER DATABASE MOUNT加载数据文件。

常用函数与伪列

Oracle提供了丰富的函数和伪列,方便数据处理。

  1. 聚合函数:如COUNT(计数)、SUM(求和)、AVG(平均值)、MAX(最大值)、MIN(最小值)。SELECT AVG(salary) FROM employees计算平均薪资。
  2. 字符串函数:如CONCAT(连接字符串)、SUBSTR(截取子串)、LENGTH(字符串长度)、UPPER/LOWER(大小写转换)。
  3. 日期函数:如SYSDATE(当前系统日期)、ADD_MONTHS(增加月份)、MONTHS_BETWEEN(月份差)。
  4. 伪列:如ROWNUM(行号,从1开始)、ROWID(物理行地址,唯一标识一行数据)。

性能监控相关命令

  1. 查看当前会话信息SELECT * FROM v$session WHERE sid = (SELECT sid FROM v$mystat WHERE rownum = 1)查看当前会话信息。
  2. 查看等待事件SELECT * FROM v$session_wait WHERE sid = (SELECT sid FROM v$mystat WHERE rownum = 1)查看当前会话等待事件。
  3. 执行计划分析:使用EXPLAIN PLAN FOR命令生成执行计划,例如EXPLAIN PLAN FOR SELECT * FROM employees WHERE employee_id = 1001,然后查询SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)查看执行计划。

数据导出与导入命令

Oracle提供了数据泵(Data Pump)工具进行高效的数据导出和导入。

  1. 导出数据(expdp):命令格式为expdp 用户名/密码@数据库服务名 DIRECTORY=目录名 DUMPFILE=文件名.dmp TABLES=表名expdp system/password@orcl DIRECTORY=dpump_dir DUMPFILE=employees.dmp TABLES=employees
  2. 导入数据(impdp):命令格式为impdp 用户名/密码@数据库服务名 DIRECTORY=目录名 DUMPFILE=文件名.dmp TABLES=表名impdp system/password@orcl DIRECTORY=dpump_dir DUMPFILE=employees.dmp TABLES=employees

常用命令速查表

命令类别 命令 功能描述
连接与退出 sqlplus / as sysdba 以管理员身份连接本地数据库
exit/quit 退出SQL*Plus会话
数据查询 SELECT * FROM 表名 查询表中所有数据
SELECT 列名 FROM 表名 查询指定列数据
数据插入 INSERT INTO ... VALUES 向表中插入单条数据
INSERT INTO ... SELECT 通过查询结果插入数据
数据更新 UPDATE 表名 SET ... WHERE 更新表中符合条件的记录
数据删除 DELETE FROM 表名 WHERE 删除表中符合条件的记录
TRUNCATE TABLE 表名 清空表数据(不可回滚)
创建表 CREATE TABLE 表名 (...) 创建新表
修改表结构 ALTER TABLE 表名 ADD/ MODIFY/DROP 添加/修改/删除列
删除表 DROP TABLE 表名 删除表及其所有数据
创建用户 CREATE USER 用户名 IDENTIFIED BY 密码 创建新用户
授权 GRANT 权限 TO 用户名 授予用户权限
撤销权限 REVOKE 权限 FROM 用户名 撤销用户权限
启动数据库 STARTUP 启动数据库实例
关闭数据库 SHUTDOWN IMMEDIATE 立即关闭数据库
数据导出 expdp ... 使用数据泵导出数据
数据导入 impdp ... 使用数据泵导入数据

相关问答FAQs

Q1: 如何查看Oracle数据库的版本信息?
A1: 可以使用以下命令查看Oracle数据库版本:

Oracle常见命令有哪些实用技巧?-图3
(图片来源网络,侵删)
  • 在SQLPlus中执行:`SELECT FROM v$version;`
  • 或在操作系统命令行中执行:sqlplus -v(仅显示SQLPlus版本)或`sqlplus / as sysdba "SELECT FROM v$version;"`(显示数据库完整版本信息)。

Q2: Oracle中如何查询当前用户的权限?
A2: 可以通过查询数据字典视图session_privs获取当前用户的所有系统权限,SELECT * FROM session_privs;,若要查看用户拥有的对象权限,可查询tab_privs视图,SELECT table_name, privilege FROM tab_privs WHERE grantee = USER;,其中USER是当前用户的用户名。

分享:
扫描分享到社交APP
上一篇
下一篇