Apache Derby — Введение
Apache Derby — это реляционная система управления данными, полностью основанная на (написанном / реализованном) языке программирования Java. Это база данных с открытым исходным кодом, разработанная Apache Software Foundation.
Oracle выпустила эквивалент Apache Derby с именем JavaDB.
Особенности Apache Derby
Ниже приведены заметные особенности базы данных Derby —
-
Независимо от платформы — Derby использует формат базы данных на диске, где базы данных в нем хранятся в файле на диске в каталоге с тем же именем, что и база данных.
-
Без изменения данных — благодаря этому вы можете перемещать базы данных derby на другие машины без изменения данных.
-
Поддержка транзакций — Derby обеспечивает полную поддержку транзакций, обеспечивая целостность данных.
-
Включение баз данных — вы можете включить предварительно созданные / существующие базы данных в ваши текущие приложения для дерби.
-
Меньше места — база данных Derby занимает небольшую площадь, т. Е. Она занимает меньше места и ее легко использовать и развертывать.
-
Внедрение с Java-приложением — Derby предоставляет встроенный механизм базы данных, который может быть встроен в Java-приложения, и он будет работать в той же JVM, что и приложение. Простая загрузка драйвера запускает базу данных и останавливается вместе с приложениями.
Независимо от платформы — Derby использует формат базы данных на диске, где базы данных в нем хранятся в файле на диске в каталоге с тем же именем, что и база данных.
Без изменения данных — благодаря этому вы можете перемещать базы данных derby на другие машины без изменения данных.
Поддержка транзакций — Derby обеспечивает полную поддержку транзакций, обеспечивая целостность данных.
Включение баз данных — вы можете включить предварительно созданные / существующие базы данных в ваши текущие приложения для дерби.
Меньше места — база данных Derby занимает небольшую площадь, т. Е. Она занимает меньше места и ее легко использовать и развертывать.
Внедрение с Java-приложением — Derby предоставляет встроенный механизм базы данных, который может быть встроен в Java-приложения, и он будет работать в той же JVM, что и приложение. Простая загрузка драйвера запускает базу данных и останавливается вместе с приложениями.
Ограничения Apache Derby
Ниже приведены ограничения Apache Derby —
-
Derby не поддерживает индексы для типов данных, таких как BLOB и LONGVARCHAR.
-
Если в Derby недостаточно места на диске, он немедленно отключится.
Derby не поддерживает индексы для типов данных, таких как BLOB и LONGVARCHAR.
Если в Derby недостаточно места на диске, он немедленно отключится.
Хранилище данных
При хранении данных Apache Derby следует концепции, известной как конгломерат . При этом данные таблицы будут храниться в отдельном файле. Таким же образом каждый индекс таблицы также хранится в отдельном файле. Таким образом, для каждой таблицы или индекса в базе данных будет отдельный файл.
Apache Derby Library / Компоненты
В дистрибутив Apache Derby входят различные компоненты. В папке lib загруженного вами дистрибутива apache вы можете увидеть файлы jar, представляющие различные компоненты.
Jar файл | Составная часть | Описание |
---|---|---|
derby.jar | Database Engine и драйвер JDBC |
Механизм базы данных Apache Derby — это встроенный механизм реляционной базы данных, который поддерживает JDBC и SQL API. Он также действует как встроенный драйвер, с помощью которого вы можете общаться с Derby с помощью приложений Java. |
derbynet.jar derbyrun.jar | Сетевой сервер |
Сетевой сервер Apache Derby обеспечивает функциональность клиентского сервера, где клиенты могут подключаться к серверу Derby через сеть. |
derbyclient.jar | Драйвер JDBC сетевого клиента | |
derbytools.jar | Инструменты командной строки | Этот файл jar содержит такие инструменты, как sysinfo, ij и dblook . |
derbyoptionaltools.jar | Дополнительные утилиты командной строки (инструменты) |
Этот файл JAR содержит дополнительные инструменты: дополнительный инструмент databaseMetaData, дополнительный инструмент foreignViews, дополнительный инструмент luceneSupport, дополнительный инструмент rawDBReader, дополнительный инструмент simpleJson и т. Д. |
derbyLocale_XX.jar | Jar-файлы для локализации сообщений |
В дополнение к вышеупомянутым jar-файлам вы можете увидеть несколько derbyLocale_XX.jar (es, fr, hu, it, ja и т. Д.). Используя их, вы можете локализовать сообщения Apache Derby. |
Механизм базы данных Apache Derby — это встроенный механизм реляционной базы данных, который поддерживает JDBC и SQL API.
Он также действует как встроенный драйвер, с помощью которого вы можете общаться с Derby с помощью приложений Java.
Сетевой сервер Apache Derby обеспечивает функциональность клиентского сервера, где клиенты могут подключаться к серверу Derby через сеть.
Этот файл JAR содержит дополнительные инструменты: дополнительный инструмент databaseMetaData, дополнительный инструмент foreignViews, дополнительный инструмент luceneSupport, дополнительный инструмент rawDBReader, дополнительный инструмент simpleJson и т. Д.
В дополнение к вышеупомянутым jar-файлам вы можете увидеть несколько derbyLocale_XX.jar (es, fr, hu, it, ja и т. Д.). Используя их, вы можете локализовать сообщения Apache Derby.
Apache Derby — режимы развертывания
Вы можете развернуть Apache Derby в двух режимах, а именно: встроенный режим и режим сервера.
Встроенный режим
Вы можете запустить дерби во встроенном режиме, используя приложение Java (используя встроенный драйвер). Если вы развернете Derby во встроенном режиме, ядро базы данных будет работать в той же JVM, что и приложение Java. Он начинается и заканчивается с приложением. Вы можете получить доступ к базе данных только с помощью этого приложения.
Режим сервера
В режиме сервера derby будет запускаться в JVM сервера приложений, где вы можете отправить запрос на сервер для доступа к нему. В отличие от встроенного режима, несколько приложений (Java) могут отправить запрос на сервер и получить доступ к базе данных.
Apache Derby — Настройка среды
Следующая глава объясняет, как загрузить и установить Apache Derby.
Загрузка Apache Derby
Посетите домашнюю страницу домашней страницы Apache Derby https://db.apache.org/derby/ . Нажмите вкладку Скачать.
Выберите и нажмите на ссылку последней версии Apache Derby.
При нажатии на выбранную ссылку вы будете перенаправлены на страницу « Распределения» Apache Derby. Если вы заметили, что derby предоставляет дистрибутивы, а именно: db-derby-bin, db-derbylib.zip, db-derby-lib-debug.zip и db-derby-src.zip.
Загрузите папку db-derby-bin . Скопируйте его содержимое в отдельную папку, в которую вы хотите установить Apache Derby. (например, скажем, C: \ Derby )
Теперь, чтобы работать с Дерби,
-
Убедитесь, что вы уже установили переменную JAVA_HOME , передав местоположение папки bin папки установки Java, и включите JAVA_HOME / bin в переменную PATH.
-
Создайте новую переменную среды DERBY_HOME со значением C: \ Derby.
-
Папка bin дистрибутивов db-derby-bin (мы изменили ее как C: \ Derby \ bin) содержит все необходимые файлы jar.
Убедитесь, что вы уже установили переменную JAVA_HOME , передав местоположение папки bin папки установки Java, и включите JAVA_HOME / bin в переменную PATH.
Создайте новую переменную среды DERBY_HOME со значением C: \ Derby.
Папка bin дистрибутивов db-derby-bin (мы изменили ее как C: \ Derby \ bin) содержит все необходимые файлы jar.
Как уже говорилось, Apache Derby может быть установлен / развернут двумя способами:
-
Встроенный режим — для этого вам необходим доступ к базе данных с помощью драйвера Embedded Derby JDBC. Вы можете запустить и остановить дерби через приложение Java. И ядро базы данных, и ваше приложение будут работать на одной и той же JVM.
-
Режим сетевого сервера — в этом режиме вы можете получить доступ к Derby типичным способом клиент-сервер, где Derby встроен в систему сервера. Затем клиентские машины, работающие на разных JVM (серверных), будут отправлять запросы на сервер, и сервер отвечает на эти запросы.
Встроенный режим — для этого вам необходим доступ к базе данных с помощью драйвера Embedded Derby JDBC. Вы можете запустить и остановить дерби через приложение Java. И ядро базы данных, и ваше приложение будут работать на одной и той же JVM.
Режим сетевого сервера — в этом режиме вы можете получить доступ к Derby типичным способом клиент-сервер, где Derby встроен в систему сервера. Затем клиентские машины, работающие на разных JVM (серверных), будут отправлять запросы на сервер, и сервер отвечает на эти запросы.
Клиент может быть другой JVM на том же компьютере системы сервера или приложением Java из удаленной системы.
Установка Derby во встроенном режиме
Чтобы установить Apache Derby во встроенном режиме, включите файл jar derby.jar в свой CLASSPATH.
Или вы можете установить classpath для необходимых jar-файлов, выполнив команду setEmbeddedCP . Просмотрите каталог bin в Apache Derby и запустите этот файл, как показано ниже —
C:\Users\MYUSER>cd %DERBY_HOME%/bin C:\Derby\bin>setEmbeddedCP.bat C:\Derby\bin>SET DERBY_HOME=C:\Derby C:\Derby\bin>set CLASSPATH=C:\Derby\lib\derby.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib/derby optionaltools.jar;C:\Users\Tutorialspoint\Google Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1- bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40- bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit Update\jars;C:\Program Files\Apache Software Foundation\Tomcat 8.5\lib\*;C:\Derby\lib\*;
После настройки Apache Derby, для доступа к нему, запустите Java-программы, используя встроенный драйвер.
верификация
Вы можете проверить настройки с помощью инструмента ij , как показано ниже —
C:\Derby\bin>ij ij version 10.14 ij> connect 'jdbc:derby:SampleDB;create=true'; ij>
Установка Derby в режиме сетевого сервера
Чтобы установить Apache Derby в режиме сетевого сервера, вам необходимо включить файлы CLASSPATH в файлы derbynet.jar и derbytools.jar .
Или вы можете установить путь к классу для необходимых файлов JAR, запустив команду setNetworkServerCP . Просмотрите каталог bin в Apache Derby и запустите этот файл, как показано ниже —
C:\Users\MYUSER>cd %DERBY_HOME%/bin C:\Derby\bin>setNetworkServerCP.bat C:\Derby\bin>SET DERBY_INSTALL=C:\Derby C:\Derby\bin>set CLASSPATH=C:\Derby\lib\derbynet.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib/de rbyoptionaltools.jar;C:\Users\Tutorialspoint\Google Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1- bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40- bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit Update\jars;C:\Program Files\Apache Software Foundation\Tomcat 8.5\lib\*;C:\Derby\lib\*;
Запуск дерби в режиме сервера
Вы можете запустить сетевой сервер, выполнив команду startNetworkServer . Просмотрите каталог bin в Apache Derby и выполните эту команду, как показано ниже —
C:\Derby\bin>startNetworkServer Fri Jan 04 11:20:30 IST 2019 : Security manager installed using the Basic server security policy. Fri Jan 04 11:20:30 IST 2019 : Apache Derby Network Server - 10.14.2.0 - (1828579) started and ready to accept connections on port 1527
Или вы можете запустить сервер с помощью derbyrun.jar, как показано ниже —
C:\Users\MYUSER>cd %DERBY_HOME%/lib C:\Derby\lib>java -jar derbyrun.jar server start Fri Jan 04 11:27:20 IST 2019: Security manager installed using the Basic server security policy. Fri Jan 04 11:27:21 IST 2019: Apache Derby Network Server - 10.14.2.0 - (1828579) started and ready to accept connections on port 1527
Сетевой клиент
В клиенте добавьте файлы jar derbyclient.jar и derbytools.jar в CLASSPATH. Или выполните команду setNetworkClientCP, как показано ниже —
C:\Users\MYUSER>cd %DERBY_HOME%/bin C:\Derby\bin>setNetworkClientCP C:\Derby\bin>SET DERBY_HOME=C:\Derby C:\Derby\bin>set CLASSPATH=C:\Derby\lib\derbyclient.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib /derbyoptionaltools.jar;C:\Derby\lib\derby.jar;C:\Derby\lib\derbytools.jar;C:\D erby/lib/derbyoptionaltools.jar;C:\Users\Tutorialspoint\Google Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1- bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40- bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit Update\jars;C:\Program Files\Apache Software Foundation\Tomcat 8.5\lib\*;C:\Derby\lib\*;
Затем с этого клиента вы можете отправлять запросы на сервер.
верификация
Вы можете проверить настройки с помощью инструмента ij , как показано ниже —
C:\Derby\bin>ij ij version 10.14 ij> connect 'jdbc:derby://localhost:1527/SampleDB;create=true'; ij>
Apache Derby Eclipse Environment
При работе с Eclipse вам необходимо установить путь сборки для всех необходимых jar-файлов.
Шаг 1: Создайте проект и установите путь сборки
Откройте затмение и создайте пример проекта. Щелкните правой кнопкой мыши по проекту и выберите опцию Build Path -> Configure Build Path, как показано ниже —
Во фрейме пути сборки Java на вкладке « Библиотеки » нажмите « Добавить внешние JAR-файлы» .
И выберите необходимые файлы jar в папке lib установочной папки Derby и нажмите « Применить и закрыть» .
Apache Derby — Инструменты
Apache Derby предоставляет вам такие инструменты, как sysinfo, ij и, dblook .
инструмент sysinfo
Используя этот инструмент, вы можете получить информацию о среде Java и Derby.
Просмотрите папку bin установочного каталога Derby и выполните команду sysinfo, как показано ниже:
C:\Users\MY_USER>cd %DERBY_HOME%/bin C:\Derby\bin>sysinfo
При выполнении он дает вам системную информацию о Java и дерби, как указано ниже —
------------------ Java Information ------------------ Java Version: 1.8.0_101 Java Vendor: Oracle Corporation Java home: C:\Program Files\Java\jdk1.8.0_101\jre Java classpath: C:\Users\Tutorialspoint\Google Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1- bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40- bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit Update\jars;C:\Program Files\Apache Software Foundation\Tomcat 8.5\lib\*;C:\Derby\lib\derby.jar;C:\Derby\lib\derbyclient.jar;C:\Derby\lib\derb yLocale_cs.jar;C:\Derby\lib\derbyLocale_de_DE.jar;C:\Derby\lib\derbyLocale_es.j ar;C:\Derby\lib\derbyLocale_fr.jar;C:\Derby\lib\derbyLocale_hu.jar;C:\Derby\lib \derbyLocale_it.jar;C:\Derby\lib\derbyLocale_ja_JP.jar;C:\Derby\lib\derbyLocale _ko_KR.jar;C:\Derby\lib\derbyLocale_pl.jar;C:\Derby\lib\derbyLocale_pt_BR.jar;C :\Derby\lib\derbyLocale_ru.jar;C:\Derby\lib\derbyLocale_zh_CN.jar;C:\Derby\lib\ derbyLocale_zh_TW.jar;C:\Derby\lib\derbynet.jar;C:\Derby\lib\derbyoptionaltools .jar;C:\Derby\lib\derbyrun.jar;C:\Derby\lib\derbytools.jar;;C:\Derby/lib/derby. jar;C:\Derby/lib/derbynet.jar;C:\Derby/lib/derbyclient.jar;C:\Derby/lib/derbyto ols.jar;C:\Derby/lib/derbyoptionaltools.jar OS name: Windows 10 OS architecture: amd64 OS version: 10.0 Java user name: Tutorialspoint Java user home: C:\Users\Tutorialspoint Java user dir: C:\Derby\bin java.specification.name: Java Platform API Specification java.specification.version: 1.8 java.runtime.version: 1.8.0_101-b13 --------- Derby Information -------- [C:\Derby\lib\derby.jar] 10.14.2.0 - (1828579) [C:\Derby\lib\derbytools.jar] 10.14.2.0 - (1828579) [C:\Derby\lib\derbynet.jar] 10.14.2.0 - (1828579) [C:\Derby\lib\derbyclient.jar] 10.14.2.0 - (1828579) [C:\Derby\lib\derbyoptionaltools.jar] 10.14.2.0 - (1828579) ------------------------------------------------------ ----------------- Locale Information ----------------- Current Locale : [English/United States [en_US]] Found support for locale: [cs] version: 10.14.2.0 - (1828579) Found support for locale: [de_DE] version: 10.14.2.0 - (1828579) Found support for locale: [es] version: 10.14.2.0 - (1828579) Found support for locale: [fr] version: 10.14.2.0 - (1828579) Found support for locale: [hu] version: 10.14.2.0 - (1828579) Found support for locale: [it] version: 10.14.2.0 - (1828579) Found support for locale: [ja_JP] version: 10.14.2.0 - (1828579) Found support for locale: [ko_KR] version: 10.14.2.0 - (1828579) Found support for locale: [pl] version: 10.14.2.0 - (1828579) Found support for locale: [pt_BR] version: 10.14.2.0 - (1828579) Found support for locale: [ru] version: 10.14.2.0 - (1828579) Found support for locale: [zh_CN] version: 10.14.2.0 - (1828579) Found support for locale: [zh_TW] version: 10.14.2.0 - (1828579) ------------------------------------------------------ ------------------------------------------------------
ijtool
Используя этот инструмент, вы можете запускать скрипты и запросы Apache Derby.
Просмотрите папку bin установочного каталога Derby и выполните команду ij, как показано ниже —
C:\Users\MY_USER>cd %DERBY_HOME%/bin C:\Derby\bin>ij
Это даст вам оболочку ij, где вы сможете выполнять команду и сценарии derby, как показано ниже —
ij version 10.14 ij>
Используя команду help , вы можете получить список команд, поддерживаемых этой оболочкой.
C:\Derby\bin>cd %DERBY_HOME%/bin C:\Derby\bin>ij ij version 10.14 ij> help; Supported commands include: PROTOCOL 'JDBC protocol' [ AS ident ]; -- sets a default or named protocol DRIVER 'class for driver'; -- loads the named class CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ]; -- connects to database URL -- and may assign identifier SET CONNECTION connectionName; -- switches to the specified connection SHOW CONNECTIONS; -- lists all connections AUTOCOMMIT [ ON | OFF ]; -- sets autocommit mode for the connection DISCONNECT [ CURRENT | connectionName | ALL ]; -- drop current, named, or all connections; -- the default is CURRENT SHOW SCHEMAS; -- lists all schemas in the current database SHOW [ TABLES | VIEWS | PROCEDURES | FUNCTIONS | SYNONYMS ] { IN schema }; -- lists tables, views, procedures, functions or synonyms SHOW INDEXES { IN schema | FROM table }; -- lists indexes in a schema, or for a table SHOW ROLES; -- lists all defined roles in the database, sorted SHOW ENABLED_ROLES; -- lists the enabled roles for the current -- connection (to see current role use -- VALUES CURRENT_ROLE), sorted SHOW SETTABLE_ROLES; -- lists the roles which can be set for the -- current connection, sorted DESCRIBE name; -- lists columns in the named table COMMIT; -- commits the current transaction ROLLBACK; -- rolls back the current transaction PREPARE name AS 'SQL-J text'; -- prepares the SQL-J text EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ; -- executes the statement with parameter -- values from the USING result set row REMOVE name; -- removes the named previously prepared statement RUN 'filename'; -- run commands from the named file ELAPSEDTIME [ ON | OFF ]; -- sets elapsed time mode for ij MAXIMUMDISPLAYWIDTH integerValue; -- sets the maximum display width for -- each column to integerValue ASYNC name 'SQL-J text'; -- run the command in another thread WAIT FOR name; -- wait for result of ASYNC'd command HOLDFORCONNECTION; -- sets holdability for a connection to HOLD -- (i.e. ResultSet.HOLD_CURSORS_OVER_COMMIT) NOHOLDFORCONNECTION; -- sets holdability for a connection to NO HOLD -- (i.e. ResultSet.CLOSE_CURSORS_AT_COMMIT) GET [SCROLL INSENSITIVE] [WITH { HOLD | NOHOLD }] CURSOR name AS 'SQL-J query'; -- gets a cursor (JDBC result set) on the query -- the default is a forward-only cursor with holdability NEXT name; -- gets the next row from the named cursor FIRST name; -- gets the first row from the named scroll cursor LAST name; -- gets the last row from the named scroll cursor PREVIOUS name; -- gets the previous row from the named scroll cursor ABSOLUTE integer name; -- positions the named scroll cursor at the absolute row number -- (A negative number denotes position from the last row.) RELATIVE integer name; -- positions the named scroll cursor relative to the current row -- (integer is number of rows) AFTER LAST name; -- positions the named scroll cursor after the last row BEFORE FIRST name; -- positions the named scroll cursor before the first row GETCURRENTROWNUMBER name; -- returns the row number for the current position of the named scroll cursor -- (0 is returned when the cursor is not positioned on a row.) CLOSE name; -- closes the named cursor LOCALIZEDDISPLAY [ ON | OFF ]; -- controls locale sensitive data representation EXIT; -- exits ij HELP; -- shows this message Any unrecognized commands are treated as potential SQL-J commands and executed directly.
dblooktool
Этот инструмент используется для создания языка определения данных.
Просмотрите папку bin установочного каталога Derby и выполните команду dblook, как показано ниже —
C:\Users\MY_USER>cd %DERBY_HOME%/bin C:\Derby\bin>dblook -d myURL
Где myURL — это URL-адрес соединения с базой данных, для которой вам нужно сгенерировать DDL.
Apache Derby — Синтаксис
В этой главе представлен синтаксис всех операторов Apache Derby SQL.
Все операторы начинаются с любого из ключевых слов, таких как SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW, и все операторы заканчиваются точкой с запятой (;).
Операторы SQL Apache Derby учитывают регистр, включая имена таблиц.
CREATE Заявление
CREATE TABLE table_name ( column_name1 column_data_type1 constraint (optional), column_name2 column_data_type2 constraint (optional), column_name3 column_data_type3 constraint (optional) );
DROP TABLE
DROP TABLE table_name;
ВСТАВИТЬ Заявление
INSERT INTO table_name VALUES (column_name1, column_name2, ...);
ВЫБЕРИТЕ заявление
SELECT column_name, column_name, ... FROM table_name;
ОБНОВЛЕНИЕ Заявление
UPDATE table_name SET column_name = value, column_name = value, ... WHERE conditions;
УДАЛИТЬ Заявление
DELETE FROM table_name WHERE condition;
ОПИСАТЬ заявление
Describe table_name
SQL TRUNCATE TABLE
TRUNCATE TABLE table_name;
Оператор ALTER — Добавление столбца
ALTER TABLE table_name ADD COLUMN column_name column_type;
Оператор ALTER — Добавление ограничения
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);
Оператор ALTER — столбец удаления
ALTER TABLE table_name DROP COLUMN column_name;
Оператор ALTER — ограничение удаления
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
ГДЕ оговорка
SELECT * from table_name WHERE condition; or, DELETE from table_name WHERE condition; or, UPDATE table_name SET column_name = value WHERE condition;
Предложение GROUP BY
SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;
ЗАКАЗАТЬ по пункту
SELECT * FROM table_name ORDER BY column_name ASC|DESC.
Имея пункт
SELECT column1, column2 . . . from table_name GROUP BY column having condition;
Создание индекса
CTREATE INDEX index_name on table_name (column_name);
Создание УНИКАЛЬНОГО индекса
CREATE UNIQUE INDEX index_name on table_name (column_name);
Создание составного индекса
CREATE INDEX index_name on table_name (column_name1, column_name2);
Отображение индексов
SHOW INDEXES FROM table_name;
Удаление индексов
DROP INDEX index_name;
Apache Derby — Типы данных
Тип данных — это атрибут, который определяет тип данных любого объекта. Каждый столбец, переменная и выражение имеют связанный тип данных. Вы можете использовать эти типы данных при создании таблиц. Вы можете выбрать тип данных для столбца таблицы на основе ваших требований.
Derby Server предлагает несколько категорий типов данных для вашего использования, как указано ниже —
Целочисленные числовые типы данных
Ниже приведен список целочисленных числовых типов данных —
ТИП ДАННЫХ | РАЗМЕР | ОТ | К |
---|---|---|---|
SMALLINT | 2 байта | -32768 | 32767 |
INTEGER | 4 байта | -2147483648 | 2147483647 |
BIGINT | 8 байт | -9223372036854775808 | 9223372036854775808 |
Приблизительные числовые типы данных
Ниже приведен список приблизительных числовых типов данных —
ТИП ДАННЫХ | РАЗМЕР | ОТ | К |
---|---|---|---|
РЕАЛЬНЫЙ | 4 байта | -3.40E + 38 | 3.40E + 38 |
ДВОЙНАЯ ТОЧНОСТЬ | 8 байт | -1,79E + 308 | 1,79E + 308 |
FLOAT | -1,79E + 308 | 1,79E + 308 |
Точные числовые типы данных
Ниже приведен список точных числовых типов данных —
ТИП ДАННЫХ | ОТ | К |
---|---|---|
ДЕСЯТИЧНЫЙ | -10 ^ 38 +1 | 10 ^ 38 -1 |
NUMERIC | -10 ^ 38 +1 | 10 ^ 38 -1 |
Apache Derby — Создать таблицу
Оператор CREATE TABLE используется для создания новой таблицы в базе данных Derby.
Синтаксис
Ниже приводится синтаксис оператора CREATE.
CREATE TABLE table_name ( column_name1 column_data_type1 constraint (optional), column_name2 column_data_type2 constraint (optional), column_name3 column_data_type3 constraint (optional) );
Другой способ создать таблицу в Apache Derby — указать имена столбцов и типы данных с помощью запроса. Синтаксис для этого приведен ниже —
CREATE TABLE table_name AS SELECT * FROM desired_table WITH NO DATA;
пример
Следующий оператор SQL создает таблицу с именем Student с четырьмя столбцами, где id — это первичный ключ, и он генерируется автоматически.
ij> CREATE TABLE Student ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, Age INT NOT NULL, First_Name VARCHAR(255), last_name VARCHAR(255), PRIMARY KEY (Id) ); > > > > > > > 0 rows inserted/updated/deleted
Команда DESCRIBE описывает указанную таблицу, перечисляя столбцы и их данные, если таблица существует. Вы можете использовать эту команду, чтобы проверить, создана ли таблица.
ij> DESCRIBE Student; COLUMN_NAME |TYPE_NAME |DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL& ------------------------------------------------------------------------------ ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO AGE |INTEGER |0 |10 |10 |NULL |NULL |NO FIRST_NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES LAST_NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES 4 rows selected
Создать таблицу с использованием программы JDBC
В этом разделе рассказывается, как создать таблицу в базе данных Apache Derby с помощью приложения JDBC.
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME; create = true; user = USER_NAME; passw ord = PASSWORD «.
Следуйте приведенным ниже инструкциям, чтобы создать таблицу в Apache Derby —
Шаг 1: зарегистрировать драйвер
Для связи с базой данных, прежде всего, необходимо зарегистрировать драйвер. Метод forName () класса Class принимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement (), prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов. Метод executeUpdate () выполняет запросы, такие как INSERT, UPDATE, DELETE. Метод executeQuery () для результатов, который возвращает данные и т. Д. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
Следующий пример JDBC демонстрирует, как создать таблицу в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class CreateTable { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Executing the query String query = "CREATE TABLE Employees( " + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), " + "Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"; stmt.execute(query); System.out.println("Table created"); } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод
Table created
Apache Derby — Drop Table
Оператор DROP TABLE используется для удаления существующей таблицы, включая все ее триггеры, ограничения, разрешения.
Синтаксис
Ниже приводится синтаксис оператора DROP TABLE.
ij> DROP TABLE table_name;
пример
Предположим, у вас есть таблица с именем Student в базе данных. Следующая инструкция SQL удаляет таблицу с именем Student.
ij> DROP TABLE Student; 0 rows inserted/updated/deleted
Поскольку мы удалили таблицу, если мы попытаемся описать ее, мы получим ошибку следующим образом
ij> DESCRIBE Student; IJ ERROR: No table exists with the name STUDENT
Удалить таблицу с помощью программы JDBC
В этом разделе вы узнаете, как удалить таблицу в базе данных Apache Derby с помощью приложения JDBC.
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME; create = true; user = USER_NAME ; passw ord = PASSWORD «
Следуйте приведенным ниже инструкциям, чтобы удалить таблицу в Apache Derby.
Шаг 1: зарегистрировать драйвер
Для связи с базой данных, прежде всего, необходимо зарегистрировать драйвер. Метод forName () класса Class принимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement (), prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов. Метод executeUpdate () выполняет такие запросы, как INSERT, UPDATE, DELETE. Метод executeQuery () для результатов, который возвращает данные и т. Д. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
Следующий пример JDBC демонстрирует, как удалить таблицу в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class DropTable { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Executing the query String query = "DROP TABLE Employees"; stmt.execute(query); System.out.println("Table dropped"); } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод:
Table dropped
Apache Derby — Вставить данные
Запрос на вставку вставляет данные: новые записи в таблицу.
Синтаксис
Ниже приведен основной синтаксис оператора INSERT:
ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...);
где column1, column2 — значения столбца в строке, которая должна быть вставлена.
пример
Следующий оператор SQL INSERT вставляет новую строку в таблицу Student, где он вставляет значения в столбцы id, age, first name и, фамилия .
SQL> INSERT INTO Student VALUES (101, 20, 'Zara', 'Ali');
Синтаксис 2
Или вы можете вставить два конкретных столбца, упомянув имена столбцов, как показано ниже —
ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...) VALUES (value1, value2, ...);
Примечание. Apache Derby автоматически рассчитывает значения для сгенерированных столбцов. Например, нет необходимости передавать значения для столбца id в таблице ученика, созданной ранее в этом учебном пособии. Если в вашей таблице есть столбцы, используйте синтаксис2 .
пример
ij> INSERT INTO Student(Age, First_Name, Last_Name) VALUES (21, 'Sucharitha' , 'Tyagi'); 1 row inserted/updated/deleted
И вы также можете вставить две строки, используя один оператор следующим образом —
ij>INSERT INTO Student(Age, First_Name, Last_Name) VALUES (20, 'Amit', 'Bhattacharya'), (22, 'Rahul', 'Desai'); 2 rows inserted/updated/deleted
Вы можете проверить содержимое таблицы, используя команду SELECT (мы обсудим эту команду позже в этом руководстве).
Синтаксис 3
Вы можете использовать другой запрос в операторе вставки как —
INSERT INTO table_Name Query
пример
Предположим, у нас есть таблица с именем First_Year в базе данных, как показано ниже, с такими же столбцами, как в таблице Student —
ID |AGE |FIRST_NAME |LAST_NAME ----------------------------------------------------------------- 1 |20 |Raju |Pendyala 2 |21 |Bhargav |Prayaga 3 |22 |Deepthi |Yerramilli
Вы можете вставить значения из этой таблицы в таблицу учеников, используя приведенный выше синтаксис как —
ij> INSERT INTO Student (Age, First_Name, Last_Name) SELECT Age, First_Name, Last_Name FROM First_Year; > 3 rows inserted/updated/deleted
После выполнения всех вышеприведенных операторов вставки таблица Student будет выглядеть следующим образом:
ID |AGE |FIRST_NAME |LAST_NAME ------------------------------------------------------------- 1 |21 |Sucharitha |Tyagi 2 |20 |Amit |Bhattacharya 3 |22 |Rahul |Desai 4 |20 |Raju |Pendyala 5 |21 |Bhargav |Prayaga 6 |22 |Deepthi |Yerramilli
Вставить данные с помощью программы JDBC
В этом разделе рассказывается, как вставить данные в таблицу в базе данных Apache Derby с помощью приложения JDBC.
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME; создать = true; пользователь = USER_NAME; passw ord = ПАРОЛЬ «
Выполните шаги, приведенные ниже, чтобы вставить данные в таблицу в Apache Derby —
Шаг 1: зарегистрировать драйвер
Для связи с базой данных, прежде всего, необходимо зарегистрировать драйвер. Метод forName () класса Class принимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement (), prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов.
Метод executeUpdate () выполняет запросы, такие как INSERT, UPDATE, DELETE. Метод executeQuery () для результатов, который возвращает данные и т. Д. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
Следующий пример JDBC демонстрирует, как вставить данные в таблицу в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class InsertData { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:SampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Creating a table and populating String query = "CREATE TABLE Employees(" + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"; //Executing the query String query = "INSERT INTO Employees(" + "Name, Salary, Location) VALUES " + "('Amit', 30000, 'Hyderabad'), " + "('Kalyan', 40000, 'Vishakhapatnam'), " + "('Renuka', 50000, 'Delhi'), " + "('Archana', 15000, 'Mumbai'), " + "('Trupthi', 45000, 'Kochin'), " + "('Suchatra', 33000, 'Pune'), " + "('Rahul', 39000, 'Lucknow'), " + "('Trupti', 45000, 'Kochin')"; stmt.execute(query); System.out.println("Values inserted"); } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод:
Values inserted
Apache Derby — получение данных
Оператор SELECT используется для извлечения данных из таблицы. Это возвращает данные в форме таблицы, известной как набор результатов.
Синтаксис
Ниже приводится синтаксис оператора SELECT —
ij> SELECT column_name, column_name, ... FROM table_name; Or, Ij>SELECT * from table_name
пример
Предположим, у нас есть таблица с именем Employees в базе данных, как показано ниже —
ij> CREATE TABLE Employees ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255), PRIMARY KEY (Id) ); > > > > > > > 0 rows inserted/updated/deleted
И вставил в него четыре записи, как показано ниже —
ij> INSERT INTO Employees (Name, Salary, Location) VALUES ('Amit', 30000, 'Hyderabad'), ('Kalyan', 40000, 'Vishakhapatnam'), ('Renuka', 50000, 'Delhi'), ('Archana', 15000, 'Mumbai'); > > > > 4 rows inserted/updated/deleted
Следующий оператор SQL извлекает имя, возраст и сведения о зарплате всех сотрудников в таблице;
ij> SELECT Id, Name, Salary FROM Employees;
Результат этого запроса —
ID |NAME |SALARY ------------------------------------------------------------------------ 1 |Amit |30000 2 |Kalyan |40000 3 |Renuka |50000 4 |Archana |15000 4 rows selected
Если вы хотите получить все записи этой таблицы одновременно, используйте * вместо имен столбцов.
ij> select * from Employees;
Это даст следующий результат —
ID |NAME |SALARY |LOCATION ------------------------------------------------------------------ 1 |Amit |30000 |Hyderabad 2 |Kalyan |40000 |Vishakhapatnam 3 |Renuka |50000 |Delhi 4 |Archana |15000 |Mumbai 4 rows selected
Получить данные с помощью программы JDBC
В этом разделе рассказывается, как извлечь данные из таблицы в базе данных Apache Derby с помощью приложения JDBC.
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME ; create = true; user = USER_NAME ; passw ord = PASSWORD «
Выполните шаги, приведенные ниже, чтобы получить данные из таблицы в Apache Derby —
Шаг 1: зарегистрировать драйвер
Для связи с базой данных, прежде всего, необходимо зарегистрировать драйвер. Метод forName () класса Class принимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement () , prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов. Метод executeUpdate () выполняет запросы, такие как INSERT, UPDATE, DELETE. Метод executeQuery () для результатов, который возвращает данные и т. Д. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
В следующем примере JDBC показано, как извлечь данные из таблицы в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
Метод executeQuery () возвращает объект ResultSet, который содержит результат оператора. Первоначально указатель набора результатов будет на первой записи, вы можете распечатать содержимое объекта ResultSet, используя методы next () и getXXX () .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class RetrieveData { public static void main(String args[]) throws SQLException, ClassNotFoundException { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object 4Statement stmt = conn.createStatement(); //Creating a table and populating it String query = "CREATE TABLE Employees(" + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"; String query = "INSERT INTO Employees(" + "Name, Salary, Location) VALUES " + "('Amit', 30000, 'Hyderabad'), " + "('Kalyan', 40000, 'Vishakhapatnam'), " + "('Renuka', 50000, 'Delhi'), " + "('Archana', 15000, 'Mumbai'), " + "('Trupthi', 45000, 'Kochin'), " + "('Suchatra', 33000, 'Pune'), " + "('Rahul', 39000, 'Lucknow'), " + "('Trupti', 45000, 'Kochin')"; //Executing the query String query = "SELECT Id, Name, Salary FROM Employees"; ResultSet rs = stmt.executeQuery(query); while(rs.next()) { System.out.println("Id: "+rs.getString("Id")); System.out.println("Name: "+rs.getString("Name")); System.out.println("Salary: "+rs.getString("Salary")); System.out.println(" "); } } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод
Id: 1 Name: Amit Salary: 30000 Id: 2 Name: Kalyan Salary: 43000 Id: 3 Name: Renuka Salary: 50000 Id: 4 Name: Archana Salary: 15000 Id: 5 Name: Trupthi Salary: 45000 Id: 6 Name: Suchatra Salary: 33000 Id: 7 Name: Rahul Salary: 39000
Apache Derby — обновить данные
Оператор UPDATE используется для обновления данных в таблице. Apache Derby предоставляет два типа обновлений (синтаксис), а именно обновление с поиском и позиционное обновление.
В найденном операторе UPDATE обновляются все указанные столбцы таблицы.
Синтаксис
Ниже приводится синтаксис запроса UPDATE —
ij> UPDATE table_name SET column_name = value, column_name = value, ... WHERE conditions;
Предложение WHERE может использовать операторы сравнения, такие как =,! =, <,>, <= И> =, а также операторы BETWEEN и LIKE.
пример
Предположим, у вас есть таблица Employee в базе данных с 4 записями, как показано ниже:
ID |NAME |SALARY |LOCATION ---------------------------------------------------------- 1 |Amit |30000 |Hyderabad 2 |Kalyan |40000 |Vishakhapatnam 3 |Renuka |50000 |Delhi 4 |Archana |15000 |Mumbai
Следующий оператор SQL UPDATE обновляет местоположение и зарплату сотрудника по имени Кейлан.
ij> UPDATE Employees SET Location = 'Chennai', Salary = 43000 WHERE Name = 'Kalyan'; 1 rows inserted/updated/deleted
Если вы получаете содержимое таблицы «Сотрудники», вы можете наблюдать за изменениями, внесенными запросом UPDATE.
ij> select * from Employees; ID |NAME |SALARY |LOCATION ---------------------------------------------------------- 1 |Amit |30000 |Hyderabad 2 |Kalyan |43000 |Chennai 3 |Renuka |50000 |Delhi 4 |Archana |15000 |Mumbai 4 rows selected
Обновление данных с использованием программы JDBC
В этом разделе объясняется, как обновить существующие записи таблицы в базе данных Apache Derby с помощью приложения JDBC.
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME ; create = true; user = USER_NAME ; passw ord = PASSWORD «
Следуйте приведенным ниже инструкциям, чтобы обновить существующие записи таблицы в Apache Derby.
Шаг 1: зарегистрировать драйвер
Для связи с базой данных, прежде всего, необходимо зарегистрировать драйвер. Метод forName () класса Class принимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement () , prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов. Метод executeUpdate () выполняет запросы, такие как INSERT, UPDATE, DELETE. Метод executeQuery () возвращает данные. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
Следующий пример JDBC демонстрирует, как обновить существующие записи таблицы в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class UpdateData { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Creating a table and populating it String query = "CREATE TABLE Employees(" + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"; String query = "INSERT INTO Employees(" + "Name, Salary, Location) VALUES " + "('Amit', 30000, 'Hyderabad'), " + "('Kalyan', 40000, 'Vishakhapatnam'), " + "('Renuka', 50000, 'Delhi'), " + "('Archana', 15000, 'Mumbai'), " + "('Trupthi', 45000, 'Kochin'), " + "('Suchatra', 33000, 'Pune'), " + "('Rahul', 39000, 'Lucknow'), " + "('Trupti', 45000, 'Kochin')"; //Executing the query String query = "UPDATE Employees SET Location = 'Chennai', Salary = 43000 WHERE Name = 'Kalyan'"; int num = stmt.executeUpdate(query); System.out.println("Number of records updated are: "+num); } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод:
Number of records updated are: 1
Apache Derby — Удалить данные
Оператор DELETE используется для удаления строк таблицы. Как и оператор UPDATE, Apache Derby предоставляет два типа Delete (синтаксис): искомое удаление и позиционное удаление.
В искомом операторе удаления удаляются все указанные столбцы таблицы.
Синтаксис
Синтаксис оператора DELETE следующий:
ij> DELETE FROM table_name WHERE condition;
пример
Предположим, у нас есть таблица с именем employee с 5 записями, как показано ниже:
ID |NAME |SALARY |LOCATION ---------------------------------------------------------------------------- 1 |Amit |30000 |Hyderabad 2 |Kalyan |40000 |Vishakhapatnam 3 |Renuka |50000 |Delhi 4 |Archana |15000 |Mumbai 5 |Trupti |45000 |Kochin 5 rows selected
Следующая инструкция SQL DELETE удаляет запись с именем Trupti.
ij> DELETE FROM Employees WHERE Name = 'Trupti'; 1 row inserted/updated/deleted
Если вы получите содержимое таблицы «Сотрудники», вы увидите только четыре записи, как показано ниже:
ID |NAME |SALARY |LOCATION ---------------------------------------------------------------------------- 1 |Amit |30000 |Hyderabad 2 |Kalyan |40000 |Vishakhapatnam 3 |Renuka |50000 |Delhi 4 |Archana |15000 |Mumbai 4 rows selected
Чтобы удалить все записи в таблице, выполните тот же запрос без предложения where.
ij> DELETE FROM Employees; 4 rows inserted/updated/deleted
Теперь, если вы попытаетесь получить содержимое таблицы Employee, вы получите пустую таблицу, как показано ниже —
ij> select * from employees; ID |NAME |SALARY |LOCATION -------------------------------------------------------- 0 rows selected
Удалить данные с помощью программы JDBC
В этом разделе объясняется, как удалить существующие записи таблицы в базе данных Apache Derby с помощью приложения JDBC.
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME; создать = true; пользователь = USER_NAME; passw ord = ПАРОЛЬ «.
Выполните приведенные ниже шаги, чтобы удалить существующие записи таблицы в Apache Derby: / p>
Шаг 1: зарегистрировать драйвер
Во-первых, вам необходимо зарегистрировать драйвер для связи с базой данных. Метод forName () класса Class принимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement (), prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов. Метод executeUpdate () выполняет запросы, такие как INSERT, UPDATE, DELETE. Результат метода executeQuery (), который возвращает данные. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
Следующий пример JDBC демонстрирует, как удалить существующие записи таблицы в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class DeleteData { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Creating a table and populating it String query = "CREATE TABLE Employees(" + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"; String query = "INSERT INTO Employees(" + "Name, Salary, Location) VALUES " + "('Amit', 30000, 'Hyderabad'), " + "('Kalyan', 40000, 'Vishakhapatnam'), " + "('Renuka', 50000, 'Delhi'), " + "('Archana', 15000, 'Mumbai'), " + "('Trupthi', 45000, 'Kochin'), " + "('Suchatra', 33000, 'Pune'), " + "('Rahul', 39000, 'Lucknow'), " + "('Trupthi', 45000, 'Kochin')"; //Executing the query String query = "DELETE FROM Employees WHERE Name = 'Trupthi'"; int num = stmt.executeUpdate(query); System.out.println("Number of records deleted are: "+num); } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод:
Number of records deleted are: 1
Apache Derby — Где пункт
Предложение WHERE используется в инструкциях SELECT, DELETE или, UPDATE, чтобы указать строки, над которыми необходимо выполнить операцию. Обычно за этим условием следует условие или выражение, которое возвращает логическое значение, операции выбора, удаления или обновления выполняются только над строками, которые удовлетворяют данному условию.
ij> SELECT * from table_name WHERE condition; or, ij> DELETE from table_name WHERE condition; or, ij> UPDATE table_name SET column_name = value WHERE condition;
Предложение WHERE может использовать операторы сравнения, такие как =,! =, <,>, <= И> =, а также операторы BETWEEN и LIKE.
пример
Предположим, у нас есть таблица с именем Employees в базе данных с 7 записями, как показано ниже —
ID |NAME |SALARY |LOCATION ----------------------------------------------------------------------------- 1 |Amit |30000 |Hyderabad 2 |Kalyan |40000 |Vishakhapatnam 3 |Renuka |50000 |Delhi 4 |Archana |15000 |Mumbai 5 |Trupthi |45000 |Kochin 6 |Suchatra |33000 |Pune 7 |Rahul |39000 |Lucknow
Следующий оператор SQL DELETE извлекает записи о сотрудниках, зарплата которых превышает 35000 —
ij> SELECT * FROM Employees WHERE Salary>35000;
Это даст следующий результат —
ID |NAME |SALARY |LOCATION --------------------------------------------------- 2 |Kalyan |40000 |Vishakhapatnam 3 |Renuka |50000 |Delhi 5 |Trupthi |45000 |Kochin 7 |Rahul |39000 |Lucknow 4 rows selected
Точно так же вы можете также удалять и обновлять записи, используя это предложение.
Следующий пример обновляет местоположение тех, чья зарплата меньше 30000.
ij> UPDATE Employees SET Location = 'Vijayawada' WHERE Salary<35000; 3 rows inserted/updated/deleted
Если вы проверите содержимое таблицы, вы увидите обновленную таблицу, как показано ниже —
ij> SELECT * FROM Employees; ID |NAME |SALARY |LOCATION ------------------------------------------------------------------------------ 1 |Amit |30000 |Vijayawada 2 |Kalyan |40000 |Vishakhapatnam 3 |Renuka |50000 |Delhi 4 |Archana |15000 |Vijayawada 5 |Trupthi |45000 |Kochin 6 |Suchatra |33000 |Vijayawada 7 |Rahul |39000 |Lucknow 7 rows selected
Где пункт пример JDBC
В этом разделе рассказывается, как использовать предложение WHERE и выполнять операции CURD с таблицей в базе данных Apache Derby с помощью приложения JDBC.
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME ; create = true; user = USER_NAME; passw ord = ПАРОЛЬ «.
Следуйте приведенным ниже инструкциям, чтобы использовать предложение WHERE и выполнять операции CURD с таблицей в Apache Derby.
Шаг 1: зарегистрировать драйвер
Для связи с базой данных, прежде всего, необходимо зарегистрировать драйвер. Метод forName () класса Class принимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement (), prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов. Метод executeUpdate () выполняет запросы, такие как INSERT, UPDATE, DELETE. Результат метода executeQuery (), который возвращает данные. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
В следующем примере JDBC показано, как использовать предложение WHERE и выполнять операции CURD с таблицей в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; public class WhereClauseExample { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Creating a table and populating it String query = "CREATE TABLE Employees(" + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"; String query = "INSERT INTO Employees(" + "Name, Salary, Location) VALUES " + "('Amit', 30000, 'Hyderabad'), " + "('Kalyan', 40000, 'Vishakhapatnam'), " + "('Renuka', 50000, 'Delhi'), " + "('Archana', 15000, 'Mumbai'), " + "('Trupthi', 45000, 'Kochin'), " + "('Suchatra', 33000, 'Pune'), " + "('Rahul', 39000, 'Lucknow'), " + "('Trupti', 45000, 'Kochin')"; //Executing the query String query = "SELECT * FROM Employees WHERE Salary>35000"; ResultSet rs = stmt.executeQuery(query); while(rs.next()) { System.out.println("Id: "+rs.getString("Id")); System.out.println("Name: "+rs.getString("Name")); System.out.println("Salary: "+rs.getString("Salary")); System.out.println("Location: "+rs.getString("Location")); System.out.println(" "); } } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод:
Id: 2 Name: Kalyan Salary: 43000 Location: Chennai Id: 3 Name: Renuka Salary: 50000 Location: Delhi Id: 5 Name: Trupthi Salary: 45000 Location: Kochin Id: 7 Name: Rahul Salary: 39000 Location: Lucknow
Apache Derby — предложение GROUP BY
Предложение GROUP BY используется с инструкциями SELECT. Он используется для формирования подмножеств в случае идентичных данных. Обычно за этим предложением следует предложение ORDER BY, которое помещается после предложения WHERE.
Синтаксис
Ниже приводится синтаксис предложения GROUP BY —
ij>SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;
пример
Предположим, у нас есть таблица с именем Employees в базе данных со следующими записями:
ID |NAME |SALARY |LOCATION ------------------------------------------------------------------ 1 |Amit |30000 |Hyderabad 2 |Rahul |39000 |Lucknow 3 |Renuka |50000 |Hyderabad 4 |Archana |15000 |Vishakhapatnam 5 |Kalyan |40000 |Hyderabad 6 |Trupthi |45000 |Vishakhapatnam 7 |Raghav |12000 |Lucknow 8 |Suchatra |33000 |Vishakhapatnam 9 |Rizwan |20000 |Lucknow
Следующий оператор SELECT с предложением GROUP BY группирует таблицу в зависимости от местоположения. Он отображает общую сумму заработной платы, данной сотрудникам на месте.
ij> SELECT Location, SUM(Salary) from Employees GROUP BY Location;
Это сгенерирует следующий вывод —
LOCATION |2 ------------------------------------------------------- Hyderabad |120000 Lucknow |71000 Vishakhapatnam |93000 3 rows selected
Таким же образом, следующий запрос находит среднюю сумму, потраченную на сотрудников в качестве зарплаты в местоположении.
ij> SELECT Location, AVG(Salary) from Employees GROUP BY Location;
Это сгенерирует следующий вывод —
LOCATION |2 ----------------------------------------------------- Hyderabad |40000 Lucknow |23666 Vishakhapatnam |31000 3 rows selected
Пример JDBC предложения Group By
В этом разделе рассказывается, как использовать предложение Group By и выполнять операции CURD для таблицы в базе данных Apache Derby с помощью приложения JDBC.
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME; создать = true; пользователь = USER_NAME; passw ord = ПАРОЛЬ «
Следуйте приведенным ниже инструкциям, чтобы использовать предложение Group By и выполнять операции CURD с таблицей в Apache Derby.
Шаг 1: зарегистрировать драйвер
Для связи с базой данных, прежде всего, необходимо зарегистрировать драйвер. Метод forName () класса Class принимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement (), prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов. Метод executeUpdate () используется для выполнения запросов, таких как INSERT, UPDATE, DELETE. Метод executeQuery () возвращает данные. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
В следующем примере JDBC показано, как использовать предложение Group By и выполнять операции CURD с таблицей в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; public class GroupByClauseExample { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Creating a table and populating it stmt.execute("CREATE TABLE EmployeesData( " + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), " + "Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"); stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) " + "VALUES ('Amit', 30000, 'Hyderabad'), " + "('Rahul', 39000, 'Lucknow'), " + "('Renuka', 50000, 'Hyderabad'), " + "('Archana', 15000, 'Vishakhapatnam'), " + "('Kalyan', 40000, 'Hyderabad'), " + "('Trupthi', 45000, 'Vishakhapatnam'), " + "('Raghav', 12000, 'Lucknow'), " + "('Suchatra', 33000, 'Vishakhapatnam'), " + "('Rizwan', 20000, 'Lucknow')"); //Executing the query String query = "SELECT Location, SUM(Salary) from EmployeesData GROUP BY Location"; ResultSet rs = stmt.executeQuery(query); while(rs.next()) { System.out.println("Location: "+rs.getString(1)); System.out.println("Sum of salary: "+rs.getString(2)); System.out.println(" "); } } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод:
Location: Hyderabad Sum of salary: 120000 Location: Lucknow Sum of salary: 71000 Location: Vishakhapatnam Sum of salary: 93000
Apache Derby — заказ по пункту
Предложение ORDER BY используется для упорядочения содержимого результирующего набора в том порядке, в котором оно использует ключевые слова, ASC представляет восходящий порядок и DESC представляет нисходящий порядок. Если вы не упомянули ни одного из них, по умолчанию содержимое будет упорядочено в порядке возрастания.
Синтаксис
Ниже приведен синтаксис предложения ORDER BY:
SELECT * FROM table_name ORDER BY column_name ASC|DESC.
пример
Предположим, у нас есть таблица с именем Employees в базе данных со следующими записями:
ID |NAME |SALARY |LOCATION ------------------------------------------------------------------------------ 1 |Amit |30000 |Vijayawada 2 |Kalyan |40000 |Vishakhapatnam 3 |Renuka |50000 |Delhi 4 |Archana |15000 |Vijayawada 5 |Trupthi |45000 |Kochin 6 |Suchatra |33000 |Vijayawada 7 |Rahul |39000 |Lucknow
Следующий запрос упорядочивает содержимое таблицы в порядке возрастания на основе имени сотрудника.
ij> SELECT * FROM Employees ORDER BY Name;
Это сгенерирует следующий вывод —
ID |NAME |SALARY |LOCATION --------------------------------------------------------------- 1 |Amit |30000 |Hyderabad 4 |Archana |15000 |Mumbai 2 |Kalyan |40000 |Vishakhapatnam 7 |Rahul |39000 |Lucknow 3 |Renuka |50000 |Delhi 6 |Suchatra |33000 |Pune 5 |Trupthi |45000 |Kochin 7 rows selected
Аналогично, следующий запрос упорядочивает содержимое таблицы в порядке убывания на основе оклада сотрудника —
ij> SELECT * FROM Employees ORDER BY Salary DESC;
Это сгенерирует следующий вывод —
ID |NAME |SALARY |LOCATION --------------------------------------------------------------- 3 |Renuka |50000 |Delhi 5 |Trupthi |45000 |Kochin 2 |Kalyan |40000 |Vishakhapatnam 7 |Rahul |39000 |Lucknow 6 |Suchatra |33000 |Pune 1 |Amit |30000 |Hyderabad 4 |Archana |15000 |Mumbai 7 rows selected
Сортировка данных с использованием программы JDBC
В этом разделе вы узнаете, как сортировать содержимое таблицы в Derby с использованием JDBC. Вы можете упорядочить записи по порядку, используя предложение ORDER BY и ключевые слова ASC (обозначение по возрастанию) и DSC (обозначение по убыванию).
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME; создать = true; пользователь = USER_NAME; passw ord = ПАРОЛЬ «.
Выполните шаги, приведенные ниже, чтобы отсортировать записи таблицы в Apache Derby —
Шаг 1: зарегистрировать драйвер
Для связи с базой данных, прежде всего, необходимо зарегистрировать драйвер. Метод forName () класса Class принимает значение String, представляющее имя класса, загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement (), prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов. Метод executeUpdate () выполняет запросы, такие как INSERT, UPDATE, DELETE. Метод executeQuery () возвращает данные. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
Следующий пример JDBC демонстрирует, как сортировать записи таблицы в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class SortData { public static void main(String args[]) throws SQLException, ClassNotFoundException { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:SampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Creating a table and populating it String query = "CREATE TABLE Employees(" + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"; String query = "INSERT INTO Employees(" + "Name, Salary, Location) VALUES " + "('Amit', 30000, 'Hyderabad'), " + "('Kalyan', 40000, 'Vishakhapatnam'), " + "('Renuka', 50000, 'Delhi'), " + "('Archana', 15000, 'Mumbai'), " + "('Trupthi', 45000, 'Kochin'), " + "('Suchatra', 33000, 'Pune'), " + "('Rahul', 39000, 'Lucknow'), " + "('Trupti', 45000, 'Kochin')"; //Executing the query String query = "SELECT Location, SUM(Salary) " + "from Employees GROUP BY Location"; ResultSet rs = stmt.executeQuery(query); while(rs.next()) { System.out.println("Salary: "+rs.getString(1)); System.out.println("Location: "+rs.getString(2)); System.out.println(" "); } } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод:
Salary: Chennai Location: 43000 Salary: Delhi Location: 50000 Salary: Hyderabad Location: 30000 Salary: Kochin Location: 45000 Salary: Lucknow Location: 39000 Salary: Mumbai Location: 15000 Salary: Pune Location: 33000
Apache Derby — имеющий пункт
Предложение HAVING позволяет вам указать условия, которые фильтруют, какие групповые результаты появляются в результатах.
Предложение WHERE помещает условия в выбранные столбцы, тогда как предложение HAVING помещает условия в группы, созданные предложением GROUP BY.
Синтаксис
Ниже приводится синтаксис предложения HAVING —
ij> SELECT column1, column2 . . . from table_name GROUP BY column having condition;
пример
Предположим, у нас есть таблица с именем Employees в базе данных с 13 записями, как показано ниже —
ID |NAME |SALARY |LOCATION ------------------------------------------------------------------ 1 |Amit |30000 |Hyderabad 2 |Rahul |39000 |Lucknow 3 |Kalyan |40000 |Vishakhapatnam 4 |Renuka |50000 |Hyderabad 5 |Archana |15000 |Vishakhapatnam 6 |Krishna |40000 |Hyderabad 7 |Trupthi |45000 |Vishakhapatnam 8 |Raghav |12000 |Lucknow 9 |Radha |50000 |Delhi 10 |Anirudh |15000 |Mumbai 11 |Tara |45000 |Kochin 12 |Sucharita |44000 |Kochin 13 |Rizwan |20000 |Lucknow
Следующий запрос отображает максимальную зарплату сотрудников в месте, где работают как минимум 3 сотрудника.
ij> SELECT Location, MAX(Salary) from Employees GROUP BY Location having count(Location)>=3;
Это создает следующий вывод —
LOCATION |2 ------------------------------------------------------------ Hyderabad |50000 Lucknow |39000 Vishakhapatnam |45000 3 rows selected
Сортировка данных с использованием программы JDBC
В этом разделе вы узнаете, как использовать Наличие предложения в базе данных Apache Derby с помощью приложения JDBC.
Если вы хотите запросить сетевой сервер Derby с помощью сетевого клиента, убедитесь, что сервер запущен и работает. Имя класса для драйвера сетевого клиента — org.apache.derby.jdbc.ClientDriver, а URL-адрес — jdbc: derby: // localhost: 1527 / DATABASE_NAME; создать = true; пользователь = USER_NAME; passw ord = ПАРОЛЬ «
Выполните приведенные ниже шаги, чтобы отсортировать записи таблицы в Apache Derby.
Шаг 1: зарегистрировать драйвер
Для связи с базой данных, прежде всего, необходимо зарегистрировать драйвер. Метод forName () класса Class принимает значение String, представляющее имя класса, и загружает его в память, которая автоматически регистрирует его. Зарегистрируйте драйвер, используя этот метод.
Шаг 2: Получить соединение
В общем, первый шаг, который мы делаем для связи с базой данных, это соединение с ней. Класс Connection представляет физическое соединение с сервером базы данных. Вы можете создать объект соединения, вызвав метод getConnection () класса DriverManager . Создайте соединение, используя этот метод.
Шаг 3: Создайте объект выписки
Вам необходимо создать объект Statement или PreparedStatement или CallableStatement для отправки операторов SQL в базу данных. Вы можете создать их, используя методы createStatement (), prepareStatement () и prepareCall () соответственно. Создайте любой из этих объектов, используя соответствующий метод.
Шаг 4: Выполнить запрос
После создания вы должны выполнить его. Класс Statement предоставляет различные методы для выполнения запроса, например, метод execute () для выполнения инструкции, которая возвращает более одного набора результатов. Метод executeUpdate () выполняет запросы, такие как INSERT, UPDATE, DELETE. Метод executeQuery () возвращает данные. Используйте любой из этих методов и выполните оператор, созданный ранее.
пример
В следующем примере JDBC показано, как использовать предложение Group By и выполнять операции CURD с таблицей в Apache Derby с помощью программы JDBC. Здесь мы подключаемся к базе данных с именем sampleDB (создадим, если она не существует), используя встроенный драйвер.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; public class HavingClauseExample { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Creating a table and populating it stmt.execute("CREATE TABLE EmployeesData( " + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), " + "Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"); stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) " + "VALUES ('Amit', 30000, 'Hyderabad'), " + "('Rahul', 39000, 'Lucknow'), " + "('Renuka', 50000, 'Hyderabad'), " + "('Archana', 15000, 'Vishakhapatnam'), " + "('Kalyan', 40000, 'Hyderabad'), " + "('Trupthi', 45000, 'Vishakhapatnam'), " + "('Raghav', 12000, 'Lucknow'), " + "('Suchatra', 33000, 'Vishakhapatnam'), " + "('Rizwan', 20000, 'Lucknow')"); //Executing the query String query = "SELECT Location, MAX(Salary) " + "from EmployeesData GROUP BY Location having " + "count(Location)>=3"; ResultSet rs = stmt.executeQuery(query); while(rs.next()) { System.out.println(rs.getString(1)); System.out.println(rs.getString(2)); System.out.println(" "); } } }
Выход
Выполнив вышеуказанную программу, вы получите следующий вывод:
Hyderabad 50000 Lucknow 39000 Vishakhapatnam 45000
Apache Derby — Изменить таблицу
Инструкция ALTER TABLE, позволяет изменить существующую таблицу. Используя это вы можете сделать следующее —
-
Добавить столбец, добавить ограничение
-
Удалить столбец, удалить ограничение
-
Изменить блокировку уровня строки таблицы
Добавить столбец, добавить ограничение
Удалить столбец, удалить ограничение
Изменить блокировку уровня строки таблицы
Давайте предположим, что мы создали таблицу с именем Employees, как показано ниже —
ij> CREATE TABLE Employees ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255), PRIMARY KEY (Id) );
И вставил четыре записи, используя оператор вставки как —
ij> INSERT INTO Employees (Name, Salary, Location) VALUES ('Amit', 30000, 'Hyderabad'), ('Kalyan', 40000, 'Vishakhapatnam'), ('Renuka', 50000, 'Delhi'), ('Archana', 15000, 'Mumbai');
Добавление столбца в таблицу
Ниже приведен синтаксис добавления столбца в таблицу с помощью инструкции ALTER.
ALTER TABLE table_name ADD COLUMN column_name column_type;
пример
Используя оператор ALTER, мы пытаемся добавить новый столбец с именем Age с типом integer.
ALTER TABLE Employees ADD COLUMN Age INT; 0 rows inserted/updated/deleted
Добавьте еще один столбец с именем Phone_No с типом integer.
ALTER TABLE Employees ADD COLUMN Phone_No BIGINT; 0 rows inserted/updated/deleted
Команда DESCRIBE описывает указанную таблицу, перечисляя столбцы и их данные, если таблица существует. Если вы DESCRIBE, в таблице Employees вы можете наблюдать за вновь добавленными столбцами, как показано ниже —
ij> DESCRIBE Employees; COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL& ------------------------------------------------------------------------------ ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES SALARY |INTEGER |0 |10 |10 |NULL |NULL |NO LOCATION |VARCHAR |NULL|NULL|255 |NULL |510 |YES AGE |INTEGER |0 |10 |10 |NULL |NULL |YES PHONE_NO |INTEGER |0 |10 |10 |NULL |NULL |YES 6 rows selected
Добавление ограничения в таблицу
Ниже приведен синтаксис для добавления ограничения к столбцу таблицы с помощью инструкции ALTER.
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);
Где ограничение может быть NOT NULL, NULL, PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK.
пример
Используя оператор ALTER, мы пытаемся добавить ограничение UNIQUE в столбец Phone_No.
ij> ALTER TABLE Employees ADD CONSTRAINT New_Constraint UNIQUE(Phone_No); 0 rows inserted/updated/deleted
После того, как вы добавите к столбцу уникальное ограничение, оно не может иметь одинаковые значения для двух строк, т. Е. Номер телефона должен быть уникальным для каждого сотрудника.
Если вы попытаетесь добавить две колонки с одинаковым номером телефона, вы получите исключение, как показано ниже.
ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES ('Amit', 30000, 'Hyderabad', 30, 9848022338); 1 row inserted/updated/deleted ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES ('Sumit', 35000, 'Chennai', 25, 9848022338); ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'NEW_CONSTRAINT' defined on 'EMPLOYEES'.
Отбрасывание ограничения из таблицы
Ниже приведен синтаксис для удаления ограничения столбца:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
пример
Следующий запрос удаляет имя ограничения New_Constraint для столбца Phone_No, созданного выше.
ij> ALTER TABLE Employees DROP CONSTRAINT New_Constraint; 0 rows inserted/updated/deleted
Поскольку мы удалили ограничение UNIQUE для столбца Phone_No, вы можете добавить столбцы с тем же номером телефона.
ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES ('Sumit', 35000, 'Chennai', 25, 9848022338); 1 row inserted/updated/deleted
Вы можете проверить содержимое таблицы ij> select * from Employees следующим образом:
ID |NAME |SALARY |LOCATION |AGE |PHONE_NO ------------------------------------------------------------------------- 1 |Amit |30000 |Hyderabad |30 |9848022338 2 |Sumit |35000 |Chennai |25 |9848022338 2 rows selected
Удаление столбца из таблицы
Ниже приведен синтаксис для удаления столбца столбца.
ALTER TABLE table_name DROP COLUMN column_name;
пример
Следующий запрос удаляет столбец с именем возраста сотрудника —
ij> ALTER TABLE Employees DROP COLUMN Age; 0 rows inserted/updated/deleted
Если вы описываете таблицу, вы можете увидеть только 4 столбца.
ij> DESCRIBE Employees; COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL& ------------------------------------------------------------------------------ ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES SALARY |INTEGER |0 |10 |10 |NULL |NULL |NO LOCATION |VARCHAR |NULL|NULL|255 |NULL |510 |YES PHONE_NO |BIGINT |0 |10 |19 |NULL |NULL |YES
Изменение таблицы с помощью программы JDBC
Ниже приведена программа JDBC для изменения таблицы с помощью запроса ALTER.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class AlterTableExample { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Executing the query String createQuery = "CREATE TABLE Employees( " + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), " + "Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"; stmt.execute(createQuery); System.out.println("Table created"); System.out.println(" "); //Executing the query String insertQuery = "INSERT INTO Employees(" + "Name, Salary, Location) VALUES " + "('Amit', 30000, 'Hyderabad'), " + "('Kalyan', 40000, 'Vishakhapatnam'), " + "('Renuka', 50000, 'Delhi'), " + "('Archana', 15000, 'Mumbai'), " + "('Trupti', 45000, 'Kochin')"; stmt.execute(insertQuery); System.out.println("Values inserted"); System.out.println(" "); //Executing the query String selectQuery = "SELECT * FROM Employees"; ResultSet rs = stmt.executeQuery(selectQuery); System.out.println("Contents of the table after inserting the table"); while(rs.next()) { System.out.println("Id: "+rs.getString("Id")); System.out.println("Name: "+rs.getString("Name")); System.out.println("Salary: "+rs.getString("Salary")); System.out.println("Location: "+rs.getString("Location")); } System.out.println(" "); //Altering the table stmt.execute("ALTER TABLE Employees ADD COLUMN Age INT"); stmt.execute("ALTER TABLE Employees ADD COLUMN Phone_No BigINT"); stmt.execute("ALTER TABLE Employees " + "ADD CONSTRAINT New_Constraint UNIQUE(Phone_No)"); stmt.execute("INSERT INTO Employees " + "(Name, Salary, Location, Age, Phone_No) " + "VALUES ('Amit', 30000, 'Hyderabad', 30, 9848022338)"); ResultSet alterResult = stmt.executeQuery("Select * from Employees"); System.out.println("Contents of the table after altering " + "the table and inserting values to it: "); while(alterResult.next()) { System.out.println("Id: "+alterResult.getString("Id")); System.out.println("Name: "+alterResult.getString("Name")); System.out.println("Salary: "+alterResult.getString("Salary")); System.out.println("Location: "+alterResult.getString("Location")); System.out.println("Age: "+alterResult.getString("Age")); System.out.println("Phone_No: "+alterResult.getString("Phone_No")); } } }
Выход
При выполнении вышеуказанной программы будет сгенерирован следующий вывод:
Table created Values inserted Contents of the table after inserting the table Id: 1 Name: Amit Salary: 30000 Location: Hyderabad Id: 2 Name: Kalyan Salary: 40000 Location: Vishakhapatnam Id: 3 Name: Renuka Salary: 50000 Location: Delhi Id: 4 Name: Archana Salary: 15000 Location: Mumbai Id: 5 Name: Trupti Salary: 45000 Location: Kochin Contents of the table after altering the table and inserting values to it: Id: 1 Name: Amit Salary: 30000 Location: Hyderabad Age: null Phone_No: null Id: 2 Name: Kalyan Salary: 40000 Location: Vishakhapatnam Age: null Phone_No: null Id: 3 Name: Renuka Salary: 50000 Location: Delhi Age: null Phone_No: null Id: 4 Name: Archana Salary: 15000 Location: Mumbai Age: null Phone_No: null Id: 5 Name: Trupti Salary: 45000 Location: Kochin Age: null Phone_No: null Id: 6 Name: Amit Salary: 30000 Location: Hyderabad Age: 30 Phone_No: 9848022338
Apache Derby — индексы дерби
Индекс в таблице — это не что иное, как указатель на ее данные. Они используются для ускорения поиска данных из таблицы.
Если мы используем индексы, операторы INSERT и UPDATE выполняются в более медленной фазе. Принимая во внимание, что SELECT и WHERE выполняются за меньшее время.
Создание индекса
Оператор CREATE INDEX используется для создания нового индекса в таблице в базе данных Derby.
Синтаксис
Ниже приводится синтаксис оператора CREATE INDEX —
CTREATE INDEX index_name on table_name (column_name);
пример
Предположим, мы создали таблицу с именем Employees в Apache Derby, как показано ниже.
CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255), Phone_Number BIGINT );
Следующий оператор SQL создает индекс для столбца с именем Salary в таблице Employees.
ij> CREATE INDEX example_index on Emp (Salary); 0 rows inserted/updated/deleted
Создание УНИКАЛЬНОГО индекса
В Apache Derby для интеграции данных используются уникальные индексы. После создания индекса UNIQUE для столбца в таблице он не допускает повторяющихся значений.
Синтаксис
Ниже приводится синтаксис создания уникального индекса.
CREATE UNIQUE INDEX index_name on table_name (column_name);
пример
В следующем примере создается уникальный индекс для идентификатора столбца таблицы Employee.
ij> CREATE UNIQUE INDEX unique_index on Emp (Phone_Number); 0 rows inserted/updated/deleted
Создав уникальный индекс для столбца, вы не можете ввести те же значения для этого столбца в другой строке. Короче говоря, столбец с индексом UNIQE не допустит дублирования значений.
Вставьте строку в таблицу Emp, как показано ниже
ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Amit', 45000, 'Hyderabad', 9848022338); 1 row inserted/updated/deleted
Так как мы создали уникальный индекс для столбца Phone_No, если вы введете то же значение, что и в предыдущей записи, вы увидите ошибку.
ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Sumit', 35000, 'Chennai', 9848022338); ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'UNIQUE_INDEX' defined on 'EMP'.
Создание составного индекса
Вы можете создать один индекс на две строки, и он называется Composite index.
Синтаксис
Ниже приводится синтаксис составного индекса.
CREATE INDEX index_name on table_name (column_name1, column_name2);
пример
Следующий индекс создает составной индекс по столбцам Имя и Расположение.
ij> CREATE INDEX composite_index on Emp (Name, Location); 0 rows inserted/updated/deleted
Отображение индексов
Запрос SHOW INDEXES отображает список индексов в таблице.
Синтаксис
Ниже приводится синтаксис оператора SHOW INDEXES —
SHOW INDEXES FROM table_name;
пример
В следующем примере я отображаю индексы в таблице «Сотрудники».
ij> SHOW INDEXES FROM Emp;
Это дает следующий результат.
ij> SHOW INDEXES FROM Emp; TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES ---------------------------------------------------------------------------- EMP |PHONE_NUMBER |false |3 |A |NULL |NULL EMP |NAME |true |3 |A |NULL |NULL EMP |LOCATION |true |3 |A |NULL |NULL EMP |SALARY |true |3 |A |NULL |NULL 4 rows selected
Удаление индексов
Оператор Drop Index удаляет / удаляет указанный индекс в столбце.
Синтаксис
Ниже приведен синтаксис оператора DROP INDEX.
DROP INDEX index_name;
пример
В следующем примере удаляются индексы с именем Composite_index и Unique_index, созданные выше.
ij> DROP INDEX composite_index; 0 rows inserted/updated/deleted ij>Drop INDEX unique_index; 0 rows inserted/updated/deleted
Теперь, если вы проверите список индексов, вы можете увидеть индекс по одному столбцу, поскольку мы удалили остальные.
ij> SHOW INDEXES FROM Emp; TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES ---------------------------------------------------------------------------- EMP |SALARY |true |3 |A |NULL |NULL 1 row selected
Обработка индексов с помощью программы JDBC
Следующая программа JDBC демонстрирует, как создавать индексы отбрасывания для столбца в таблице.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class IndexesExample { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:MYDATABASE;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Creating the Emp table String createQuery = "CREATE TABLE Emp( " + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), " + "Salary INT NOT NULL, " + "Location VARCHAR(255), " + "Phone_Number BIGINT )"; stmt.execute(createQuery); System.out.println("Table created"); System.out.println(" "); //Creating an Index on the column Salary stmt.execute("CREATE INDEX example_index on Emp (Salary)"); System.out.println("Index example_index inserted"); System.out.println(" "); //Creating an Unique index on the column Phone_Number stmt.execute("CREATE UNIQUE INDEX unique_index on Emp (Phone_Number)"); System.out.println("Index unique_index inserted"); System.out.println(" "); //Creating a Composite Index on the columns Name and Location stmt.execute("CREATE INDEX composite_index on Emp (Name, Location)"); System.out.println("Index composite_index inserted"); System.out.println(" "); //listing all the indexes System.out.println("Listing all the columns with indexes"); //Dropping indexes System.out.println("Dropping indexes unique_index and, composite_index "); stmt.execute("Drop INDEX unique_index"); stmt.execute("DROP INDEX composite_index"); } }
Выход
При выполнении это генерирует следующий результат
Table created Index example_index inserted Index unique_index inserted Index composite_index inserted Listing all the columns with indexes Dropping indexes unique_index and, composite_index
Apache Derby — Процедуры
В этой главе рассказывается, как создавать и удалять процедуры в Derby.
Создание процедуры
Вы можете создать процедуру, используя инструкцию CREATE PROCEDURE.
Синтаксис
Ниже приводится синтаксис оператора CREATE PROCEDURE.
CREATE PROCEDURE procedure_name (parameter_type parameter_name1, parameter_type parameter_name2 . . . .) parameter_style;
пример
Предположим, мы создали таблицу в Дерби, как показано ниже.
CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255), Phone_Number BIGINT );
И вставил в него значения следующим образом —
INSERT INTO Employees(Name, Salary, Location) VALUES ('Amit', 30000, 'Hyderabad'), ('Kalyan', 40000, 'Vishakhapatnam'), ('Renuka', 50000, 'Delhi'), ('Archana', 15000, 'Mumbai'), ('Trupthi', 45000, 'Kochin')";
В следующем примере создается процедура с именем Update_Procedure, которая принимает параметры JAVA.
ij> CREATE PROCEDURE Update_Procedure(IN id INTEGER, IN name VARCHAR(10)) PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME 'ProcedureExample.testProc'; > 0 rows inserted/updated/deleted
Где выглядит класс MethodExample —
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class ProcedureExample { public static void testProc(int salary, String name) throws Exception { String connectionURL = "jdbc:derby:MYDATABASE;create=true"; Connection conn = DriverManager.getConnection(connectionURL); String query = "UPDATE Employees SET SALARY = ? WHERE NAME = ?"; PreparedStatement pstmt = conn.prepareStatement(query); pstmt.setInt(1, salary); pstmt.setString (2, name); pstmt.executeUpdate(); } }
Вы можете проверить список процедур, используя запрос SHOW PROCEDURES .
ij> SHOW PROCEDURES; PROCEDURE_SCHEM |PROCEDURE_NAME |REMARKS ------------------------------------------------------------------------ APP |UPDATE_PROCEDURE |ProcedureExample.te& SALES |EXAMPLE_ PROCEDURE |com.example.sales.c& SQLJ |INSTALL_JAR |org.apache.derby.ca& SQLJ |REMOVE_JAR |org.apache.derby.ca& SQLJ |REPLACE_JAR |org.apache.derby.ca& SYSCS_UTIL |SYSCS_BACKUP_DATABASE |org.apache.derby.ca& . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Здесь вы можете наблюдать за вновь созданной процедурой.
Отказ от процедуры
Вы можете удалить процедуру, используя инструкцию DROP PROCEDURE.
Синтаксис
Ниже приведен синтаксис оператора DROP PROCEDURE.
DROP PROCEDURE procedure_name;
пример
В следующем примере отбрасывается процедура с именем Update_Procedure, созданная выше.
ij> DROP PROCEDURE Update_Procedure; > 0 rows inserted/updated/deleted
Apache Derby — Схемы
Схема базы данных — это каркасная структура, которая представляет логическое представление всей базы данных. Он определяет, как организованы данные и как связаны между собой отношения. Он формулирует все ограничения, которые должны быть применены к данным.
Создание схемы
Вы можете создать схему в Apache Derby, используя инструкцию CREATE SCHEMA.
Синтаксис
Ниже приводится синтаксис оператора CREATE SCHEMA.
CREATE SCHEMA schema_name AUTHORIZATION id
пример
В следующем примере создается схема с именем my_schema в базе данных Derby.
ij> CREATE SCHEMA AUTHORIZATION my_schema; 0 rows inserted/updated/deleted
Затем вы можете создать таблицу в этой схеме, как показано ниже.
ij> CREATE TABLE my_schema.Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255), Phone_Number BIGINT ); > > > > > 0 rows inserted/updated/deleted
Вы можете проверить список схем, используя запрос SHOW SCHEMAS, здесь вы можете найти список созданных схем.
ij> show schemas; TABLE_SCHEM ------------------------------ APP MY_SCHEMA NULLID SQLJ SYS SYSCAT SYSCS_DIAG SYSCS_UTIL SYSFUN SYSIBM SYSPROC SYSSTAT 12 rows selected
Отбрасывание схемы
Вы можете удалить существующую схему, используя инструкцию DROP SCHEMA.
Синтаксис
Ниже приводится синтаксис оператора DROPS SCHEMA.
DROP SCHEMA my_schema RESTRICT;
пример
Вы можете удалить схему, только если в ней нет объектов. Чтобы удалить схему, удалите все таблицы в ней и удалите схему.
ij> DROP TABLE my_schema.Emp; 0 rows inserted/updated/deleted
В следующем примере удаляется созданная выше схема.
ij> DROP SCHEMA my_schema RESTRICT; 0 rows inserted/updated/deleted
Пример JDBC
В следующем примере JDBC создает и удаляет схему с именем my_schema.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class CreateSchemaExample { public static void main(String args[]) throws Exception { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:sampleDB;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); stmt.execute("CREATE SCHEMA AUTHORIZATION my_schema"); //Executing the query String query = "CREATE TABLE my_schema.Employees( " + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, " + "Name VARCHAR(255), " + "Salary INT NOT NULL, " + "Location VARCHAR(255), " + "PRIMARY KEY (Id))"; stmt.execute(query); System.out.println("Table created in schema"); stmt.execute("DROP TABLE my_schema.Employees"); stmt.execute("DROP SCHEMA my_schema RESTRICT"); System.out.println("Schema dropped"); } }
Выход
При выполнении вышеупомянутая программа генерирует следующий пример.
Table created in schema Schema dropped
Apache Derby — Триггеры
В базах данных триггеры — это операторы / код, которые выполняются всякий раз, когда происходит событие. После создания триггера для определенного события в таблице код, указанный в триггере, выполняется каждый раз, когда происходит событие. Вы можете создать несколько триггеров на одной таблице.
В этой главе рассказывается, как создавать и удалять триггеры с помощью Apache Derby.
Создание триггера
Вы можете создать триггер в Derby с помощью оператора CREATE TRIGGER.
Синтаксис
Ниже приводится синтаксис запроса CREATE TRIGGER.
CREATE TRIGGER trigger_name { NO CASCADE BEFORE | AFTER } {INSERT [OR] | UPDATE [OR] | DELETE}[OF col_name] ON table_name [REFERENCING OLD AS o NEW AS n] [FOR EACH ROW] Statement
пример
Предположим, мы создали таблицу с именем Emp в Derby, как показано ниже.
CREATE TABLE Emp ( Id INT NOT NULL, Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255) );
И вставил в него 5 рядов.
INSERT INTO Emp(Id, Name, Salary, Location) VALUES (1, 'Amit', 30000, 'Hyderabad'), (2, 'Kalyan', 40000, 'Vishakhapatnam'), (3,'Renuka', 50000, 'Delhi'), (4, 'Archana', 15000, 'Mumbai'), (5, 'Trupthi', 45000, 'Kochin');
Если у нас есть другая таблица с именем BackUp, и мы намереваемся сохранить в ней удаленные строки из таблицы Emp.
CREATE TABLE BackUp ( Id INT NOT NULL, Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255) );
Следующий запрос создает триггер в таблице запросов DELETE с именем Emp . Он сохраняет удаленные строки Emp в таблицу Backup.
ij> CREATE TRIGGER my_trigger AFTER DELETE ON Emp REFERENCING OLD AS oldRow FOR EACH ROW MODE DB2SQL INSERT INTO BackUp VALUES (oldRow.Id, oldRow.Name, oldRow.Salary, oldRow.Location);
Теперь удалите строку из таблицы Emp как —
ij> Delete From Emp where Name = 'Kalyan'; 1 row inserted/updated/deleted ij> Delete From Emp where Name = 'Amit'; 1 row inserted/updated/deleted
Если вы проверяете таблицу BackUp, вы можете наблюдать удаленные строки в ней.
ij> select * from BackUp; ID |NAME |SALARY |LOCATION ------------------------------------------------------------------------- 2 |Kalyan |40000 |Vishakhapatnam 1 |Amit |30000 |Hyderabad 2 rows selected
Удаление триггера
Вы можете удалить триггер в Derby с помощью оператора DROP TRIGGER.
Синтаксис
Ниже приводится синтаксис запроса DROP TRIGGER —
ij> Drop trigger tigger_name;
пример
В следующем примере удаляется созданный выше триггер my_trigger —
ij> Drop trigger my_trigger; 0 rows inserted/updated/deleted
Пример JDBC
Следующая программа JDBC создает и удаляет триггеры в Derby.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Triggers_Example { public static void main(String args[]) throws SQLException, ClassNotFoundException { //Registering the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); //Getting the Connection object String URL = "jdbc:derby:TestDataBase;create=true"; Connection conn = DriverManager.getConnection(URL); //Creating the Statement object Statement stmt = conn.createStatement(); //Creating the Emp table stmt.execute("CREATE TABLE Emp ( " + "Id INT NOT NULL, " + "Name VARCHAR(255), " + "Salary INT NOT NULL, " + "Location VARCHAR(255))"); //Insert values in to the EMp table String query = "INSERT INTO Emp(Id, Name, Salary, Location) VALUES \r\n" +"(1, 'Amit', 30000, 'Hyderabad'), " + "(2, 'Kalyan', 40000, 'Vishakhapatnam'), " + "(3,'Renuka', 50000, 'Delhi'), " + "(4, 'Archana', 15000, 'Mumbai'), " + "(5, 'Trupthi', 45000, 'Kochin')"; stmt.execute(query); //Creating the BackUp table stmt.execute("CREATE TABLE BackUp ( " + "Id INT NOT NULL, " + "Name VARCHAR(255), " + "Salary INT NOT NULL, " + "Location VARCHAR(255))"); //Creating a trigger String createTrigger = "CREATE TRIGGER my_trigger " + "AFTER DELETE ON Emp " + "REFERENCING OLD AS oldRow " + "FOR EACH ROW MODE DB2SQL " + "INSERT INTO BackUp " + "VALUES (oldRow.Id, oldRow.Name, oldRow.Salary, oldRow.Location)"; stmt.execute(createTrigger); System.out.println("Trigger created"); //Deleting records from Emp table stmt.executeUpdate("Delete From Emp where Name = 'Kalyan'"); stmt.executeUpdate("Delete From Emp where Name = 'Amit'"); //Getting the contents of BackUp table ResultSet rs = stmt.executeQuery("SELECT * from BackUp"); while(rs.next()){ System.out.println(rs.getInt("Id")); System.out.println(rs.getString("Name")); System.out.println(rs.getString("Salary")); System.out.println(rs.getString("Location")); System.out.println(" "); } } }
Выход
При выполнении вышеупомянутой программы генерируется следующий вывод: