Обзор инструментов для работы с MySQL. Доступ к базе данных из метода Java. Отображаемые типы данных

Она быстра, надежна и очень проста в использовании. Одной из основных особенностей MySQL является её кросс-платформенная поддержка, она работает почти на всех операционных системах, включая Windows, OSX, Linux и многие другие. Поэтому MySQL является лучшей базой данных и мы все её используем. Вопрос сейчас состоит только в том, какие лучше инструменты использовать для работы с MySQL.

В обзоре ниже представлены некоторые из самых полезных и популярных средства разработки для Mac, Windows и Linux, для начинающих и для профессионалов. Среди этих инструментов особо стоит выделить PhpMyAdmin, MySQL Workbench, HeidiSQL и SequelPro .

MySQL Workbench (Win, Linux, Mac)

Это приложение представляет собой полнофункциональный инструмент для работы с данными, он включает проектирование баз данных, моделирование, создание и поддержание сгруппированных в единую среду разработки данных для MySQL. Бесплатная версия - Community Edition, которая содержит функции, которые будут удовлетворять практически все ваши потребности. Если вам будет не хватать каких-либо функций, то всегда можно перейти к коммерческой версии (Standard Edition).

dbForge Studio for MySQL

Heidi SQL - легкий и быстрый, с гибким интерфейсом, он позволяет Вам просматривать и редактировать ваши базы данных, управлять таблицами, просматривать и редактировать записи, управлять привилегиями пользователей, импортировать данные из текстовых файлов, запускать SQL запросы, синхронизировать таблицы между двумя базами данных и экспортировать выбранные таблицы в другие базы данных или SQL-скрипты, и все это с интуитивно понятным интерфейсом Windows.

Aqua Data Studio (Win, Linux, OS X, Solaris)

Это IDE состоит из четырех основных областей функциональности: работа с запросами и средства администрирования; инструмент для сравнения баз данных, source control и файловых систем; встроенный инструмент контроля версий Subversion (SVN) и CVS, и мощный инструмент моделирования баз данных. Studio имеет единый интерфейс для всех основных реляционных баз данных, это дает разработчику возможность одновременно решать несколько задач, в рамках одного приложения.

SQLyog MySQL GUI (Win)

SQLyog является еще одним популярным SQL-инструментом, который имеет несколько полезных функций, таких как визуальная схема дизайнера, визуальный построитель запросов, автовставка комманд и синхронизация данных / структуры. Он поддерживает HTTP / HTTPS / SSH туннелирование и SSL соединения. Вы также можете определить работу менеджера, установить запланированное резервное копирование баз данных и использовать сервис уведомлений, который будет напоминать когда какая-либо работа будет завершена. Существует бесплатная Community version и коммерческая Enterprise Edition. Вы также можете использовать MONyog, MySQL Monitor и Advisor.

MySQL-Front (Win)

Это графический GUI для MySQL баз данных, представляет собой "реальное" приложение, он может предложить более изысканный пользовательский интерфейс, чем это возможно в системах построеных на PHP и HTML. Мгновенный отклик, так как нет задержки при перезагрузке HTML-страниц. Если ваш провайдер позволяет, MySQL-Front можно напрямую соединить с базой данных. В противном случае, нужно только установить один небольшой скрипт на сайте. Информация о логине хранится на жестком диске, так что вам больше не нужно входить на различные веб-интерфейсы.

Sequel Pro (Mac OS X)

Эта MAC OSX приложение управления базы данных предоставляет вам прямой доступ к вашей MySQL базе данных на локальных и удаленных серверах с поддержкой импорта и экспорта данных из популярных файлов, включая SQL, CSV и XML. Sequel Pro провозгласил себя "Лучший средством управления базами данных MySQL для Mac OS X".

SQL Buddy (Web-App)

Это легкий инструмент для управления базами данных является поистине удивительным. Он очень, очень прост в установке, просто разархивируйте папку на сервере и всё. Что касается обновления, то удалите старую версию и замените его новой версией, всё просто.

EMS SQL Manager (Win)

