一、查看当前连接的模式

sql

复制

-- 方法1:使用 USER 伪列
SELECT USER;

-- 方法2:查询系统函数
SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID());

二、查看数据库中所有模式(Schema)

sql

复制

-- 方法1:查询系统表 SYSOBJECTS
SELECT NAME FROM SYSOBJECTS WHERE TYPE$ = 'SCH';

-- 方法2:查询 DBA_USERS 视图(查看所有用户/模式)
SELECT USERNAME FROM DBA_USERS;

-- 方法3:查询 ALL_USERS 视图
SELECT USERNAME FROM ALL_USERS;

三、查看当前模式下的所有对象

sql

复制

-- 查看当前模式下的所有表
SELECT TABLE_NAME FROM USER_TABLES;

-- 查看所有对象(表、视图、存储过程等)
SELECT * FROM USER_OBJECTS;

-- 查看模式信息详情
SELECT * FROM USER_SCHEMA_PRIVILEGES;

四、切换模式

sql

复制

-- 使用 SET SCHEMA 切换当前会话的模式
SET SCHEMA 模式名;

-- 示例
SET SCHEMA DMHR;

五、查看模式详细信息(系统视图)

表格

视图/表名 说明 查询内容
SYSOBJECTS 系统对象表 所有模式、表、索引等对象
DBA_USERS 数据库用户视图 所有用户信息(对应模式)
ALL_USERS 所有用户视图 所有用户名
USER_USERS 当前用户信息 当前连接用户的详细信息
V$SESSIONS 会话视图 当前会话信息,包含当前模式

sql

复制

-- 查看当前会话的详细信息(包含当前模式)
SELECT SESS_ID, SQL_TEXT, SCH_NAME FROM V$SESSIONS WHERE SESS_ID = SESSID();

六、实用查询示例

sql

复制

-- 1. 查看数据库中所有模式及其所有者
SELECT 
    A.NAME AS 模式名,
    B.NAME AS 所有者
FROM SYSOBJECTS A
LEFT JOIN SYSOBJECTS B ON A.PID = B.ID
WHERE A.TYPE$ = 'SCH';

-- 2. 查看当前用户可访问的所有模式
SELECT DISTINCT OWNER FROM ALL_OBJECTS;

-- 3. 查看模式的创建时间和状态
SELECT 
    USERNAME,
    CREATED,
    ACCOUNT_STATUS
FROM DBA_USERS;

关键概念说明

  • 模式(Schema):在达梦数据库中,用户(User)模式(Schema) 是一一对应的关系。创建用户时会自动创建同名的模式。

  • SYSOBJECTS:系统表,存储所有数据库对象的元数据,TYPE$='SCH' 表示模式对象。

  • 当前模式:每个会话都有一个当前模式,用于解析非限定名的数据库对象(如直接写表名而不加模式前缀)

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