1.9.3 同义词信息的查询

同义词作为一种数据库对象,它的相关信息被存储在数据字典中。与同义词有关的数据字典有三个:user_sysnonyms、all_synonyms、dba_synonyms。

其中在数据字典user_synonyme中记录了当前用户所拥有的同义词。这个表的个列定义及其意义如下所示:


名称 是否为空?类型 意义

SYNONYM_NAME NOT NULL VARCHAR2(30)同义词的名称

TABLE_OWNER VARCHAR2(30)所指向的对象属主

TABLE_NAME NOT NULL VARCHAR2(30)所指向的对象名称

DB_LINK VARCHAR2(128)数据库链接


如果要查询当前用户创建了哪些同义词,它们各代表哪个用户的哪个对象,可以执行下面的SELECT语句进行查询:


SQL>SELECT synonym_name, table_name, table_owner FROM user_synonyms;


在数据字典all_synonyms中记录了当前用户所能使用的所有同义词,包括私有同义词和公共同义词。

在数据字典dba_synonyms中记录了数据库中所有的同义词,包括每个用户创建的私有同义词和DBA创建的公共同义词。这个视图只有DBA能够访问,它的结构除了包含数据字典user_synonyms的所有列外,还有一个列owner代表同义词的创建者。

如果要在整个数据库范围内查询某个同义词的信息,可以对数据字典dba_synonyms进行查询。例如,要查询用户scott所创建的所有同义词,可以执行下面的SELECT语句:


SQL>SELECT synonym_name, table_name, table_owner FROM dba_synonyms

WHERE owner='SCOTT';


如果要查询用户scott的表dept具有哪些同义词,可以执行下面的SELECT语句:


SQL>SELECT synonym_name, owner FROM dba_synonyms

WHERE table_owner='SCOTT'AND table_name='DEPT';


如果要查询系统中所有的公共同义词,可以执行下面的SELECT语句:


SQL>SELECT synonym_name, table_name, table_owner FROM dba_synonyms

WHERE owner='PUBLIC';