EMS SQL Manager представляет собой довольно мощнейший инструмент для администрирования и разработки баз данных. Возможности включают: MySQL триггеры, представления, хранимые процедуры и функции, внешние ключи InnoDB, она позволяет создавать и редактировать все объекты баз данных MySQL, визуально проектировать базы данных, запускать сценарии SQL, импортировать и экспортировать данные, управление пользователями и их привилегиями, и многие другие полезные функции. Существует коммерческая версия, но можно скачать и бесплатную версию, она достаточно мощная и предлагает множество возможностей.

Navicat Lite MySQL Admin Tool (Win, OS X, Linux)

Navicat является быстрым, надежным и популярным (миллионы скачиваний) инструментов администрирования баз данных, специально построенном для упрощения управления базами данных и сокращение административных расходов. Разработанный для удовлетворения нужд администраторов баз данных, разработчиков, а также малых и средних предприятий, Navicat построен с интуитивно понятным графическим интерфейсом, который позволяет создавать, организовывать доступ и обмениваться информацией безопасным и простым способом. Navicat Lite доступна для бесплатного скачивания только для не-коммерческих клиентов.

DreamCoder for MySQL (Win)

DreamCoder работает со всеми версиями MySQL от 3.23 до 6.0, и поддерживает все функции MySQL, включая таблицы, представления, процедуры, функции, триггеры, таблицы InnoDB, внешние ключи, UDFS, типы BLOB и т.д. Он также включает в себя самые современные возможности для управления данными, позволяет визуально строить запросы, выполнять запросы, выполнять скрипты, генерировать отчеты, мониторить базу данных и экспортировать и импортировать данных в/из наиболее популярных файловых форматов. DreamCoder для MySQL является простым в использовании для начинающих пользователей MySQL и является достаточно мощными для любого опытного пользователя.

Toad MySQL (Win)

Toad для MySQL - это инструмент для разработки и администрирования баз данных, который обеспечивает высокие возможности для быстрого создания и выполнения запросов и управления сложными системами баз данных. Он предоставляет утилиты для сравнения, извлечение и поиска объектов, управление проектами, импорта / экспорта данных и администрирования БД.

DBManager это довольно мощное приложение управления данными. С встроенной поддержка MySQL, PostgreSQL, InterBase / Firebird, SQLite, DBF таблиц, MSAccess, MSSQL Server, Sybase, Oracle и ODBC баз данных, что делает его одним из самых передовых приложений баз данных. Free Edition (Standard Edition) имеет множество возможностей, что делает его идеальным для новых пользователей базы данных для выполнения основных функций управления базами данных, вы можете использовать его в не коммерческих целях.

MyDB Studio (Win)

MyDB Studio представляет собой полный набор мощных инструментов для администрирования серверов MySQL. MyDB Studio (Freeware) предназначен для MySQL-разработчиков и администраторов, для оперативного управления, создания и выполнения запросов и более эффективной разработки SQL и PHP-кода.

MySQL Sidu (Win)

MySQL Sidu является бесплатным MySQL-клиентом, который работает через веб-браузер, он является простым, интуитивно понятным инструментом. Sidu не столь мощный, как другие подобные инструменты, но он заслуживает свое место в этом списке, его функции могут быть ограничены, но он делает именно то, о чем говорит его имя (Sidu означает Select Insert Delete Update).
Вы также можете использовать специальный плагин для браузера Firefox, что позволяет вставлять данные из текстовых полей и textarea в веб-страницу. .


Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим

Вид основного окна программы-проводника представлен ниже. Слева в проводнике четыре основных навигационных элемента, выбор которых определяет содержимое правой части проводника.

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

    Данные – раздел данных демонстрационного примера. Здесь можно посредством пользовательского интерфейса корректировать набор демонстрационных данных.

    Таблицы – те же данные, но без прикладной интерпретации. Т.е. здесь отображается содержимое таблиц демонстрационного примера, "как оно есть": без подстановки текстовых значений справочников и ссылок. Достаточно сравнить содержимое подразделов Данные и Таблицы , и все станет ясно.

    Примеры – некоторые запросы, которые включены в состав компьютерного курса по SQL. Можно выбрать любой из этих разделов и посмотреть соответствующий ему SQL запрос. О том, как посмотреть SQL запрос чуть ниже.


