SQLDeveloper : номера строк, запросы в новой вкладке, etc

SQL Developer — это широко используемая интегрированная среда разработки (IDE) для работы с базами данных SQL. Одной из его наиболее полезных функций является возможность отображения номеров строк в редакторе кода. Номера строк значительно упрощают навигацию и отладку кода, поскольку разработчики могут быстро определить местоположение ошибок или определенных разделов кода. Без номеров строк разработчикам, возможно, придется просматривать большие блоки кода, чтобы найти нужную строку, тратя драгоценное время и усилия.

Еще одной полезной функцией SQL Developer является возможность открывать запросы на новой вкладке. Эта функция позволяет разработчикам работать над несколькими запросами одновременно, повышая производительность и результативность. Вместо того чтобы закрывать текущий запрос для работы над другим, разработчики могут просто открыть его на новой вкладке. Это экономит время и снижает риск потери кода или совершения ошибок в процессе. Каждый запрос может быть отредактирован и выполнен независимо, что упрощает управление сложными задачами базы данных.

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

В дополнение к номерам строк SQL Developer также предлагает различные другие функции для улучшения разработки запросов. Он включает в себя предложения по автозаполнению, которые предоставляют контекстно-зависимые предложения по мере ввода разработчиками. Эта функция экономит время за счет уменьшения необходимости вводить целые запросы, а также помогает предотвратить синтаксические ошибки. Кроме того, SQL Developer может выполнять запросы и отображать результаты в одном интерфейсе, что сокращает необходимость переключения между различными приложениями или окнами.

Включение номеров строк и возможность открывать запросы на новых вкладках значительно улучшают общий пользовательский опыт SQL Developer. Эти функции не только делают разработку более эффективной и продуктивной, но и способствуют совместной работе и простоте использования. Разработчики могут быстро выявлять и исправлять ошибки, легче перемещаться по коду и работать с несколькими запросами одновременно. Благодаря этим функциям SQL Developer предлагает надежную и удобную в использовании среду для разработки баз данных SQL.

В этом материале мы будем рассматривать стандартные настройки и проблемы при работе с SQL Developer.

 

Как выводить запросы на новой вкладке?

По умолчанию каждый запрос в клиенте выводится в одном окне. Чтобы включить вывод на каждом новом окне нужно зайти в Tools -> Preferences

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Далее находим Database -> Worksheet. В этом окне ставим галку на пункт Show query results in new tabs.

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Как включить номера строк в редакторе?

Чтобы вывести номера строк в редакторе достаточно в левой части редактора кликнуть правой кнопкой мыши и нажать Toggle Line Numbers

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Как решить ошибку c адаптером при подключении (ORA-17002: io exception: the network adaptor could not establish the connection Vendor code 17002)

Ошибка с адаптером — одна из самых встречающихся проблем при первых запусках SQL Developer. Решения проблемы есть две.

Отредактировать файл listener.ora и tnsnames.ora

Необходимо проверить содержание файлов listener.ora и tnsnames.ora. Они находится в этом каталоге:

C:app[ваше_имя_пользователя]product21chomesOraDB21Home1networkadmin.

Путь может отличатся в зависимости от того, куда был установлен Oracle Database Express Edition

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Что нужно проверить в файле listener.ora : в первую очередь смотрите хост. Возможно, там будет вписан какой-то левый IP. Измените его на localhost.

# listener.ora Network Configuration File: C:appDevRocketsproduct21chomesOraDB21Home1NETWORKADMINlistener.ora
# Generated by Oracle configuration tools.

DEFAULT_SERVICE_LISTENER = XE

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:appDevRocketsproduct21cdbhomeXE)
(PROGRAM = extproc)
(ENVS = «EXTPROC_DLLS=ONLY:C:appDevRocketsproduct21cdbhomeXEbinoraclr.dll»)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

Что нужно проверить в файле tnsnames.ora: Проверьте чтобы service name совпадал с тем, что у вас прописано в SQLDeveloper при подключении. У нас прописана стандартная база:

# tnsnames.ora Network Configuration File: C:appDevRocketsproduct21chomesOraDB21Home1NETWORKADMINtnsnames.ora
# Generated by Oracle configuration tools.

XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XEPDB1)
)
)

LISTENER_XE =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)

Запустить службу OracleOraDB21Home1TNSListener

