达梦数据查看模式,达梦数据库sql 查询当前数据库下有哪些模式

一、查看当前连接的模式

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'表示模式对象。

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