Учебники

Apache Derby — Краткое руководство

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.

Последняя версия 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-файлы» .

Путь сборки Java

И выберите необходимые файлы 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(" ");
      }
   }
}

Выход

При выполнении вышеупомянутой программы генерируется следующий вывод: