oracle常用语句

server/2024/12/23 3:42:53/

目录

  • 一.连接数据库
    • SQL*Plus 连接
      • 本地连接
      • 远程连接
      • 使用操作系统认证
  • 二.管理数据库
  • 三.数据字典和视图
    • 视图:
      • 1.数据库基础信息视图
        • `V$DATABASE`
        • `V$INSTANCE`
        • `V$VERSION`
      • 2.用户和权限管理视图
        • `DBA_USERS`
        • `DBA_ROLE_PRIVS`
        • `DBA_SYS_PRIVS`
        • `DBA_TAB_PRIVS`
      • 3.表空间和存储视图
        • `DBA_TABLESPACES`
        • `DBA_DATA_FILES`
        • `DBA_FREE_SPACE`
        • `DBA_TEMP_FILES`
      • 4.表和索引管理视图
        • `ALL_TABLES`
        • `DBA_TABLES`
        • `DBA_INDEXES`
        • `DBA_SEGMENTS`
      • 5. 性能监控视图
        • `V$SESSION`
        • `V$SYSTEM_EVENT`
        • `V$SQL`
        • `V$PROCESS`
      • 6. 日志和恢复视图
        • `V$LOG`
        • `V$ARCHIVED_LOG`
        • `V$RECOVERY_FILE_DEST`
      • 7. 数据块管理视图
        • `DBA_EXTENTS`
        • `DBA_BLOCKS`
      • 8. 系统统计视图
        • `V$SYSTEM_STAT`
        • `V$RESOURCE_LIMIT`
  • 四.表空间管理
    • 创建表空间:
      • 数据文件配置
      • 管理方式
      • 日志选项
  • 五.用户管理
    • 查询当前用户:
    • 用户登录:
    • 用户的锁定与解锁:
      • 锁定用户
      • 解锁用户
    • 创建用户:
      • 赋予系统权限
      • 赋予对象权限
      • 常见对象权限
      • 赋予角色
      • 常见角色
      • 收回权限:
    • 指定表空间
  • 六.表管理
    • 创建表:
    • 操作表:
      • 修改表:
        • 添加列
        • 修改列
        • 删除列
        • 添加约束
        • 删除列
        • 清空表数据
      • 数据操作:
      • 1 插入数据
        • 插入一列
        • 插入所有列
      • 2 更新数据
        • 更新所选数据
      • 3 删除数据
        • 删除选择数据
        • 删除所有数据
      • 4 查询数据
        • 基本语法
        • 查询所有列
        • 排序查询
        • 分组查询

本文基于linux系统下对oracle数据库进行操作。

一.连接数据库

SQL*Plus 连接

​ SQL*Plus 是 Oracle 提供的命令行工具,可以通过以下命令连接到数据库

本地连接

sqlplus username/password

远程连接

sqlplus username/password@//host:port/service_name
  • host数据库服务器的 IP 地址或主机名。

  • port:监听器端口号,默认是 1521

  • service_name数据库服务名。

使用操作系统认证

以 DBA 身份登录本地数据库

sqlplus / as sysdba

二.管理数据库

启动数据库

STARTUP [MOUNT|NOMOUNT|OPEN];
  • NOMOUNT:仅启动实例(初始化参数文件加载,但未与控制文件交互)。
  • MOUNT:启动实例并加载控制文件,但数据库文件未打开。
  • OPEN:完全启动数据库,用户可以访问数据。

关闭数据库

SHUTDOWN [NORMAL|IMMEDIATE|ABORT];
  • NORMAL:等待所有会话结束后关闭。
  • IMMEDIATE:强制结束会话并关闭。
  • ABORT:立即关闭,无需等待。

三.数据字典和视图

视图:

视图是预定义的 SQL 查询,可以像表一样使用,先整理视图以方便查询。

1.数据库基础信息视图

V$DATABASE
  • 提供有关数据库的基本信息,如名称、创建时间等。
SELECT name, dbid, created 
FROM v$database;
V$INSTANCE
  • 提供实例状态和配置的信息。
SELECT instance_name, status, host_name, version 
FROM v$instance;
V$VERSION
SELECT * 
FROM v$version;

2.用户和权限管理视图

