Меню

Получить тип поля данных в инструкции select в ORACLE

Получить тип поля данных в инструкции select в ORACLE

могу ли я получить типы данных каждого выбранного столбца вместо значений, используя инструкцию select?

и результат должен быть такой

или это может быть в строке, как это, это не важно:

6 ответов

Вы можете запросить all_tab_columns посмотреть в базе данных.

Я нахожу не интуитивный способ сделать это с помощью DUMP ()

SELECT DUMP(a.name), DUMP(a.surname), DUMP(b.ordernum)
FROM customer a
JOIN orders b
ON a.id = b.id

он вернет что-то вроде: Typ=1 Len=2: 0,48 для каждого столбца

Type=1 означает VARCHAR2 или NVARCHAR2
Type=2 означает NUMBER/FLOAT
Type=12 означает DATE
and many ..
вы можете обратиться к Oracle doc для этих Код Типа Данных
также это с более подробной информацией Тип Oracle Код Сопоставления

Я попал в ту же ситуацию. В качестве обходного пути я только что создал view (Если у вас есть привилегии) и описал его и отбросил позже. 🙂

Если у вас нет прав для создания представления в Oracle, «взломать» вокруг него, чтобы использовать MS Access : — (

в MS Access создайте сквозной запрос с помощью sql (но добавьте предложение where, чтобы просто выбрать 1 запись), создайте запрос select из представления (очень важно), выбрав all*, затем создайте таблицу make из запроса select. При этом будет создана таблица с одной записью, все типы данных должны «соответствовать» oracle. т. е. Passthrough —> выберите —> MakeTable —> Таблица

Я уверен, что есть другие лучшие способы, но если у вас есть ограниченные инструменты и привилегии, это будет работать.

обычно я создаю представление и использую команду «desc»:

CREATE tmp_view as SELECT a.name, a.surname, b.ordernum FROM customer a JOIN orders b ON a.id = b.id

затем команда «DESC» покажет тип каждого поля.

кроме того, если у вас есть жаба для Oracle, вы можете выделить заявление и нажать CTRL + F9 и вы получите хороший вид столбца и их типов данных.

Источник

Получить список всех таблиц в Oracle?

Как я могу запросить базу данных Oracle для отображения имен всех таблиц в ней?

ОТВЕТЫ

Ответ 1

Предполагается, что у вас есть доступ к представлению словаря данных DBA_TABLES . Если у вас нет этих привилегий, но они нуждаются в них, вы можете запросить, чтобы администратор базы данных явно предоставлял вам привилегии в этой таблице или что администратор базы данных предоставляет вам привилегию SELECT ANY DICTIONARY или SELECT_CATALOG_ROLE (любой из которых позволит вам для запроса любой таблицы словаря данных). Конечно, вы можете исключить некоторые схемы, такие как SYS и SYSTEM , которые имеют большое количество таблиц Oracle, которые вам, вероятно, не волнует.

В качестве альтернативы, если у вас нет доступа к DBA_TABLES , вы можете увидеть все таблицы, к которым ваша учетная запись имеет доступ, через представление ALL_TABLES :

Хотя это может быть подмножество таблиц, доступных в базе данных ( ALL_TABLES показывает вам информацию для всех таблиц, которым был предоставлен ваш пользователь).

Если вас интересуют только те таблицы, которые у вас есть, а не те, к которым у вас есть доступ, вы можете использовать USER_TABLES :

Так как USER_TABLES имеет только информацию о собственных таблицах, у нее нет столбца OWNER — владелец, по определению, вы.

Oracle также имеет ряд устаревших видов словарей данных — TAB , DICT , TABS и CAT например — которые могут быть использованы. В общем, я бы не предложил использовать эти устаревшие представления, если вам не нужно полностью использовать ваши сценарии для Oracle 6. Oracle не изменил эти представления за долгое время, поэтому у них часто возникают проблемы с новыми типами объектов. Например, представления TAB и CAT отображают информацию о таблицах, которые находятся в корзине пользователя, в то время как теги [DBA|ALL|USER]_TABLES все фильтруют их. CAT также показывает информацию о материализованных журналах просмотра с TABLE_TYPE в таблице «ТАБЛИЦА», которая вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кому принадлежит этот объект.

Читайте также:  Ассортимент и особенности продукции

Ответ 2

Запрос user_tables и dba_tables не работает.
Это сделал:

Ответ 3

Идя еще на один шаг, существует другое представление, называемое cols (all_tab_columns), которое может использоваться для определения того, какие таблицы содержат заданное имя столбца.

чтобы найти все таблицы, имеющие имя, начинающееся с EST, и столбцы, содержащие CALLREF в любом месте их имен.

Это может помочь при разработке тех столбцов, к которым вы хотите присоединиться, например, в зависимости от ваших соглашений об именах таблиц и столбцов.

Ответ 4

Для лучшего просмотра с помощью sqlplus

Если вы используете sqlplus , вы можете сначала настроить несколько параметров для более удобного просмотра, если ваши столбцы становятся искалеченными (эти переменные не должны сохраняться после выхода из сеанса sqlplus ):

Показать все таблицы

Затем вы можете использовать что-то вроде этого, чтобы увидеть все имена таблиц:

Показать таблицы, которыми вы владеете

Как упоминает @Justin Cave, вы можете использовать это, чтобы отображать только те таблицы, которые у вас есть:

Не забывайте о представлениях

Имейте в виду, что некоторые «таблицы» могут быть «видами», поэтому вы также можете попробовать запустить что-то вроде:

Результаты

Это должно привести к тому, что выглядит довольно приемлемым, например:

result

Ответ 5

Простой запрос для выбора таблиц для текущего пользователя:

Ответ 6

Ответ 7

Попробуйте просмотреть словарные данные ниже.

Ответ 8

Существует 3 данных для этого

DBA_TABLES описывает все реляционные таблицы в базе данных.

Описание реляционных таблиц, доступных пользователю

USER_TABLES описывает реляционные таблицы, принадлежащие текущему пользователю. Это представление не отображает столбец ВЛАДЕЛЕЦ.

Ответ 9

Попробуйте выбрать user_tables, в котором перечислены таблицы, принадлежащие текущему пользователю.

Ответ 10

С помощью любого из них вы можете выбрать:

Ответ 11

База данных Oracle для отображения имен всех таблиц, используя запрос ниже

Ответ 12

предоставляет все таблицы всех пользователей только в том случае, если пользователь, с которым вы вошли в систему, имеет привилегии sysdba .

Ответ 13

Ниже приведен закомментированный фрагмент SQL-запросов, описывающий, как можно использовать параметры:

Ответ 14

Вы можете использовать Oracle Data Dictionary, чтобы получить информацию об объектах oracle.

Вы можете получить список таблиц по-разному:

Затем вы можете получить столбцы таблицы, используя имя таблицы:

Затем вы можете получить список зависимостей (триггеры, представления и т.д.):

Затем вы можете получить текстовый источник этих объектов:

И вы можете использовать USER или ALL представления вместо DBA , если хотите.

Ответ 15

Я не нашел ответа, который указывал бы на использование

так решил добавить мою версию. Этот вид фактически возвращает больше, чем DBA_TABLES, поскольку он возвращает также таблицы объектов (http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm).

Ответ 16

Ответ 17

Мы можем получить все таблицы, включая детали столбцов, из запроса ниже:

Ответ 18

Следующий запрос содержит только список необходимых данных, тогда как другие ответы дали мне дополнительные данные, которые меня только смутили.

Ответ 19

Новая функция, доступная в SQLcl (это бесплатный интерфейс командной строки для Oracle Database),

Tables псевдоним.

Вот несколько примеров, показывающих использование и дополнительные аспекты функции. Сначала подключитесь к sql.exe командной строки sql ( sql.exe в windows). Рекомендуется вводить эту конкретную команду sqlcl перед выполнением любых других команд или запросов, которые отображают данные.

Читайте также:  Матрица SWOT анализа внешней внутренней среды функционирования предприятия

SQL> tables

Чтобы узнать, на что ссылается псевдоним tables , вы можете просто использовать alias List

Вам не нужно определять этот псевдоним, так как он используется по умолчанию в SQLcl. Если вы хотите получить список таблиц из определенной схемы, используя новый пользовательский псевдоним и передавая имя схемы в качестве аргумента привязки с отображением только набора столбцов, вы можете сделать это, используя

SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner = :ownr;

После этого вы можете просто передать имя схемы в качестве аргумента.

SQL> tables_schema HR

Более сложный предопределенный псевдоним известен как Tables2 , который отображает несколько других столбцов.

Чтобы узнать, какой запрос выполняется в фоновом режиме, введите

Это покажет вам немного более сложный запрос вместе с предопределенными определениями column обычно используемыми в SQL * Plus.

Джефф Смит объясняет больше об псевдонимах здесь

Ответ 20

Я искал список всех имен столбцов, принадлежащих таблице схемы, отсортированный по порядку идентификатора столбца.

Вот запрос, который я использую: —

Ответ 21

Действительно, список таблиц можно получить с помощью запросов SQL. Это можно сделать также с помощью инструментов, которые позволяют создавать словари данных, такие как ERWIN, Toad Data Modeler или ERBuilder. С этими инструментами, в дополнение к именам таблиц, у вас будут поля, их типы, объекты типа (триггеры, последовательности, домен, представления. )

Ниже приведены шаги, которые необходимо выполнить для создания определения таблиц:

  1. Вы должны перепроектировать вашу базу данных
    • В Toad Data Modeler: Меню → Файл → Реверс инжиниринг → Мастер реинжиниринга
    • В ERBuilder Data Modeler: Меню → Файл → Обратный инженер

Ваша база данных будет отображаться в программном обеспечении в виде диаграммы отношений сущностей.

  1. Создайте свой словарь данных, который будет содержать ваше определение таблиц
    • В Моделе данных жаб: Меню → Модель → Создать отчет → Выполнить
    • В ERBuilder Data Modeler: Меню → Инструмент → создать документацию модели

Источник



Поиск значения поля по всей базе

Добрый день! учусь работать с Oracle 11

Малознакомая мне БД, 600 таблиц, мне необходимо найти поле и его значение по всей базе, смог получить только список таблиц с данным полем:

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Поиск по всей базе
Подскажите, можно ли сделать поиск значения по всей базе? Например мне в базе нужно найти номер.

Изменение значения поля во всей базе данных
Здравствуйте! Требуется изменить значение поля language_id со значением 2, на значение 1 во всей.

Поиск по всей базе
Здравствуйте! Есть БД, в которой имеется множество таблиц. Я знаю, что в колонке Name одной из.

Поиск по всей базе и вывод в таблицу
доброй ночи, прошу помочь разобраться в коде поиска в этом совершенно новичок не могу ее найти и.

Сообщение от gigstox

Вообще задача достаточно редкая и уж всяко не для начинающего. Опиши задачу, возможно это решается другими средствами.

Сообщение от Grossmeister

Вообще задача достаточно редкая и уж всяко не для начинающего. Опиши задачу, возможно это решается другими средствами.

Сообщение от gigstox

Хм.
Если колонка ДОЛЖНА содержать определенное(ные) значение, то это должно как-то контролироваться. На уровне приложения, с пом. constraint или триггера. Иначе это нарушение целостности данных, при том, что сохранение целостности данных является одним из основополагающих принципов реляционных СУБД. Если это до того никак не контролировалось, то это пример плохого дизайна БД.

Читайте также:  Создание и заполнение datatable из dataset

Но если уж сильно надо (например, учебная задача), то принцип я изложил в приведенной ссылке.

Источник

Получить список всех таблиц в Oracle?

Как я могу выполнить запрос к владельцу Oracle da SELECT , table_name FROM dba_tables ase, чтобы отображать имена всех DBA_TABLESles в нем?

Ответов: 19

1202 ов принято

Предполагается, что у вас есть доступ к SELECT_CATALOG_ROLE данным SYSionary view. Если вы не обладаете этими привилегиями, но нуждаетесь в них, вы можете запросить, чтобы администратор базы данных явно предоставлял вам привилегии в этой таблице или что администратор баз данных предоставляет вам SYSTEM привилегию или DBA_TABLES роль (любой из которых позволит вам запрашивать любые данные ALL_TABLESionary table ). Конечно, вы можете исключить определенные схемы, например, и которые имеют большое количество таблиц Oracle, которые вам, вероятно, не нужны . SELECT owner, table_name FROM all_tables ALL_TABLES

Кроме того, если у вас нет доступа USER_TABLES , вы можете увидеть все таблицы, к которым ваша учетная запись имеет доступ через представление: SELECT table_name FROM user_tables

Хотя это может быть подмножество таблиц, доступных в базе данных ( OWNER показывает вам информацию для всех таблиц, которым был предоставлен ваш пользователь).

Если вас интересуют только те таблицы, которыми вы владеете, а не те, к которым у вас есть доступ, вы можете использовать TAB :

Поскольку у вас TABS есть только информация о таблицах, которыми вы владеете, у нее нет CAT столбца — владелец, по определению, это вы.

Oracle также имеет ряд устаревших представлений словаря данных -. и TAB , например DICT , TAB — CAT которые могут быть использованы. В общем, я бы не предложил использовать эти устаревшие представления, если вам не нужно полностью использовать ваши сценарии для Oracle 6. Oracle не изменил эти представления за долгое время, поэтому у них часто возникают проблемы с новыми типами объектов. Например, в представлениях TAB и [DBA|ALL|USER]_TABLES представлениях отображается информация о таблицах, которые находятся в корзине пользователя, в то время как CAT все виды фильтруют их. TABLE_TYPE также показывает информацию о материализованных журналах просмотра с DICT таблицей «ТАБЛИЦА», которая вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кому принадлежит объект.

Запрос user_tables и dba_tables не работает.
Это было сделано:

Идя дальше, есть еще один вид, называемый cols (all_tab_columns), который может использоваться для определения того, какие таблицы содержат заданное имя столбца.

найти все таблицы, имеющие имя, начинающееся с EST, и столбцы, содержащие CALLREF в любом месте их имен.

Это может помочь при разработке тех столбцов, к которым вы хотите присоединиться, например, в зависимости от ваших соглашений об именах таблиц и столбцов.

Для лучшего просмотра с sqlplus

Если вы используете, sqlplus вы можете сначала настроить несколько параметров для более удобного просмотра, если ваши столбцы становятся искалеченными (эти переменные не должны сохраняться после выхода из sqlplus сеанса):

Показать все таблицы

Затем вы можете использовать что-то подобное, чтобы увидеть все имена таблиц:

Показать таблицы, которые вы используете

Как упоминает @Justin Cave, вы можете использовать это, чтобы показать только те таблицы, которые у вас есть:

Не забывайте о представлениях

Имейте в виду, что некоторые «таблицы» на самом деле могут быть «видами», поэтому вы можете попробовать запустить что-то вроде:

Результаты

Это должно дать что-то, что выглядит довольно приемлемым, например:

Простой запрос для выбора таблиц для текущего пользователя:

Источник