Нажимаем  Windows+R, чтобы открылась командная строка (либо запустите её другим способом) и впишите туда services.msc

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Откроется приложение Службы. В ней необходимо найти службу OracleOraDB21Home1TNSListener и включить её. Она должна быть в статусе «Выполняется».

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Возможно, она не запустится с первого раза. В таком случае перезапустите службу OracleServiceXE.

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Запуск зависает на Restoring Windows

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Бывает, что запуск зависает на пункте Restoring Windows и дальше не идёт (в некоторых случаях в итоге загружается спустя долгое время). Есть два варианта решения проблемы. Первый — завершить процесс через диспетчер задач и заново его запустить

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Второй вариант — очистить папку системного кэша клиента. Он находится здесь:

C:Users[ваше_имя_пользователя]AppDataRoamingSQLDevelopersystem19.2.1.247.2212system_cache.

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

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Удаляйте все файлы в этой папке и запускайте клиент (все настройки, в т.ч. подключения сохранятся)

Работа с БД

Небольшая шпаргалка для тех, кто только начинает осваивать Oracle

Создание временной таблицы из запроса

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

CREATE GLOBAL TEMPORARY TABLE temp_table_name    ON COMMIT PRESERVE ROWS as    SELECT ID as f, NAME as d, CITY as t    FROM your_table_name;

Запись ON COMMIT PRESERVE ROWS означает, что данные будут удалены в конце сеанса. На то она и временная таблица. Так же обратите внимание, что на каждый столбец нужно повесить идентификатор.

Сопоставление данных из двух таблиц

Обычный сплит данных из двух таблиц (без JOIN и UNION)

SELECT a.super_id, b.puper_id  FROM table1 e, table2 b WHERE a.super_id = b.puper_id;

Запрос из трёх таблиц

Делаем аналогично, так же как и с двумя таблицами, просто в условии Where у нас попадает чуть больше соединений

select table1.id, table2.superid, table3.puperid  from table1, table2, table3  where table1.id = table2.superid  and table2.superid = table3.puperid

Ищем часть значения в столбце через Like

Иногда нам нужно вычленить те строки, которые содержат определенные значения. Если с регулярными выражениями вы не очень, то здесь их знания не нужны

select * from Your_table  where Super_id like '%123%'

Этот запрос вернет все super_id в которых встречается 123 (в любом месте).

Как создать схему данных (диаграмму ERP)

Как проверить связность таблиц в базе? Для этого в SQLDeveloper есть инструмент Data Modeler. Открываем следующее: File -> Data Modeler -> Import -> Data Dictionary

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

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

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Дальше нужно выбрать владельца БД. Можете выбрать все, можете выбрать конкретных.

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Затем выбираем объекты (таблицы) и также нажимаем Next

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Дальше подтверждаем генерацию дизайна и ждём. Найти  диаграмму (предварительно её сохранить) можно во вкладке Browser (View ->Data Modeler)

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Он будет открыт снизу от вкладки Connections.

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Как теперь найти связь между таблицами? Можем выбрать таблицу и посмотреть на неё в ER-диаграмме. Щелкаем правой кнопкой и в контекстном меню выбираем Go to Diagram

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

После этого мы увидим её на общей диаграмме

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

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

Номера строк, запросы в новой вкладке и другие хинты SQLDeveloper

Группировка значений по признаку

Существует задача, где в результате запроса остались только те ID, у которых все значения соседнего столбца оказались одинаковыми (значение или null). Сделать это можно следующим образом:

SELECT *  FROM table1 t1  WHERE NOT EXISTS (    SELECT NULL    FROM table1 t2    WHERE t1.id = t2.id      AND t2.range2 <> '0 - 0'  )

Готовый пример в SQLFiddle

Все таблицы и столбцы в БД

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

SELECT * FROM all_tab_columns

Посмотреть столбцы и тип данных в конкретной таблице

Можно проверить имя и тип данных столбцов в отдельной странице командой DESCRIBE TABLE_NAME или использовать следующий запрос:

SELECT column_name FROM all_tab_columns WHERE table_name='TABLE_NAME';

Обойти ограничение Where в 1000 значений

В запросе Where есть ограничение в 1000 значений. Что делать, если туда необходимо затолкать несколько больше?

SELECT * FROM table_name  WHERE superid in (value1....value999)    or superid in (value999...value1999)
  

Добавить комментарий