sql оператор для отображения всех таблиц и представлений - PullRequest
0 голосов
/ 23 марта 2020

в домашней работе, есть вопрос, который хочет, чтобы я отображал все объекты из своего аккаунта (хочет отобразить все таблицы и представления), но проблема в том, что я не использовал Oracle, чтобы знать, как это сделать из-за Корона вирус. спасибо

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Объекты, которые принадлежат вашему «аккаунту» - как вы его называете; это «схема» в базе данных Oracle, то есть «пользователь» со всеми его объектами - может быть получен из user_objects. Примерно так:

Я подключен как пользователь scott:

SQL> show user
USER is "SCOTT"

Что у меня есть?

SQL> desc user_objects
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 OBJECT_NAME                                        VARCHAR2(128)
 SUBOBJECT_NAME                                     VARCHAR2(30)
 OBJECT_ID                                          NUMBER
 DATA_OBJECT_ID                                     NUMBER
 OBJECT_TYPE                                        VARCHAR2(19)
 CREATED                                            DATE
 LAST_DDL_TIME                                      DATE
 TIMESTAMP                                          VARCHAR2(19)
 STATUS                                             VARCHAR2(7)
 TEMPORARY                                          VARCHAR2(1)
 GENERATED                                          VARCHAR2(1)
 SECONDARY                                          VARCHAR2(1)
 NAMESPACE                                          NUMBER
 EDITION_NAME                                       VARCHAR2(30)

SQL> select object_type, count(*)
  2  from user_objects
  3  group by object_type
  4  order by object_type;

OBJECT_TYPE           COUNT(*)
------------------- ----------
FUNCTION                     3
INDEX                        6
PROCEDURE                    4
SEQUENCE                     1
TABLE                       14
TRIGGER                      2
TYPE                         2
VIEW                         2

8 rows selected.

Как перечислить все эти объекты?

SQL> select object_name, object_type
  2  from user_objects
  3  order by object_type, object_name;

OBJECT_NAME          OBJECT_TYPE
-------------------- -------------------
EMPLOYEE_FUNCTION    FUNCTION
F_SAL                FUNCTION
F_TEST               FUNCTION
PKA                  INDEX
PKB                  INDEX
PK_DEPT              INDEX
SYS_C0077379         INDEX
SYS_C0077382         INDEX
SYS_C0077385         INDEX
CHALLAN_TEST         PROCEDURE
P_CRV                PROCEDURE
P_MAIL               PROCEDURE
PRINT_TABLE          PROCEDURE
SEQA                 SEQUENCE
A                    TABLE
ALLOCATION           TABLE
B                    TABLE
BONUS                TABLE
DEPT                 TABLE
EMP                  TABLE
EMPLOYEES            TABLE
HSTT_SR_MST          TABLE
MASTER_TABLE         TABLE
NURSE                TABLE
ROOM                 TABLE
SALGRADE             TABLE
TEST                 TABLE
TEST_DEFVAL          TABLE
TRG_BI_DEF           TRIGGER
TRG_BI_TEST          TRIGGER
EMP_OBJ_TYPE         TYPE
EMP_TBL_TYPE         TYPE
VIEW_EXEC_DATA       VIEW
V_MASTER_TABLE       VIEW

34 rows selected.

SQL>

Полагаю, это отвечает на ваш вопрос.


В качестве альтернативы, если бы вам пришлось отображать все объекты, к которым у вас есть доступ, вы бы запросили all_objects. Тогда результат будет совсем другим:

SQL> select object_type, count(*)
  2  from all_objects
  3  group by object_type
  4  order by object_type;

OBJECT_TYPE           COUNT(*)
------------------- ----------
CONSUMER GROUP               2
DESTINATION                  2
DIRECTORY                    1
EDITION                      1
EVALUATION CONTEXT           1
FUNCTION                   217
INDEX                        6
INDEXTYPE                    9
JAVA CLASS               28751
JAVA RESOURCE              938
JOB CLASS                    2
OPERATOR                    55
PACKAGE                    553
PROCEDURE                   74
PROGRAM                     11
SCHEDULE                     3
SCHEDULER GROUP              4
SEQUENCE                    18
SYNONYM                  33399
TABLE                      119
TRIGGER                      2
TYPE                      1569
VIEW                      2257
WINDOW                       9
XML SCHEMA                  53

25 rows selected.

SQL>

Я думаю, вы не хотите перечислять все эти десятки тысяч объектов; это было бы бесполезно. Кроме того, это представление (all_objects) содержит дополнительное имя столбца: owner, который показывает, кому принадлежат эти объекты. Некоторые из них принадлежат вам (и вы уже видели их в user_objects), в то время как большинство из них этого не делают. Включите его в запрос для получения дополнительной информации.


Кроме того, если бы вы были администратором баз данных (или имели соответствующие привилегии), вы бы запросили dba_objects, которые содержат объекты во всей базе данных. Он также содержит столбец owner.

0 голосов
/ 23 марта 2020

Вы хотите information_schema. Так как это домашнее задание, я остановлюсь на этом и оставлю на усмотрение остальных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...