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



所有评论(0)