DBA_USERS
  • 列出所有用户的详细信息。
SELECT username, account_status, default_tablespace, temporary_tablespace 
FROM dba_users;
DBA_ROLE_PRIVS
  • 查看用户或角色授予的角色权限。
SELECT grantee, granted_role 
FROM dba_role_privs
WHERE grantee = 'USERNAME';
DBA_SYS_PRIVS
  • 查看系统权限授予情况。
SELECT grantee, privilege 
FROM dba_sys_privs
WHERE grantee = 'USERNAME';
DBA_TAB_PRIVS
  • 查看对象权限授予情况。
SELECT grantee, table_name, privilege 
FROM dba_tab_privs
WHERE grantee = 'USERNAME';

3.表空间和存储视图

DBA_TABLESPACES
  • 提供表空间的基本信息。
SELECT tablespace_name, status, contents 
FROM dba_tablespaces;
DBA_DATA_FILES
  • 查看数据文件的信息,包括大小、路径等。
SELECT file_name, tablespace_name, bytes / 1024 / 1024 AS size_mb, autoextensible 
FROM dba_data_files;
DBA_FREE_SPACE
  • 查看表空间的剩余空间。
SELECT tablespace_name, file_id, block_id, bytes / 1024 / 1024 AS free_space_mb 
FROM dba_free_space;
DBA_TEMP_FILES
  • 查看临时文件信息。
SELECT file_name, tablespace_name, bytes / 1024 / 1024 AS size_mb 
FROM dba_temp_files;

4.表和索引管理视图

ALL_TABLES
  • 查看用户可以访问的表的信息。
SELECT table_name, tablespace_name, num_rows 
FROM all_tables
WHERE owner = 'USERNAME';
DBA_TABLES
SELECT table_name, tablespace_name, logging 
FROM dba_tables;
DBA_INDEXES
  • 提供索引的详细信息。
SELECT index_name, table_name, uniqueness, status 
FROM dba_indexes
WHERE owner = 'USERNAME';
DBA_SEGMENTS
  • 查看段的存储信息,包括表段、索引段等。
SELECT segment_name, segment_type, bytes / 1024 / 1024 AS size_mb 
FROM dba_segments
WHERE tablespace_name = 'TABLESPACE_NAME';

5. 性能监控视图

V$SESSION
SELECT sid, serial#, username, status, machine 
FROM v$session;
V$SYSTEM_EVENT
  • 查看系统中等待事件的统计信息。
SELECT event, total_waits, time_waited 
FROM v$system_event
ORDER BY time_waited DESC;
V$SQL
  • 提供正在执行或已经执行的 SQL 的统计信息。
SELECT sql_id, sql_text, executions, elapsed_time 
FROM v$sql
WHERE rownum <= 10;
V$PROCESS
  • 显示当前正在运行的后台进程。
SELECT pid, spid, program 
FROM v$process;

6. 日志和恢复视图

V$LOG
  • 查看联机重做日志的状态。
SELECT group#, sequence#, bytes / 1024 / 1024 AS size_mb, status 
FROM v$log;
V$ARCHIVED_LOG
  • 查看归档日志的信息。
SELECT sequence#, first_time, next_time, applied 
FROM v$archived_log
ORDER BY sequence# DESC;
V$RECOVERY_FILE_DEST
  • 查看闪回恢复区的信息。
SELECT name, space_limit / 1024 / 1024 AS limit_mb, space_used / 1024 / 1024 AS used_mb 
FROM v$recovery_file_dest;

7. 数据块管理视图

DBA_EXTENTS
  • 查看段使用的区信息。
SELECT segment_name, segment_type, tablespace_name, bytes / 1024 / 1024 AS size_mb 
FROM dba_extents;
DBA_BLOCKS
  • 查看数据块的使用情况。
SELECT file_id, block_id, blocks 
FROM dba_blocks;

8. 系统统计视图

V$SYSTEM_STAT
SELECT name, value 
FROM v$sysstat
WHERE rownum <= 10;
V$RESOURCE_LIMIT
  • 查看系统资源使用情况。
SELECT resource_name, current_utilization, max_utilization, limit_value 
FROM v$resource_limit;

四.表空间管理

创建表空间:

CREATE TABLESPACE tablespace_name[ DATAFILE 'file_path' [ SIZE size [ K | M | G ] ] [ AUTOEXTEND ON | OFF ] [ NEXT size [ K | M | G ] ] [ MAXSIZE max_size [ K | M | G ] ] ][ EXTENT MANAGEMENT LOCAL | DICTIONARY ][ SEGMENT SPACE MANAGEMENT MANUAL | AUTO ][ LOGGING | NOLOGGING ];
  • tablespace_name: 表空间的名称,必须是唯一的。

数据文件配置

  • DATAFILE 'file_path': 数据文件的位置和名称。这个文件会用于存储表空间的数据。
  • SIZE size [ K | M | G ]: 数据文件的初始大小。K 表示 KB,M 表示 MB,G 表示 GB。
  • AUTOEXTEND ON | OFF: 是否允许数据文件自动扩展。当表空间已满时,数据文件可以自动扩展。
  • NEXT size [ K | M | G ]: 数据文件自动扩展时每次增加的空间大小。
  • MAXSIZE max_size [ K | M | G ]: 数据文件可以扩展的最大大小。如果设置为 UNLIMITED,则没有大小限制。

管理方式

  • EXTENT MANAGEMENT LOCAL | DICTIONARY:
    • LOCAL: 表示表空间使用本地管理的区段(extents)。推荐使用此选项,因为它提供更好的性能和灵活性。
    • DICTIONARY: 表示表空间使用数据字典来管理区段。
  • SEGMENT SPACE MANAGEMENT MANUAL | AUTO:
    • AUTO: 自动管理空间。
    • MANUAL: 手动管理空间,通常用于向旧的应用程序迁移时。

日志选项

  • LOGGING | NOLOGGING:
    • LOGGING: 启用事务日志记录,确保对表空间的所有修改都被记录。
    • NOLOGGING: 禁用事务日志记录,通常用于数据加载操作,以提高性能(但有数据丢失风险)。

五.用户管理

查询当前用户:

show user

用户登录:

conn语句只能在SQL*Plus已经建立会话的情况下使用,它是SQL*Plus的内部语句。

conn username/password@connect_identifier
  • username数据库用户名。
  • password:用户对应的密码。
  • connect_identifier:可以是以下几种:
    • host:port/SID:例如 localhost:1521/orcl,这是主机、端口和数据库标识符。
    • service_name:例如 mydb,这是数据库的服务名。
    • 通过 TNS 名称:例如 mytns,对应 tnsnames.ora 文件中的 TNS 名称。

用户的锁定与解锁:

锁定用户

锁定用户后,该用户将无法登录数据库

ALTER USER username ACCOUNT LOCK;

解锁用户

解锁用户后,该用户可以正常登录数据库

ALTER USER username ACCOUNT UNLOCK;

创建用户:

CREATE USER usernameIDENTIFIED BY password[ DEFAULT TABLESPACE tablespace_name ][ TEMPORARY TABLESPACE temp_tablespace_name ][ PROFILE profile_name ][ ACCOUNT LOCK | UNLOCK ];
  • username:要创建的用户名。

  • password:用户的密码。

  • DEFAULT TABLESPACE:为用户指定一个默认表空间,所有该用户创建的对象(如表)将存储在这个表空间中。

  • TEMPORARY TABLESPACE:指定该用户的临时表空间,通常用于排序和临时存储。

  • PROFILE:用户的密码配置文件(可选)。

  • ACCOUNT LOCKUNLOCK:创建时可以选择锁定账户或解锁账户。

赋予系统权限

系统权限是指允许用户执行某些数据库操作的权限,比如创建表、创建用户等。

