达梦数据查看模式,达梦数据库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'表示模式对象。当前模式:每个会话都有一个当前模式,用于解析非限定名的数据库对象(如直接写表名而不加模式前缀)
