SQL Developer — это широко используемая интегрированная среда разработки (IDE) для работы с базами данных SQL. Одной из его наиболее полезных функций является возможность отображения номеров строк в редакторе кода. Номера строк значительно упрощают навигацию и отладку кода, поскольку разработчики могут быстро определить местоположение ошибок или определенных разделов кода. Без номеров строк разработчикам, возможно, придется просматривать большие блоки кода, чтобы найти нужную строку, тратя драгоценное время и усилия.
Еще одной полезной функцией SQL Developer является возможность открывать запросы на новой вкладке. Эта функция позволяет разработчикам работать над несколькими запросами одновременно, повышая производительность и результативность. Вместо того чтобы закрывать текущий запрос для работы над другим, разработчики могут просто открыть его на новой вкладке. Это экономит время и снижает риск потери кода или совершения ошибок в процессе. Каждый запрос может быть отредактирован и выполнен независимо, что упрощает управление сложными задачами базы данных.
Номера строк также играют решающую роль в контроле версий и совместной работе. Когда над проектом работают несколько разработчиков, наличие номеров строк облегчает обсуждение конкретных строк кода и ссылки на них. Это помогает разрешать конфликты, понимать изменения и просматривать модификации кода. Номера строк служат ориентирами при проверке кода, гарантируя, что все члены команды находятся на одной странице и могут предоставить точную обратную связь или предложения.
В дополнение к номерам строк SQL Developer также предлагает различные другие функции для улучшения разработки запросов. Он включает в себя предложения по автозаполнению, которые предоставляют контекстно-зависимые предложения по мере ввода разработчиками. Эта функция экономит время за счет уменьшения необходимости вводить целые запросы, а также помогает предотвратить синтаксические ошибки. Кроме того, SQL Developer может выполнять запросы и отображать результаты в одном интерфейсе, что сокращает необходимость переключения между различными приложениями или окнами.
Включение номеров строк и возможность открывать запросы на новых вкладках значительно улучшают общий пользовательский опыт SQL Developer. Эти функции не только делают разработку более эффективной и продуктивной, но и способствуют совместной работе и простоте использования. Разработчики могут быстро выявлять и исправлять ошибки, легче перемещаться по коду и работать с несколькими запросами одновременно. Благодаря этим функциям SQL Developer предлагает надежную и удобную в использовании среду для разработки баз данных SQL.
В этом материале мы будем рассматривать стандартные настройки и проблемы при работе с SQL Developer.
Как выводить запросы на новой вкладке?
По умолчанию каждый запрос в клиенте выводится в одном окне. Чтобы включить вывод на каждом новом окне нужно зайти в Tools -> Preferences
Далее находим Database -> Worksheet. В этом окне ставим галку на пункт Show query results in new tabs.
Как включить номера строк в редакторе?
Чтобы вывести номера строк в редакторе достаточно в левой части редактора кликнуть правой кнопкой мыши и нажать Toggle Line Numbers
Как решить ошибку 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
Что нужно проверить в файле 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
Откроется приложение Службы. В ней необходимо найти службу OracleOraDB21Home1TNSListener и включить её. Она должна быть в статусе «Выполняется».
Возможно, она не запустится с первого раза. В таком случае перезапустите службу OracleServiceXE.
Запуск зависает на Restoring Windows
Бывает, что запуск зависает на пункте Restoring Windows и дальше не идёт (в некоторых случаях в итоге загружается спустя долгое время). Есть два варианта решения проблемы. Первый — завершить процесс через диспетчер задач и заново его запустить
Второй вариант — очистить папку системного кэша клиента. Он находится здесь:
C:Users[ваше_имя_пользователя]AppDataRoamingSQLDevelopersystem19.2.1.247.2212system_cache.
Номер после system может быть другой — зависит от версии клиента (Appdata — скрытая папка, нужно включить отображение в проводнике).
Удаляйте все файлы в этой папке и запускайте клиент (все настройки, в т.ч. подключения сохранятся)
Работа с БД
Небольшая шпаргалка для тех, кто только начинает осваивать 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
После чего откроется пошаговый мастер. На первом необходимо выбрать базу, из таблиц которых будет строится диаграмма. Выбираете и нажимаете Next (попросит ввести пароль, даже если вы уже подключены к базе)
Дальше нужно выбрать владельца БД. Можете выбрать все, можете выбрать конкретных.
Затем выбираем объекты (таблицы) и также нажимаем Next
Дальше подтверждаем генерацию дизайна и ждём. Найти диаграмму (предварительно её сохранить) можно во вкладке Browser (View ->Data Modeler)
Он будет открыт снизу от вкладки Connections.
Как теперь найти связь между таблицами? Можем выбрать таблицу и посмотреть на неё в ER-диаграмме. Щелкаем правой кнопкой и в контекстном меню выбираем Go to Diagram
После этого мы увидим её на общей диаграмме
И сможем посмотреть связь с другой таблицей по первичному ключу, если кликнуть по связи:
Группировка значений по признаку
Существует задача, где в результате запроса остались только те 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)