Show Tables in SQL Server
There are a few ways to list tables in SQL Server.
All Tables and Views
The easiest way to find all tables in SQL is to query the INFORMATION_SCHEMA views.
You do this by specifying the information schema, then the “tables” view.
Here’s an example.
This will show the name of the table, which schema it belongs to, and the type.
The type will either be “BASE TABLE” for tables or “VIEW” for views.
SQL Server 2000
If you’re running SQL Server 2005 you can use the information_schema method above. If you’re on 2000 or earlier, then you’ll need to use a different method.
You can query the SYSOBJECTS view to find all of the tables in the database. This shows all objects, so to filter it to tables we can filter on the xtype column equals the value of “U”, which represents a user table.
Here’s the query:
Подстановочные знаки
Подстановочный знак совпадает с любой последовательностью из нуля или более символов. Ниже приведена измененная версия предыдущего запроса, в которой используется шаблон, содержащий знак процента.
Оператор указывает SQL, что необходимо сравнивать содержимое столбца с шаблоном «Smith% Corp.». Этому шаблону соответствуют все перечисленные ниже имена.
Smith Corp.
Smithsen Corp.
Smithson Corp.
Smithsonian Corp.
А вот эти имена данному шаблону не соответствуют.
SmithCorp
Smithson Inc.
Подстановочный знак (символ подчеркивания) совпадает с любым отдельным символом. Например, если вы уверены, что название компании либо «Smithson», либо «Smithsen», то можете воспользоваться следующим запросом.
В таком случае шаблону будет соответствовать любое из представленных ниже имен.
Smithson Corp.
Smithsen Corp.
Smithsun Corp.
А вот ни одно из следующих ему соответствовать не будет.
Smithsoon Corp.
Smithsn Corp.
Подстановочные знаки можно помещать в любое место строки шаблона, и в одной строке может содержаться несколько подстановочных знаков. Следующий запрос допускает как написание «Smithson» и «Smithsen», так и любое другое окончание названия компании, включая «Corp.», «Inc.» или какое-то другое.
С помощью формы можно находить строки, которые не соответствуют шаблону. Проверку можно применять только к столбцам, имеющим строковый тип данных. Если в столбце содержится значение , то результатом проверки будет .
Вероятно, вы уже встречались с проверкой на соответствие шаблону в операционных системах, имеющих интерфейс командной строки (таких, как Unix). Обычно в этих системах звездочка () используется для тех же целей, что и символ процента () в SQL, а вопросительный знак () соответствует символу подчеркивания () в SQL, но в целом возможности работы с шаблонами строк в них такие же.
Show Tables in PostgreSQL
There are a couple of ways to view a list of tables in PostgreSQL.
Show Tables
If you’re using a command line, you can use the dt command to display all tables:
This won’t work in an IDE, but there is another method for that.
Show Tables and Descriptions
If you’re using a command line, you can use the dt command to display all tables plus the table descriptions:
As above, there is another method if you’re not using the command line.
Select from Catalog
If you want another method, or if you’re using an IDE and can’t use \dt, then you can select from the pg_catalog schema.
Here’s an example:
This will show you information for all tables in the database. The WHERE clause filters out system tables, but you can omit the WHERE clause and see those tables if you need to.
Представления словаря данных
Словарь данных содержим метаданные: грубо говоря данные о данных. Он содержит описание базы данных, физическую и логическую структуру и содержание БД. Учётные записи, информация о безопасности, целостные ограничения и (начиная с версии 10g) информацию о производительности – всё это хранится в словаре данных. Логически это набор сегментов а табличных пространствах SYSTEM и SYSAUX.
Сегменты словаря данных практически идентичны обычным пользовательским сегментам (таблицам и индексам). Ключевым различием является то, что таблицы словаря данных создаются в момент создания БД и не могут быть использованы напрямую. Конечно физически это возможно,но любые изменения могут привести к нарушению БД и никто не сможет вам помочь. Создание словаря данных – это часть процесса создания базы данных. Словарь данных управляется DDL (Data Definition Language) командами. Когда вы запускаете команду CREATE TABLE – вы не только создаёте сегмент данных для хранения строк в нем – ваша команда также добавит строки в различные таблицы словаря данных, которые содержат информацию о табличном пространстве, extent-ах, столбцах и владельце сегмента.
Для просмотра словаря данных, Oracle предоставляет набор представлений, отличающихся префиксом: DBA_, ALL_ или USER_. Практически все представления созданы для всех трёх префиксов. Любое представление начинающееся с USER_ отобразит инфомрацию об объектах, владельцем которых является текущий пользователь. Если пользователя ВАСЯ будет просматривать представление USER_TABLES, то он увидит только таблицы владельцем которых он является. Представления начинающиеся с ALL_ отображают объекты, к которым у текущего пользователя есть доступ. Т.е. если выполнить запрос в ALL_TABLES то вернутся строки таблица которые вы создали, плюс строки о таблицах других пользователей к которым у вас есть доступ для просмотра. Любое представление с префиксом DBA_ содержит информацию о всех объектах в БД, то есть DBA_TABLES будет содержать строки для всех таблиц во всей базе данных, без разницы кто их создал. Рисунок 3-10 отображает концепцию трех видов представлений. Для доступа к представлениям с префиксом DBA _– у пользователя дожны быть права доступа DBA.
Эти представления создаются во время создания БД, вместе с огромным количеством PL/SQL пакетов, которые предоставляет Oracle для упрощения администрарования БД и разработки приложений.
Существует несколько сот представлений словаря данных. Некоторые часто используемые DBA это
DBA_OBJECT содержит строки для всех объектов в БД
DBA_DATA_FILES каждая строка описаывает файл данных
DBA_USER строки отображают информацию об учётной записи
DBA_TABLES описание таблиц
DBA_ALERT_HISTORY строки описывают последние события для записи в системный журнал
Также существует много других представлений и вместе с представлениями создаются синонимы. Следующий запрос
select object_name,owner, object_type from dba_objects where object_name=’DBA_OBJECTS’;
показывает, что фактически владельцем представления DBA_OBJECTS является SYS и создан синоним с таким же названием, к которому и выполнен запрос.
Проверка на принадлежность диапазону (BETWEEN)
Следующей формой условия отбора является проверка на принадлежность диапазону значений (оператор ), схематически изображенная на рис. 7. При этом проверяется, находится ли элемент данных между двумя заданными значениями. В условие отбора входят три выражения. Первое выражение определяет проверяемое значение; второе и третье выражения определяют нижнюю и верхнюю границы проверяемого диапазона. Типы данных трех выражений должны быть сравнимыми.
Рис. 7. Синтаксическая диаграмма проверки на принадлежность диапазону (between)
Следующий пример иллюстрирует типичную процедуру проверки на принадлежность диапазону.
Найти все заказы, сделанные в последнем квартале 2007 года.
При проверке на принадлежность диапазону верхняя и нижняя границы считаются частью диапазона, поэтому в результаты запроса вошли заказы, сделанные 1 октября и 31 декабря. Далее приведен другой пример проверки на принадлежность диапазону.
Найти заказы, стоимости которых попадают в различные диапазоны.
Инвертированная версия проверки на принадлежность диапазону () позволяет выбрать значения, которые лежат за пределами диапазона, как в следующем примере.
Вывести список служащих, фактические объемы продаж которых не попадают в диапазон от 80 до 720 процентов плана.
Проверяемое выражение, задаваемое в операторе , может быть любым допустимым выражением SQL, однако на практике оно обычно представляет собой имя столбца.
В стандарте ANSI/ISO определены относительно сложные правила обработки значений в проверке .
- Если проверяемое выражение имеет значение либо оба выражения, определяющие диапазон, равны , то проверка возвращает .
- Если выражение, определяющее нижнюю границу диапазона, имеет значение , то проверка between возвращает false, когда проверяемое значение больше верхней границы диапазона, и — в противном случае.
- Если выражение, определяющее верхнюю границу диапазона, имеет значение , то проверка between возвращает false, когда проверяемое значение меньше нижней границы диапазона, и — в противном случае.
Однако прежде чем полагаться на эти правила, неплохо было бы поэкспериментировать со своей СУБД.
Необходимо отметить, что проверка на принадлежность диапазону не расширяет возможности SQL, поскольку ее можно выразить в виде двух сравнений. Проверка
полностью эквивалентна сравнению
Тем не менее проверка является более простым способом выразить условие отбора в терминах диапазона значений.
Просмотр таблицы
Посмотреть на созданную таблицу можно с помощью команды SELECT * FROM <название таблицы>. Например:
# SELECT * FROM users; fio | company | phone | email ----------------------------+---------------+-------------+---------------- Иванов Иван Алексеевич | ООО "Ромашка" | 89057362761 | [email protected] Донченко Иван Андреевич | ООО "Ромашка" | 89038276494 | [email protected] Девин Алексей Владимирович | ООО "Начало" | 89069384782 | [email protected] (3 rows)
Можно вывести определённые колонки указав их вместо звездочки:
# SELECT fio, phone FROM users; fio | phone ----------------------------+------------- Иванов Иван Алексеевич | 89057362761 Донченко Иван Андреевич | 89038276494 Девин Алексей Владимирович | 89069384782 (3 rows)
Можно вывести определённые строки с помощью WHERE <условие>:
# SELECT * FROM users WHERE company = 'ООО "Ромашка"'; fio | company | phone | email -------------------------+---------------+-------------+---------------- Иванов Иван Алексеевич | ООО "Ромашка" | 89057362761 | [email protected] Донченко Иван Андреевич | ООО "Ромашка" | 89038276494 | [email protected] (2 rows)
В качестве условия можем указать, что значение в определённой колонке должно:
- чему-то равняется;
- быть больше или меньше определённого значения;
- содержать что-то;
- и другое.
Можем комбинировать эти методы, например:
# SELECT fio, phone FROM users WHERE company = 'ООО "Ромашка"'; fio | phone -------------------------+------------- Иванов Иван Алексеевич | 89057362761 Донченко Иван Андреевич | 89038276494 (2 rows)
А ещё можем отсортировать таблицу по какой-нибудь строке:
# SELECT fio, phone FROM users ORDER BY fio; fio | phone ----------------------------+------------- Девин Алексей Владимирович | 89069384782 Донченко Иван Андреевич | 89038276494 Иванов Иван Алексеевич | 89057362761
Условий может быть несколько, например ФИО должно содержать Иван, а телефон должен заканчиваться на 94:
# SELECT * FROM users WHERE fio ~ 'Иван' AND phone ~ '.*94$'; fio | company | phone | email -------------------------+---------------+-------------+---------------- Донченко Иван Андреевич | ООО "Ромашка" | 89038276494 | [email protected]
Знак “~” – означает что значение должно содержать, а не равняться.
Также в примере выше я показал, что в условии можно использовать регулярные выражения.
Комбинировать условия можно с помощью AND и OR.
Исправьте ошибку ora-00942
Прежде всего, небольшой отказ от ответственности. Я не администратор баз данных, я администратор Windows, а также специалист по аппаратному и настольному оборудованию. Я знаю, как запустить SQL, но не до какой-то степени опыта и, конечно, не до уровня, который может устранять проблемы. Я должен был попросить моего друга Oracle DBA о помощи, поэтому, пока я писал эту часть, все умные биты принадлежали ему.
Этот список из трех причин ошибки ora-00942 не является исчерпывающим. Есть, очевидно, другие случайные причины этого, но эти три, по-видимому, наиболее распространены.
Недостаточно прав пользователя
Одной из основных причин ошибки ora-00942 является то, что у пользователя недостаточно прав для доступа к рассматриваемой таблице. Вы можете проверить это, выполнив два запроса.
-- перечислить системные привилегии для пользователя или роли SELECT * FROM dba_sys_privs ГДЕ получатель гранта (user_role, 'PUBLIC');
— список привилегий объекта для пользователя или роли
SELECT грантополучатель, владелец || '.' || объект table_name, привилегия, грантируемое FROM dba_tab_privs ГДЕ получатель гранта (user_role) ORDER BY грантополучатель, владелец || '.' || table_name, привилегия;
Эти двое скажут вам, имеет ли данный пользователь правильные привилегии для запуска команды. Если пользователь имеет правильные привилегии, переходите к следующему. Если пользователь не имеет правильных привилегий, предоставьте их им или попросите администратора БД сделать это.
Ошибка ora-00942 также может возникнуть, если пользователь используемой схемы имеет привилегии INSERT, но не привилегии SELECT. Опять же, проверьте уровень привилегий и добавьте SELECT в список или попросите администратора БД сделать это. Очевидно, что каждой схеме должна быть предоставлена определенная привилегия SELECT, в противном случае вы все равно увидите ошибку ora-00942.
Таблица или представление на самом деле не существуют
Причиной ошибки ora-00942 может быть неправильный синтаксис запроса или отсутствие таблицы. Хотя это может показаться логичным для начала, я уверен, что привилегия пользователя является причиной ошибки номер один. Таблица, которой там нет или используется неверный синтаксис таблицы, занимает второе место.
Чтобы проверить, существует ли таблица, сначала проверьте синтаксис запроса. Если синтаксис правильный, запустите этот запрос.
ВЫБЕРИТЕ владельца, имя_объекта, тип_объекта ОТ всех_объектов WHERE object_type IN ('TABLE', 'VIEW') AND имя_объекта = ‘YOUR_TABLE_NAME ';
В последней строке вставьте фактическое имя таблицы, где вы видите «YOUR_TABLE_NAME». Это должно точно сказать вам, существует ли таблица, к которой вы пытаетесь обратиться, или нет. Если он возвращается без таблицы, запрашиваемая вами таблица не существует в схеме или базе данных.
Если в используемой вами системе есть меню «Таблицы», вы можете вручную проверить таблицу, если хотите, но вышеуказанный запрос выполняет свою работу.
Таблица или представление находятся в другой схеме
Если у пользователя есть права, и таблица существует, но вы все еще видите ошибку ora-00942, скорее всего, это связано со схемой. Если вы управляете несколькими схемами, легко выполнить запрос к схеме, которая не принадлежит вам. Когда вы заняты и против этого, это простая ошибка, чтобы сделать.
Проверьте схему вручную, если можно или добавьте имя схемы в строке ОТ вашего запроса. Если у вас нет правильных привилегий для новой схемы, вы снова увидите ошибку ora-00942. Вернитесь к первому исправлению привилегий пользователя и проверьте соответствующую схему или попросите своего администратора базы данных сделать это за вас.
Как упомянуто выше, я проконсультировался с моим приятелем по DBA Oracle для этой работы, так что вся заслуга ему в тяжелой работе. Если вы обнаружите здесь какие-либо ошибки или упущения, они одни. Дайте мне знать в разделе комментариев, если я что-то пропустил или ошибся, и я исправлю это.
Если вам известен какой-либо другой способ исправить ошибку ora-00942, сообщите нам об этом ниже!
Какие бывают обобщенные табличные выражения?
Они бывают простые и рекурсивные.
Простые не включают ссылки на самого себя, а рекурсивные соответственно включают.
Рекурсивные ОТВ используются для возвращения иерархических данных, например, классика жанра это отображение сотрудников в структуре организации (чуть ниже мы это рассмотрим).
В качестве тестовых данных давайте использовать таблицу TestTable, которая будет содержать идентификатор сотрудника, его должность и идентификатор его начальника.
Где,
- UserID — идентификатор сотрудника;
- Post — должность;
- ManagerID — идентификатор начальника.
Как видите, у директора отсутствует ManagerID, так как у него нет начальника. А теперь переходим к примерам.
Вставка (INSERT)
Синтаксис 1:
> INSERT INTO <table> (<fields>) VALUES (<values>)
Синтаксис 2:
> INSERT INTO <table> VALUES (<values>)
* где table — имя таблицы, в которую заносим данные; fields — перечисление полей через запятую; values — перечисление значений через запятую.
* первый вариант позволит сделать вставку только по перечисленным полям — остальные получат значения по умолчанию. Второй вариант потребует вставки для всех полей.
1. Вставка нескольких строк одним запросом:
> INSERT INTO cities (`name`, `country`) VALUES (‘Москва’, ‘Россия’), (‘Париж’, ‘Франция’), (‘Фунафути’ ,’Тувалу’);
* в данном примере мы одним SQL-запросом добавим 3 записи.
2. Вставка из другой таблицы (копирование строк, INSERT + SELECT):
Синтаксис при копировании строк из одной таблицы в другую выглядит так:
> INSERT INTO <table1> SELECT * FROM <table2> WHERE <условие для select>;
* где table1 — куда копируем; table2 — откуда копируем.
а) скопировать все без разбора:
> INSERT INTO cities-new SELECT * FROM cities;
* в данном примере мы скопируем все строки из таблицы cities в таблицу cities-new.
б) скопировать определенные столбцы строк с условием:
> INSERT INTO cities-new (`name`, `country`) SELECT `name`, `country` FROM cities WHERE name LIKE ‘М%’;
* извлекаем все записи из таблицы cities, названия которых начинаются на «М» и заносим в таблицу cities-new.
в) копирование с обновлением повторяющихся ключей.
Если копировать таблицы несколько раз, то может возникнуть проблема повторения первичного ключа. В базах данных значения таких ключей должны быть уникальными и при попытке вставить повтор мы получим ошибку «Duplicate entry ‘xxx’ for key ‘PRIMARY’». Чтобы новые строки вставить, а повторяющиеся обновить (если есть изменения), используем «ON DUPLICATE KEY UPDATE»:
> INSERT INTO cities-new SELECT * FROM cities ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `country`=VALUES(`country`);
* в данном примере, как и в предыдущих, мы копируем данные из таблицы cities в таблицу cities-new. Но при совпадении значений первичного ключа мы будем обновлять поля name и country.
Обновление (UPDATE)
Синтаксис:
> UPDATE <table> SET <field>='<value>’ WHERE <conditions>
* где table — имя таблицы; field — поле, для которого будем менять значение; value — новое значение; conditions — условие (без него делать update опасно — можно заменить все данные во всей таблице).
Обновление с использованием замены (REPLACE):
UPDATE <table> SET <field> = REPLACE(<field>, ‘<что меняем>’, ‘<на что>’);
Примеры:
UPDATE cities SET name = REPLACE(name, ‘Масква’, ‘Москва’);
UPDATE cities SET name = REPLACE(name, ‘Масква’, ‘Москва’) WHERE country = ‘Россия’;
UPDATE cities SET name = REPLACE(name, ‘Ма’, ‘Мо’) WHERE name = ‘Масква’;
Если мы хотим перестраховаться, результат замены можно сначала проверить с помощью SELECT:
SELECT REPLACE(name, ‘Ма’, ‘Мо’) FROM cities WHERE name = ‘Масква’;
О правильном и неправильном использовании представлений SQL
- Чтобы сфокусировать, упростить и персонализировать базу данных для каждого пользователя.
- Чтобы в целях безопасности позволить пользователям доступ только к той информации, которая им требуется.
- Чтобы обеспечить обратную совместимость со старой таблицей или старой схемой, не повредив зависящие приложения. Это временная мера до тех пор, пока не завершатся необходимые изменения.
- Чтобы разделить данные, приходящие с разных серверов. Тем самым создается впечатление, что это одна таблица на одном сервере или экземпляре.
- Не использовать представление в другом представлении, которое будет использоваться, в свою очередь, еще в одном представлении. Короче говоря, речь идет о глубоко вложенных представлениях. Такое повторное использование кода имеет несколько недостатков.
- Экономия при наборе. Это связано с первым случаем, который уменьшает количество нажатий клавиш и, кажется, ускоряет написание кода.
Пример
-- Имена сотрудников и основная контактная информация CREATE VIEW . AS SELECT e. ,p. ,p. ,p. ,p. ,p. ,e. ,pp. ,pnt. AS ,ea. ,p. ,a. ,a. ,a. ,sp. AS ,a. ,cr. AS ,p. FROM . e INNER JOIN . p ON p. = e. INNER JOIN . bea ON bea. = e. INNER JOIN . a ON a. = bea. INNER JOIN . sp ON sp. = a. INNER JOIN . cr ON cr. = sp. LEFT OUTER JOIN . pp ON pp.BusinessEntityID = p. LEFT OUTER JOIN . pnt ON pp. = pnt. LEFT OUTER JOIN . ea ON p. = ea.; GO
- В SQL Server Management Studio выберем базу данных AdventureWorks.
- Развернем папку Views и выберем ..
- Щелкнем правой кнопкой и выберем View Dependencies.
Оператор SELECT sql
SQL-запрос Select предназначен для обычной выборки из базы данных. Т.е. если нам необходимо просто получить данные, не делая с ними никакой обработки и не внося изменений в базу данных, то можно смело использовать данный запмагарос.
Синтаксис оператора SELECT
Рассмотрим примеры sql запросов select:
Пример : если вы создали локальную базу данных и заполнили таблицы, как в рассмотренном ранее уроке (или же воспользовались сервисом sqlFiddle), то выполним следующий пример.
Необходимо выбрать все записи из таблицы
SELECT * FROM teachers; |
Задание 1_1. . Вывести все поля из таблицы Группы.
SELECT name, zarplata FROM teachers; |
Выберет все значения полей и в том же порядке (сначала , затем )
Задание 1_2. . Получить информацию только о фамилии и годе рождения из таблицы
Сортировка в SQL
SELECT name, zarplata, premia FROM teachers ORDER BY name; |
Выберет значения полей , , и отсортирует по полю (по алфавиту)
Пример: БД «Компьютерный магазин». Выбрать данные о скорости и памяти компьютеров. Требуется упорядочить результирующий набор по скорости процессора в порядке возрастания.
SELECT `Скорость`,`Память` FROM `pc` ORDER BY `Скорость` ASC |
Или
SELECT `Скорость`,`Память` FROM `pc` ORDER BY 1 ASC |
Результат:
Сортировку можно выполнять по двум полям:
SELECT `Скорость`,`Память` FROM `pc` ORDER BY `Скорость` ASC, `Память` ASC |
Задание sql select 1_1. База данных : Получить информацию только о скорости процессора и объеме оперативной памяти компьютеров.
Задание sql select 1_2. База данных : Требуется упорядочить результирующий набор по объему оперативной памяти в порядке убывания.
SELECT name, zarplata, premia FROM teachers ORDER BY name DESC; |
Выберет значения полей , , и отсортирует по полю по убыванию
Задание 1_3. . Вывести информацию о фамилиях и годах рождения. Упорядочить результирующий набор по году рождения в порядке убывания.
Удаление повторяющихся значений в SQL
Пример БД «Институт»: требуется узнать возможные варианты размера премий. Если не использовать , в результате будет выдаваться два одинаковых значения. Удалить в sql повторяющиеся значения можно при введении — в результате дублирующиеся значения не повторяются.
-
SELECT premia FROM teachers;
-
SELECT DISTINCT premia FROM teachers;
Рассмотрим другой пример из базы данных «Компьютерный магазин»:
Пример: База данных «Компьютерный магазин»: требуется получить информацию только о скорости процессора и объеме оперативной памяти компьютеров
SELECT Скорость, Память FROM PC; |
Результат:
В таблице первичным ключом является поле . Поскольку это поле отсутствует в запросе, в приведенном выше результирующем наборе имеются дубликаты строк.
Когда требуется получить уникальные строки (например, нас интересуют только различные комбинации скорости процессора и объема памяти, а не характеристики всех имеющихся компьютеров), то нужно использовать :
SELECT DISTINCT Скорость, Память FROM PC; |
Результат:
Задание sql select 1_3. База данных : Из таблицы выбрать различные страны-производители.
Задание sql select 1_1. БД «Институт» Выполните запрос на выборку и из таблицы учителей. Отсортируйте фамилии учителей по убыванию
Задание sql select 1_2. БД «Институт» Выведите возможные варианты длины курсов () из таблицы курсов (), удалив повторяющиеся значения
Задание 1_4. . Из таблицы личные данные вывести поля и . Получить уникальные строки
MS SQL Server — как вывести список всех таблиц
При запуске компоненты администрирования MS SQL Server Managment Studio появляется ошибка: Could not load file
Администрирование
26 октября в 2 часа ночи произошел перевод часов на 1 час назад. Убедитесь, что
DBF — это формат хранения данных, который используется для хранения и передачи данных системами
VPN
Брандмауэр Windows — это встроенный файервол (firewall) Windows, который призван защищать компьютер от угроз
Администрирование
Купил домой ноутбук Lenovo IdeaPad Z500 с предустановленной Windows 8. Однако с течением времени
Что делать если нет пароля администратора SA MS SQL Server managment studio и нет
как использовать ограничения по умолчанию в MySQL | серия 20 | СЕРИЯ MySQL | КЛАСС 11 КОМПЬЮТЕРНЫЕ НАУКИ / IP
Как мне запросить базу данных Oracle для отображения имен всех таблиц в ней?
- 1 Есть (как это сделано в MySQL) работает?
- 1 @MartinThoma нет. попробовал это сначала, прежде чем прибегать к Google
Предполагается, что у вас есть доступ к просмотр словаря данных. Если у вас нет этих привилегий, но они вам нужны, вы можете запросить, чтобы администратор баз данных явно предоставил вам привилегии для этой таблицы, или чтобы администратор базы данных предоставил вам привилегия или роль (любая из которых позволит вам запрашивать любую таблицу словаря данных). Конечно, вы можете исключить определенные схемы, например а также которые содержат большое количество таблиц Oracle, которые вам, вероятно, не нужны.
В качестве альтернативы, если у вас нет доступа к , вы можете увидеть все таблицы, к которым у вашей учетной записи есть доступ, через Посмотреть:
Хотя это может быть подмножество таблиц, доступных в базе данных ( показывает информацию для всех таблиц, к которым вашему пользователю предоставлен доступ).
Если вас интересуют только таблицы, которыми вы владеете, а не те, к которым у вас есть доступ, вы можете использовать :
поскольку содержит информацию только о таблицах, которыми вы владеете, у него нет столбец владельцем, по определению, является вы.
В Oracle также есть несколько устаревших представлений словарей данных: , , , а также например — это можно было бы использовать. В общем, я бы не предлагал использовать эти унаследованные представления, если вам абсолютно не нужно переносить ваши скрипты в Oracle 6. Oracle давно не менял эти представления, поэтому у них часто возникают проблемы с новыми типами объектов. Например, а также оба представления показывают информацию о таблицах, которые находятся в корзине пользователя, а просмотры все отфильтровывают. также показывает информацию о материализованных журналах просмотра с «ТАБЛИЦА», что вряд ли будет тем, что вам действительно нужно. объединяет таблицы и синонимы и не сообщает вам, кому принадлежит объект.
9 Я получаю исключение «ORA-00942: таблица или представление не существует» 46 Значит, вам не разрешили просматривать все таблицы в базе данных. Вы можете запросить представление словаря данных ALL_TABLES, чтобы увидеть все таблицы, к которым вам разрешен доступ, которые могут быть небольшим подмножеством таблиц в базе данных. Простая ошибка, если не обычный пользователь sqlplus: добавьте конечную точку с запятой (‘;’), если вы просто не получаете результатов с помощью вышеуказанных команд
Обратите внимание, что в Oracle 12c в словаре данных dba_users есть столбец, который помогает удалить системные таблицы из набора результатов. Полный запрос будет: SELECT owner, table_name from dba_tables, where owner not in (выберите имя пользователя из dba_users, где oracle_mainhibited = ‘Y’). Запрос а также не сработало
Это сделал:
Запрос а также не сработало. Это сделал:
14 @LimitedAtonement Извините, это неправильно. Представление называется user_tables, а не user_table. Если user_tables не работает для vitule, значит что-то еще не так.
Пройдя еще один шаг, есть еще одно представление под названием cols (all_tab_columns), которое можно использовать для определения, какие таблицы содержат данное имя столбца.
Например:
чтобы найти все таблицы, имена которых начинаются с EST, и столбцы, содержащие CALLREF в любом месте их имен.
Это может помочь при выборе столбцов, к которым вы хотите присоединиться, например, в зависимости от соглашений об именах таблиц и столбцов.
4 я сделал select * from cols и получил 0 строк.