Для ввода и выполнения SQL запроса выберите [раздел SQL] в левой части проводника, а в правой части нажмите [кнопку SQL].


После ввода запроса повторно нажмите [кнопку SQL] и подтвердите выполнение запроса.


В правой части будет отображен список, содержащий результат вашего запроса. Если список пустой, то, возможно, вы допустили синтаксическую ошибку, о которой просигнализируют кнопки в верхней части проводника. Нажав на них, вы сможете просмотреть журнал запросов и понять в чем дело. Выход из журнала запросов осуществляется нажатием на кнопку [“Открыть/Закрыть журнал событий”] - там же сверху.

Работа с утилитами базы данных

Для выполнения последних трех этапов вам понадобится дополнительная программа XDataUtilities.exe , предназначенная для выполнения модифицирующих базу данных SQL запросов. Она находится в том же архиве.


Результаты внесенных, таким образом, изменений вы сможете увидеть в , перейдя на соответствующий подраздел в левой части и, при необходимости, нажав на кнопку [Обновить документ].

Архив с обучающей программой компьютерного курса.

Важно : Для восстановления исходного варианта тестового набора данных достаточно скопировать файл Data.mdb из подкаталога BackUp в корень каталога, куда вы распаковали архив, поверх текущей версии файла Data.mdb . Обучающие программы на время этой операции следует закрыть.

ОТ ПЕРЕВОДЧИКА

Стремление использовать популярный язык Java в разработках приложений систем баз данных, потребовало создания необходимого для этих целей инструментария. Первым шагом в этой области стала, как известно, разработка компанией Javasoft спецификации JDBC интерфейса прикладного программирования на языке Java для доступа к реляционным базам данных, включенной компанией в состав JDK 1.1. Средства JDBC обеспечивают динамическое связывание Java-программ с SQL-базами данных. Создание дополнительных возможностей более высокого уровня для взаимодействия языка Java с системами реляционных баз данных было целью образованного в апреле 1997 года консорциума в составе компаний Compaq, IBM, Micro Focus, Microsoft, Compaq, Informix, Oracle, Sun и Sybase. В короткие сроки его участники разработали спецификации SQLJ, состоящие из трех частей, и предложили их ANSI для принятия в качестве официального стандарта. SQLJ Часть 0 обеспечивает встраивание статических операторов SQL в Java-программы и тем самым доступ из них к базам данных. Эта спецификация вошла как одна из частей в разрабатываемый новый стандарт языка SQL под названием «Связывания для объектных языков (SQL/OLB)». Она была одобрена ANSI в декабре 1998 года В сентябре 1999 года аккредитованный при ANSI Национальный комитет по стандартам информационных технологий (NCITS) одобрил SQLJ Часть 1 - спецификацию, которая дает возможность создавать хранимые Java-программы для SQL-баз данных. Третья часть проекта - SQLJ Часть 2 «Типы данных SQL, использующие язык программирования Java» находится в настоящее время на рассмотрении в ANSI. Ранее в нашем журнале (см. N 4 за 1999 года) был опубликован перевод статьи, посвященной SQLJ Части 0, редакторов колонки стандартов из журнала SIGMOD Record Э. Айзенберга и Дж. Мелтона. Ниже мы публикуем перевод следующей статьи этих авторов, посвященной SQLJ, в которой обсуждаются возможности только что одобренного стандарта SQLJ Части 1.

М. Когаловский

ВВЕДЕНИЕ

Неформальная группа компаний SQLJ продолжала продуктивно работать с тех пор, как мы в последний раз писали о них в декабре 1998 года . В то время мы обсуждали стандарт SQLJ Часть 0 , который только что был одобрен как стандарт NCITS «SQL Часть 10: Связывания для объектных языков» (SQL Part 10: Object-Language Bindings, SQL/OLB). Этот стандарт позволяет встраивать операторы SQL в программы на языке Java.

В первой половине 1999 года группа SQLJ, состоящая из компаний Cloudscape, Compaq (Tandem), IBM, Informix, Oracle, Sun и Sybase, завершила работу над спецификацией SQLJ Часть 1 и запросила NCITS принять ее по ускоренной процедуре.

В сентябре 1999 года это произошло - SQLJ Часть 1 была принята в качестве стандарта NCITS 331.1-1999 , и теперь документацию этого стандарта можно приобрести через NCITS. Заслуживает внимания то обстоятельство, что эта спецификация чрезвычайно доступна, включает большой учебный материал, который служит введением к ее более нормативным элементам.

Компания Sybase представила спецификацию SQLJ Часть 1 группе SQLJ в начале 1997 года Фил Шоу (Phil Shaw) из Sybase выполнял функции редактора этого документа на протяжении всей его разработки. SQLJ Часть 1 позволяет включать в среду СУБД классы Java, содержащиеся в Jar-файлах. Методы этих классов могут быть далее использованы в качестве реализации хранимых процедур и хранимых функций SQL (называемых вместе хранимыми программами).

В этой работе приводится сначала краткое введение в SQL-программы (SQL Routines), а затем мы перейдем к рассмотрению возможностей SQLJ Части 1.

SQL-ПРОГРАММЫ

В 1996 г. в «SQL Части 4: Долговременно хранимые модули (SQL Persistent Stored Modules», SQL/PSM) была предложена концепция SQL-программ. Мы обсудим ее в этом разделе, главным образом, на примере.

SQL-функции имеют только входные параметры и продуцируют результат некоторого определяемого SQL типа данных. После того, как функция определена, она может вызываться из любого выражения.

CREATE FUNCTION pub_year (INTEGER volume) RETURNS CHAR (4) BEGIN RETURN CAST (volume + 1971 AS CHAR(4)); END ; SELECT * FROM sigmod_articles sa WHERE pub_year (sa.volume) = ?1995?;

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

SQL-процедуры могут иметь параметры, для которых можно задать режим IN, OUT или INOUT (IN - значение по умолчанию). Они не возвращают значений таким образом, как это делают SQL-функции.

CREATE PROCEDURE pub_info (IN INTEGER volume, IN INTEGER no, OUT CHAR(4) yyyy, OUT CHAR(3) mmm) BEGIN yyyy = pub_year (volume); CASE no WHEN 1 THEN SET mmm = ?MAR?; WHEN 2 THEN SET mmm - ?JUN?; WHEN 3 THEN SET mmm = ?SEP?; WHEN 4 THEN SET mmm = ?DEC?; ELSE SET mmm = ?????; END CASE ; END DECLARE p_year CHAR (4); DECLARE p_month CHAR (3); CALL pub_info (22, 3, p_year, p_month);

В этом примере определяется процедура pub_info, которая принимает в качестве входных параметров том и номер журнала, а затем производит результирующие значения - год и месяц его выпуска, которые соответствуют заданным входным параметрам. После того, как вызвана pub_info, переменные p_year и p_month будут содержать, соответственно, ?1993? и?SEP?. В обоих приведенных типах SQL-программ тело состоит из оператора SQL, который может быть и составным (BEGIN/END).

Оба типа программ также могут быть определены как внешние программы. Такие программы имеют ту же самую сигнатуру, но вместо тела с операторами SQL они содержат имя точки входа в код, написанный на некотором языке третьего поколения (3GL).

CREATE FUNCTION pub_year (INTEGER volume) RETURNS CHAR (4) LANGUAGE c EXTERNAL NAME [email protected]? PARAMETER STYLE GENERAL

Формат строки, которая идентифицирует внешнюю точку входа, определяется конкретной СУБД (иногда на него оказывает влияние конкретная операционная система). Вызов этих внешних программ ничем не отличается от SQL-программ.