GRANT system_privilege [, system_privilege ] ...
TO user [, user ] ...
[ WITH ADMIN OPTION ];
  • 赋予用户创建会话的权限(登录数据库

    GRANT CREATE SESSION TO user_name;
    
  • 赋予用户创建表的权限

    GRANT CREATE TABLE TO user_name;
    
  • 赋予多个权限给用户

    GRANT CREATE TABLE, CREATE VIEW TO user_name;
    
  • 赋予权限并允许用户转授(WITH ADMIN OPTION

    GRANT CREATE USER TO user_name WITH ADMIN OPTION;
    

赋予对象权限

对象权限是指允许用户对特定数据库对象(如表、视图、序列等)执行某些操作的权限。

GRANT object_privilege [, object_privilege ] ...
ON object_name
TO user [, user ] ...
[ WITH GRANT OPTION ];

常见对象权限

权限作用
SELECT允许查询数据
INSERT允许插入数据
UPDATE允许更新数据
DELETE允许删除数据
ALTER允许修改对象结构
INDEX允许创建索引
ALL赋予该对象的所有权限
  • 允许用户查询表数据

    GRANT SELECT ON schema_name.table_name TO user_name;
    
  • 允许用户插入和更新表数据

    GRANT INSERT, UPDATE ON schema_name.table_name TO user_name;
    
  • 允许用户转授权限(WITH GRANT OPTION

    GRANT SELECT ON schema_name.table_name TO user_name WITH GRANT OPTION;
    
  • 赋予用户对某张表的所有权限

    GRANT ALL ON schema_name.table_name TO user_name;
    

赋予角色

角色是一组权限的集合,创建角色后可以将权限赋给角色,再将角色赋给用户。

GRANT role [, role ] ...
TO user [, user ] ...
[ WITH ADMIN OPTION ];
  • 创建角色

    CREATE ROLE role_name;
    
  • 赋予权限给角色

    GRANT CREATE SESSION, CREATE TABLE TO role_name;
    
  • 将角色赋给用户

    GRANT role_name TO user_name;
    
  • 允许用户管理角色

    GRANT role_name TO user_name WITH ADMIN OPTION;
    

常见角色

  • dba:数据库管理员,系统最高权限,可以创建数据结构(表空间等。
  • resource:可以创建实体(表、视图),不可以创建数据库的结构。
  • connect:连接的权限,可以登录数据库,但是不可以创建实体和不可以创建数据库结构。

收回权限:

如果需要收回用户的权限,可以使用 REVOKE 命令。

REVOKE privilege [, privilege ] ...
ON object_name
FROM user [, user ] ...;
  • 收回用户的查询权限

    REVOKE SELECT ON schema_name.table_name FROM user_name;
    
  • 收回用户的系统权限

    REVOKE CREATE SESSION FROM user_name;
    
  • 收回用户的角色

    REVOKE role_name FROM user_name;
    

指定表空间

ALTER USER username DEFAULT TABLESPACE tablespace_name;

六.表管理

创建表:

CREATE TABLE table_name (column1 data_type [constraint],column2 data_type [constraint],...[table_constraints]
)
TABLESPACE tablespace_name     -- 指定存储表的表空间	 
STORAGE (INITIAL size               -- 第一个区的大小NEXT size                  -- 后续扩展区的大小MINEXTENTS number          -- 初始分配的区数量MAXEXTENTS number | UNLIMITED -- 最大分配的区数量PCTINCREASE percentage     -- 每次扩展区大小增长的百分比
)
;
  • table_name:表名,必须唯一。

  • column1, column2:列名,每个列需要指定数据类型。

  • data_type:列的数据类型,如 VARCHAR2, NUMBER, DATE

  • constraint:列级别约束,如 PRIMARY KEY, NOT NULL, UNIQUE

  • table_constraints:表级别约束,比如主键、外键等。

参数描述
INITIAL定义分配的第一个区的大小(单位为字节、KB、MB、GB,例如 100K1M)。
NEXT定义第二个区的大小,或后续扩展区的初始大小。
MINEXTENTS定义对象创建时最少分配的区数量,默认值为 1
MAXEXTENTS定义对象允许的最大区数量,可指定具体值或 UNLIMITED
PCTINCREASE定义扩展区大小的增长比例。0 表示固定大小,不增长;非零值时每次扩展区增量按此百分比计算。

操作表:

修改表:

1.ALTER TABLE 用于修改现有表的结构。

添加列
ALTER TABLE table_name ADD (column_name datatype [constraints]);
修改列
ALTER TABLE table_name MODIFY (column_name datatype);
删除列
ALTER TABLE table_name DROP COLUMN column_name;
添加约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_type (column_name);

2.DROP TABLE 用于删除表及其所有数据。

删除列
DROP TABLE table_name [CASCADE CONSTRAINTS];

3.TRUNCATE TABLE 用于快速清空表中的所有数据,但保留表结构。

清空表数据
TRUNCATE TABLE table_name;

数据操作:

1 插入数据

INSERT INTO 用于向表中添加数据。

插入一列
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
插入所有列
INSERT INTO table_name VALUES (value1, value2, ...);

2 更新数据

UPDATE 用于修改表中的数据。

更新所选数据
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

3 删除数据

DELETE 用于从表中删除数据。

删除选择数据
DELETE FROM table_name WHERE condition;
删除所有数据
DELETE FROM table_name;

TRUNCATE TABLE 的区别是,DELETE 可以使用事务回滚,而 TRUNCATE 不支持回滚。


4 查询数据

SELECT 用于从表中检索数据。

基本语法
SELECT column1, column2, ... FROM table_name WHERE condition;
查询所有列
SELECT * FROM table_name;
排序查询
SELECT * FROM employees ORDER BY salary DESC;
分组查询
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;

http://www.ppmy.cn/server/152396.html

相关文章

线程和进程、作业的区别

线程和进程、作业的区别 作业&#xff08;任务&#xff09;有多个进程&#xff0c;进程有多个线程 进程&#xff08;Process&#xff09;&#xff1a; 进程是程序的一次执行过程&#xff0c;是操作系统进行资源分配和调度的基本单位。 每个进程都有独立的内存空间&#xff0c…

速通Python 第二节

一、动态类型特性 在 Python 中 , 一个变量是什么类型 , 是可以在 " 程序运行 " 过程中发生变化的 . 这个特性称为 " 动态类型 " a 10 print(type(a)) a hello print(type(a) 在程序执行过程中, a 的类型刚开始是 int, 后面变成了 str. C/Java 这…

opencv-python的简单练习

文章目录 识别信号灯识别图案并且标记面积和周长 识别信号灯 需要识别交通信号灯的颜色&#xff08;红、黄、绿&#xff09;。请设计一个简化的流程&#xff0c;说明如何使用OpenCV来识别交通信号灯的颜色。 思路分析‌&#xff1a; 1.读取包含交通信号灯的图像。 2.转换图像到…

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导 Sigrity System Explorer Snip Via Pattern From Layout模式支持从其它设计中截取过孔模型用于仿真分析,同样以差分模板为例 具体操作如下 双击打开System Explorer软件…

MySQL结构的主要组成

MySQL 架构主要由以下几个部分组成&#xff1a; 一、连接层 当客户端连接到 MySQL 服务器时&#xff0c;连接层负责建立连接、验证用户身份、进行权限检查等操作。 1. 连接管理 处理客户端的连接请求&#xff0c;包括建立连接、断开连接等操作。维护连接池&#xff0c;提高连接…

35. Three.js案例-创建带阴影的球体与平面

35. Three.js案例-创建带阴影的球体与平面 实现效果 知识点 WebGLRenderer WebGLRenderer 是Three.js中用于渲染场景的主要类之一&#xff0c;它负责将场景中的对象渲染到画布上。 构造器 new THREE.WebGLRenderer(parameters : Object) 参数类型描述parametersObject可选…

STM32, GD32 cubemx CAN 低速率125kbps 报文丢失,解决了

用STM32 CUBEMX生成的GD32的 can程序&#xff0c;在500K波特率时可以正常使用&#xff0c;没有发现丢包&#xff0c;但速率降到250k和125k时&#xff0c;发送138帧数据&#xff0c;会丢失5个包。&#xff08;系统时钟168M&#xff0c;APB1的时钟42M&#xff09; 试了各种方法无…

华为DHCP高级配置学习笔记

1.基于接口的DHCP配置 1.1配置R1 sys sysname R1 undo info-center enable dhcp enable 全局下开启DHCP功能 interface Ethernet0/0/0 ip address 192.168.1.1 255.255.255.0 dhcp select interface 在e0/0/0接口上启用基于接口的 DHCP服务 dhcp server dns-list 114.11…