Отметим, наконец, что процедуры обладают еще одной возможностью, о которой следует упомянуть. Они могут возвращать один или более наборов результатов наряду с теми скалярными значениями, которые они возвращают через параметры OUT и INOUT. Интерфейсы уровня вызовов, такие как ODBC и JDBC, предусматривают некоторые методы, которые позволяют приложению исследовать эти наборы результатов.

CREATE PROCEDURE article_count (IN INTEGER a_volume) READS SQL DATA DYNAMIC RESULT SETS 1 BEGIN DECLARE result CURSOR WITH RETURN FOR SELECT no, COUNT(*) FROM sigmod_articles sa WHERE sa.volume = a_volume GROUP BY no ; OPEN c1; END ;

В приведенном примере сначала устанавливается, что он будет возвращать не более одного результирующего набора. Далее в этой процедуре объявляется и открывается курсор, который будет возвращать программе, вызвавшей процедуру, строки результата, поскольку этот курсор был декларирован с атрибутами WITH RETURN и поскольку он был оставлен открытым.

Теперь, после того, как мы вспомнили основные возможности SQL/PSM, можно перейти к новому материалу. Дополнительную информацию относительно SQL-программ читатель может найти в ранней статье Э. Айзенберга .

УСТАНОВКА JAR-ФАЙЛОВ

Первый шаг, который вы должны сделать для использования SQLJ Часть 1, состоит в том, чтобы импортировать классы Java в базу данных. Ваши классы должны быть в одном или более

Jar-файлов. Это довольно легко сделать, используя утилиту Jar, которую поставляет компания Sun в ее инструментальных пакетах Java SDK.

Пусть, например, мы имеем класс Java, содержащий реализацию функции SQL pub_year, которую мы видели ранее.

Public class Sigmod { public static String pubYear (int volume) { return String.valueOf (volume + 1971); } }

CALL sqlj.install_jar (?file:///d:/Sigmod.jar?, ?sigmod_jar?, 0);

Эта операция будет копировать содержимое Jar-файла (указанного с помощью URL) в базу данных и присвоит SQL-имя этому Jar-файлу. Первые две части SQL-имени этого Jar-файла (имя каталога и имя схемы) не указываются в этом примере, и поэтому они являются определенными неявно (в SQL для этого предусматриваются правила, которые применяются в таком случае к именам многих видов объектов базы данных). Хотя приведенный оператор имеет форму вызова процедуры, на самом деле он действует как оператор языка определения данных (DDL). Последний его аргумент 0 указывает, что не должен использоваться дескриптор развертывания (мы обсудим дескрипторы развертывания немного позднее).

Для краткости мы ограничимся здесь только упоминанием того, что SQLJ Часть 1 предоставляет процедуру sqlj.replace_jar и процедуру sqlj.remove_jar, которые позволяют поддерживать установленные Jar-файлы и осуществлять в них необходимые изменения с течением времени.

СОЗДАНИЕ JAVA-ПРОГРАММ

Для того, чтобы содержимое Jar-файла могло принести пользу, нужно иметь виртуальную машину Java (Java Virtual Machine, JVM). Поставщик СУБД должен предоставлять специализированную JVM вместе с его программным продуктом либо он может предусмотреть возможность применения любой JVM, которая поддерживается используемой операционной системой.

Классы, которые мы импортировали, могут содержать множество методов. В SQLJ Части 1 мы будем непосредственно использовать только такие методы, которые одновременно обладают атрибутами public и static. Статические методы выполняются независимо от какого-либо конкретного экземпляра объекта. Подобно всем другим методам, эти методы могут возвращать значения некоторого типа данных, или они могут быть снабжены атрибутом void.

Итак, мы располагаем общедоступными статическими (public static) методами, JVM, в которых они могут выполняться, и желаем вызывать их изнутри SQL. Одно из решений, которое можно было бы принять, состоит в том, чтобы ввести новые операторы SQL для вызова этих методов. Вместо этого, однако, было принято иное решение, предусматривающее обеспечение отображения SQL-программ в методы Java. При таком подходе приложение может вызывать эти программы точно таким же образом, как оно вызывало бы другие типы SQL-программ. Java-программа (Java Routine) является такой программой, которая имеет отображение в реализующий ее метод Java.

Отображаемые типы данных

Для вызова SQL-программы, который бы приводил к вызову метода Java, аргументы этой SQL-программы должны стать аргументами метода Java. При этом имеет смысл использовать в SQLJ Части 1 то же самое отображение, что и определено в JDBC между типами данных SQL и типами данных Java.

Напомним, что Java предоставляет некоторые примитивные типы данных, которые имеют адапторы (wrappers) ассоциированных с ними классов. Тип данных SQL и тип данных Java являются отображаемыми, если они являются отображаемыми простым образом (simply mappable) - в примитивные типы данных Java, объектно отображаемыми (object mappable) или отображаемыми по выходу (output mappable). Этот последний вариант мы обсудим, когда перейдем к рассмотрению процедур Java.

В этой таблице «-» указывает то же самое значение, что и указано в столбце «Объектно отображаемый».

Функции Java

В SQLJ Части 1 определен новый вариант CREATE FUNCTION, который обеспечивает отображение между сигнатурой функции SQL и методом Java.

jar-имя: имя метода (сигнатура).

Здесь «jar-имя» - это имя SQL, которое было дано Jar-файлу, «имя метода» состоит из имени метода вместе с указанием класса и, возможно, пакета, который его содержит. Третья часть ссылки «сигнатура» - является факультативной. Если она не задана, то используется сигнатура, содержащая тип данных Java по умолчанию для каждого типа данных SQL в сигнатуре SQL.

Определим функцию Java следующим способом:

CREATE FUNCTION j_pub_year (INTEGER volume) RETURNS CHAR (4) EXTERNAL NAME ?sigmod_jar:pubYear? LANGUAGE JAVA PARAMETER STYLE JAVA ;

Чтобы создать функцию Java, параметры SQL должны быть отображаемыми в соответствующие параметры метода Java, типы результатов их обоих должны быть отображаемыми, и метод должен быть одновременно как public, так и static (как мы уже упоминали ранее).

После того, как функция Java создана, она вызывается точно так же, как любая другая функция SQL.

SELECT * FROM sigmod_articles sa WHERE j_pub_year (sa.volume) = ?1995?;

Процедуры Java

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

Таблица 1.
Тип данных SQL Отображаемый простым образом Объектно отображаемый
CHAR - String
VARCHAR - String
LONGVARCHAR - String
NUMERIC - java.math.BigDecimal
DECIMAL - java.math.BigDecimal
BIT boolean Boolean
TINYINT byte Integer
SNALLINT short Integer
INTEGER int Integer
BIGINT long Long
REAL float Float
FLOAT double Double
DOUBLE double Double
BINARY - byte
VARBINARY - byte
LONGVARBINARY - byte
DATE - java.sql.Date
TIME - java.sql.Time
TIMESTAMP - java.sql.Timestamp

Однако Java позволяет изменять состояния объектов, которые передаются методу. В SQLJ Части 1 принято соглашение о том, что метод Java должен использовать одноэлементный массив для передачи значений параметров OUT и INOUT. Единственный элемент этого массива может быть прочитан методом как входное значение, и метод может установить для него выходное значение. Это приводит нас к третьей форме отображения, упоминавшейся ранее. Тип данных SQL является отображаемым по выходу в массив типов Java, в который он отображаем простым образом или объектно-отображаем. Это означает, что тип SQL INTEGER является отображаемым по выходу в int или в Integer.

Предположим, что следующий метод, обеспечивающий реализацию в Java процедуры SQL pub_info, которую мы рассматривали ранее, был включен в наш класс Sigmod:

Public static void pubInfo (int volume,int no, String yyyy, String mmm) { yyyy = pubYear(volume); if (no == 1) mmm = «MAR»; else if (no == 2) mmm = «JUN»; else if (no == 3) mmm = «SEP»; else if (no == 4) mmm}

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то