База данных H2 - Краткое руководство

H2 - это облегченная база данных Java с открытым исходным кодом. Он может быть встроен в приложения Java или работать в режиме клиент-сервер. В основном базу данных H2 можно настроить для работы в качестве базы данных в памяти, что означает, что данные не будут сохраняться на диске. Из-за встроенной базы данных он не используется для производственной разработки, но в основном используется для разработки и тестирования.

Эта база данных может использоваться во встроенном режиме или в режиме сервера. Ниже приведены основные особенности базы данных H2.

  • Чрезвычайно быстрый, открытый исходный код, JDBC API
  • Доступен во встроенном и серверном режимах; базы данных в памяти
  • Консольное приложение на основе браузера
  • Компактность - размер файла jar около 1,5 МБ

Особенности базы данных H2

Основные особенности базы данных H2 следующие:

  • Это чрезвычайно быстрый движок базы данных.

  • H2 имеет открытый исходный код и написан на Java.

  • Он поддерживает стандартный SQL и JDBC API. Он также может использовать драйвер PostgreSQL ODBC.

  • Имеет встроенный и серверный режим.

  • H2 поддерживает clustering и multi-version concurrency.

  • Обладает надежными функциями безопасности.

Дополнительные возможности

Ниже приведены некоторые дополнительные функции базы данных H2.

  • H2 - это базы данных и таблицы на диске или в памяти, поддержка баз данных только для чтения, временные таблицы.

  • H2 обеспечивает поддержку транзакций (чтение с подтверждением), множественные соединения с двухфазной фиксацией, блокировку на уровне таблицы.

  • H2 - это оптимизатор, основанный на затратах, использующий генетический алгоритм для сложных запросов без администрирования.

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

  • H2 поддерживает зашифрованную базу данных (AES), шифрование паролей SHA-256, функции шифрования и SSL.

Компоненты в базе данных H2

Чтобы использовать базу данных H2, вам необходимо иметь следующие компоненты:

  • Веб-браузер
  • Консольный сервер H2

Это клиент-серверное приложение, поэтому для его запуска требуются и сервер, и клиент (браузер).

H2 - это база данных, написанная на Java. Мы можем легко встроить эту базу данных в наше приложение с помощью JDBC. Мы можем запустить это на многих различных платформах или любой версии Java Runtime Environment. Однако перед установкой базы данных в системе должна быть установлена ​​Java.

Проверить установку Java

Если JDK установлен в системе, попробуйте следующую команду, чтобы проверить версию Java.

java –version

Если JDk успешно установлен в системе, мы получим следующий вывод.

java version "1.8.0_91" 
Java(TM) SE Runtime Environment (build 1.8.0_91-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Если JDK не установлен в системе, перейдите по следующей ссылке, чтобы установить JDK .

Установить базу данных H2

Мы можем запустить эту базу данных на многих разных платформах. В этой главе мы узнаем об установке базы данных H2 в Windows.

Ниже приведены шаги по установке базы данных H2 в операционной системе Windows.

Шаг 1. Загрузите файл установки H2

Загрузите последнюю версию базы данных H2 по указанной ссылке. По этой ссылке вы получите последнюю версию базы данных H2 двух типов. Один - это тип установщика Windows (то есть файл .exe), а второй - независимый от платформы zip-файл для других операционных систем.

Щелкните установщик Windows, чтобы загрузить поддерживаемую Windows базу данных H2 после загрузки файла .exe. В данном случае мы используем базу данных H2 с версией 1.4.192.

Шаг 2: Установите базу данных H2

После загрузки мы получаем установочный файл Windows H2 (например, h2-setup-yyyy-mm-dd.exe) в каталоге Downloads. Чтобы начать процесс установки базы данных H2, дважды щелкните файл установщика.

Следующий экран - это первый шаг в процессе установки. Укажите путь, по которому мы хотим установить сервер базы данных H2, как показано на следующем снимке экрана.

Как видно на скриншоте выше, по умолчанию потребуется C:\ProgramFiles (x86)\H2в качестве папки назначения. Нажмите «Далее», чтобы перейти к следующему шагу. Появится следующий экран.

На приведенном выше снимке экрана нажмите кнопку «Установить», чтобы начать процесс установки. После установки получаем следующий скриншот.

Нажмите Готово, чтобы завершить процесс установки.

Шаг 3. Проверьте установку базы данных H2

После установки проверим установку базы данных в системе. Щелкните Windows → введите Консоль H2 → Щелкните значок консоли H2. Подключиться к URLhttp://localhost:8082. Во время подключения база данных H2 запросит регистрацию базы данных, как показано на следующем снимке экрана.

Заполните все данные в указанном выше диалоговом окне, такие как сохраненные настройки, имя настроек, класс драйвера, URL-адрес JDBC, имя пользователя и пароль. В URL-адресе JDBC укажите местонахождение базы данных и имя базы данных. Имя пользователя и Пароль - это поля для имени пользователя и пароля базы данных. Щелкните Подключить.

Появится приветственная страница базы данных, как показано на следующем снимке экрана.

Команда выбора используется для выборки данных записи из таблицы или нескольких таблиц. Если мы разрабатываем запрос на выборку, он возвращает данные в виде таблицы результатов с именемresult sets.

Синтаксис

Основной синтаксис оператора SELECT следующий:

SELECT [ TOP term ] [ DISTINCT | ALL ] selectExpression [,...] 
FROM tableExpression [,...] [ WHERE expression ] 
[ GROUP BY expression [,...] ] [ HAVING expression ] 
[ { UNION [ ALL ] | MINUS | EXCEPT | INTERSECT } select ] [ ORDER BY order [,...] ] 
[ [ LIMIT expression ] [ OFFSET expression ] [ SAMPLE_SIZE rowCountInt ] ] 
[ FOR UPDATE ]

Чтобы получить все доступные поля, используйте следующий синтаксис.

SELECT * FROM table_name;

пример

Рассмотрим таблицу CUSTOMER, имеющую следующие записи:

+----+----------+-----+-----------+----------+ 
| ID | NAME     | AGE | ADDRESS   | SALARY   | 
+----+----------+-----+-----------+----------+ 
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 | 
|  2 | Khilan   |  25 | Delhi     |  1500.00 | 
|  3 | kaushik  |  23 | Kota      |  2000.00 | 
|  4 | Chaitali |  25 | Mumbai    |  6500.00 | 
|  5 | Hardik   |  27 | Bhopal    |  8500.00 | 
|  6 | Komal    |  22 | MP        |  4500.00 | 
|  7 | Muffy    |  24 | Indore    | 10000.00 | 
+----+----------+-----+-----------+----------+

Чтобы получить таблицу клиентов вместе с заданными данными, выполните следующие запросы.

CREATE TABLE CUSTOMER (id number, name varchar(20), age number, address varchar(20), 
salary number);  

INSERT into CUSTOMER values (1, 'Ramesh', 32, 'Ahmedabad', 2000); 
INSERT into CUSTOMER values (2, 'Khilan', 25, 'Delhi', 1500); 
INSERT into CUSTOMER values (3, 'kaushik', 23, 'Kota', 2000); 
INSERT into CUSTOMER values (4, 'Chaitali', 25, 'Mumbai', 6500); 
INSERT into CUSTOMER values (5, 'Hardik', 27, 'Bhopal', 8500); 
INSERT into CUSTOMER values (6, 'Komal', 22, 'MP', 4500); 
INSERT into CUSTOMER values (7, 'Muffy', 24, 'Indore', 10000);

Следующая команда является примером, который извлекает поля ID, Name и Salary клиентов, доступные в таблице CUSTOMER.

SELECT ID, NAME, SALARY FROM CUSTOMERS;

Приведенная выше команда дает следующий результат.

+----+----------+----------+ 
| ID | NAME     | SALARY   | 
+----+----------+----------+ 
|  1 | Ramesh   |  2000.00 | 
|  2 | Khilan   |  1500.00 | 
|  3 | kaushik  |  2000.00 | 
|  4 | Chaitali |  6500.00 | 
|  5 | Hardik   |  8500.00 | 
|  6 | Komal    |  4500.00 | 
|  7 | Muffy    | 10000.00 | 
+----+----------+----------+

Используйте следующий запрос, чтобы получить все поля таблицы CUSTOMERS.

SQL> SELECT * FROM CUSTOMERS;

Приведенный выше запрос дает следующий результат -

+----+----------+-----+-----------+----------+ 
| ID | NAME     | AGE | ADDRESS   | SALARY   | 
+----+----------+-----+-----------+----------+ 
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 | 
|  2 | Khilan   |  25 | Delhi     |  1500.00 | 
|  3 | kaushik  |  23 | Kota      |  2000.00 | 
|  4 | Chaitali |  25 | Mumbai    |  6500.00 | 
|  5 | Hardik   |  27 | Bhopal    |  8500.00 | 
|  6 | Komal    |  22 | MP        |  4500.00 | 
|  7 | Muffy    |  24 | Indore    | 10000.00 | 
+----+----------+-----+-----------+----------+

Оператор SQL INSERT используется для добавления новых строк данных в таблицу в базе данных.

Синтаксис

Ниже приведен основной синтаксис оператора INSERT INTO.

INSERT INTO tableName 
{ [ ( columnName [,...] ) ] 
{ VALUES 
{ ( { DEFAULT | expression } [,...] ) } [,...] | [ DIRECT ] [ SORTED ] select } } | 
{ SET { columnName = { DEFAULT | expression } } [,...] }

Используя этот оператор INSERT, мы можем вставить новую запись или новые строки в таблицу. При использовании предложения DIRECT результаты напрямую передаются целевой таблице без каких-либо промежуточных шагов. Однако при добавлении значений для всех столбцов таблицы убедитесь, что порядок значений соответствует порядку столбцов в таблице.

пример

Давайте возьмем пример и попробуем вставить следующие данные записи в таблицу Customer.

Я БЫ имя Возраст Адрес Зарплата
1 Рамеш 32 Ахмадабад 2000 г.
2 Хилан 25 Дели 1500
3 Кошик 23 Кота 2000 г.
4 Chaitail 25 Мумбаи 6500
5 Hardik 27 Бхопал 8500
6 Комал 22 Депутат 4500
7 Маффи 24 Индор 10000

Мы можем получить все данные записи в таблице клиентов, выполнив следующие команды.

INSERT INTO CUSTOMER VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000); 
INSERT INTO CUSTOMER VALUES (2, 'Khilan', 25, 'Delhi', 1500); 
INSERT INTO CUSTOMER VALUES (3, 'kaushik', 23, 'Kota', 2000); 
INSERT INTO CUSTOMER VALUES (4, 'Chaitali', 25, 'Mumbai', 6500); 
INSERT INTO CUSTOMER VALUES (5, 'Hardik', 27, 'Bhopal', 8500); 
INSERT INTO CUSTOMER VALUES (6, 'Komal', 22, 'MP', 4500); 
INSERT INTO CUSTOMER VALUES (7, 'Muffy', 24, 'Indore', 10000);

Запрос UPDATE используется для обновления или изменения существующих записей в таблице. Мы можем использовать предложение WHERE с запросом UPDATE для обновления выбранных строк, иначе будут затронуты все строки.

Синтаксис

Ниже приводится базовый синтаксис запроса UPDATE.

UPDATE tableName [ [ AS ] newTableAlias ] SET 
{ { columnName = { DEFAULT | expression } } [,...] } | 
{ ( columnName [,...] ) = ( select ) } 
[ WHERE expression ] [ ORDER BY order [,...] ] [ LIMIT expression ]

В этом синтаксисе UPDATE мы можем объединить более одного условия, используя предложения AND или OR.

пример

Рассмотрим таблицу CUSTOMER, в которой есть следующие записи.

+----+----------+-----+-----------+----------+ 
| ID | NAME     | AGE | ADDRESS   | SALARY   | 
+----+----------+-----+-----------+----------+ 
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 | 
|  2 | Khilan   |  25 | Delhi     |  1500.00 | 
|  3 | kaushik  |  23 | Kota      |  2000.00 | 
|  4 | Chaitali |  25 | Mumbai    |  6500.00 | 
|  5 | Hardik   |  27 | Bhopal    |  8500.00 | 
|  6 | Komal    |  22 | MP        |  4500.00 | 
|  7 | Muffy    |  24 | Indore    | 10000.00 | 
+----+----------+-----+-----------+----------+

Если вы хотите получить таблицу клиентов вместе с заданными данными, выполните следующие запросы.

CREATE TABLE CUSTOMER (id number, name varchar(20), age number, address varchar(20), 
   salary number);  
INSERT into CUSTOMER values (1, 'Ramesh', 32, 'Ahmedabad', 2000); 
INSERT into CUSTOMER values (2, 'Khilan', 25, 'Delhi', 1500); 
INSERT into CUSTOMER values (3, 'kaushik', 23, 'Kota', 2000); 
INSERT into CUSTOMER values (4, 'Chaitali', 25, 'Mumbai', 6500); 
INSERT into CUSTOMER values (5, 'Hardik', 27, 'Bhopal', 8500); 
INSERT into CUSTOMER values (6, 'Komal', 22, 'MP', 4500); 
INSERT into CUSTOMER values (7, 'Muffy', 24, 'Indore', 10000);

Следующая команда является примером, который обновит АДРЕС для клиента с идентификатором 6:

UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;

Теперь в таблице CUSTOMERS будут следующие записи. Мы можем проверить записи в таблице клиентов, выполнив следующий запрос.

SELECT * FROM CUSTOMERS;

Приведенный выше запрос дает следующий результат.

+----+----------+-----+-----------+----------+ 
| ID | NAME     | AGE | ADDRESS   | SALARY   | 
+----+----------+-----+-----------+----------+ 
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 | 
|  2 | Khilan   |  25 | Delhi     |  1500.00 | 
|  3 | kaushik  |  23 | Kota      |  2000.00 | 
|  4 | Chaitali |  25 | Mumbai    |  6500.00 | 
|  5 | Hardik   |  27 | Bhopal    |  8500.00 | 
|  6 | Komal    |  22 | Pune      |  4500.00 | 
|  7 | Muffy    |  24 | Indore    | 10000.00 | 
+----+----------+-----+-----------+----------+

Чтобы изменить все значения столбцов ADDRESS и SALARY в таблице CUSTOMERS, нам не нужно использовать предложение WHERE. Запрос UPDATE будет следующим:

UPDATE CUSTOMERS SET ADDRESS = 'Pune', SALARY = 1000.00;

Теперь в таблице CUSTOMERS будут следующие записи. Мы можем проверить записи в таблице клиентов, выполнив следующий запрос.

SELECT * FROM CUSTOMERS;

Приведенный выше запрос дает следующий результат -

+----+----------+-----+---------+---------+ 
| ID | NAME     | AGE | ADDRESS | SALARY  | 
+----+----------+-----+---------+---------+ 
|  1 | Ramesh   |  32 | Pune    | 1000.00 | 
|  2 | Khilan   |  25 | Pune    | 1000.00 | 
|  3 | kaushik  |  23 | Pune    | 1000.00 | 
|  4 | Chaitali |  25 | Pune    | 1000.00 | 
|  5 | Hardik   |  27 | Pune    | 1000.00 | 
|  6 | Komal    |  22 | Pune    | 1000.00 | 
|  7 | Muffy    |  24 | Pune    | 1000.00 | 
+----+----------+-----+---------+---------+

Запрос SQL DELETE используется для удаления существующих записей из таблицы. Мы можем использовать предложение WHERE с запросом DELETE для удаления выбранных записей, иначе все записи будут удалены.

Синтаксис

Ниже приводится общий синтаксис запроса команды удаления.

DELETE [ TOP term ] FROM tableName [ WHERE expression ] [ LIMIT term ]

Приведенный выше синтаксис удаляет строки из таблицы. Если указано TOP или LIMIT, удаляется не более указанного количества строк (без ограничения, если значение NULL или меньше нуля).

пример

Рассмотрим таблицу CUSTOMER, в которой есть следующие записи.

+----+----------+-----+-----------+----------+ 
| ID | NAME     | AGE | ADDRESS   | SALARY   | 
+----+----------+-----+-----------+----------+ 
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 | 
|  2 | Khilan   |  25 | Delhi     |  1500.00 | 
|  3 | kaushik  |  23 | Kota      |  2000.00 | 
|  4 | Chaitali |  25 | Mumbai    |  6500.00 | 
|  5 | Hardik   |  27 | Bhopal    |  8500.00 | 
|  6 | Komal    |  22 | MP        |  4500.00 | 
|  7 | Muffy    |  24 | Indore    | 10000.00 | 
+----+----------+-----+-----------+----------+

Следующая команда удалит данные о клиенте, ID которого равен 6.

DELETE FROM CUSTOMERS WHERE ID = 6;

После выполнения указанной выше команды проверьте таблицу клиентов, выполнив следующую команду.

SELECT * FROM CUSTOMERS;

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

+----+----------+-----+-----------+----------+ 
| ID | NAME     | AGE | ADDRESS   | SALARY   | 
+----+----------+-----+-----------+----------+ 
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 | 
|  2 | Khilan   |  25 | Delhi     |  1500.00 | 
|  3 | kaushik  |  23 | Kota      |  2000.00 | 
|  4 | Chaitali |  25 | Mumbai    |  6500.00 | 
|  5 | Hardik   |  27 | Bhopal    |  8500.00 | 
|  7 | Muffy    |  24 | Indore    | 10000.00 | 
+----+----------+-----+-----------+----------+

Если мы хотим УДАЛИТЬ все записи из таблицы CUSTOMERS, мы не используем предложение WHERE. Запрос DELETE будет следующим.

DELETE FROM CUSTOMER;

После выполнения указанной выше команды в таблице «Клиент» не будет никаких записей.

BACKUP - это команда, используемая для создания резервной копии базы данных в отдельный файл .zip. Объекты не блокируются, и при резервном копировании также копируется журнал транзакций. Для выполнения этой команды требуются права администратора.

Синтаксис

Ниже приводится общий синтаксис команды резервного копирования.

BACKUP TO fileNameString;

пример

В этом примере давайте сделаем резервную копию текущей базы данных в backup.zipфайл. Для этого используйте следующую команду.

BACKUP TO 'backup.zip';

Выполнив указанную выше команду, вы получите файл backup.zip в своей локальной файловой системе.

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

Синтаксис

Ниже приводится общий синтаксис команды CALL.

CALL expression;

В этом синтаксисе можно использовать арифметическое выражение.

пример

Давайте возьмем пример и выполним арифметическое выражение (15 * 25) с помощью команды call.

CALL 15*25;

Приведенная выше команда дает следующий результат.

375
375

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

Синтаксис

Ниже приводится общий синтаксис команды EXPLAIN.

EXPLAIN { [ PLAN FOR ] | ANALYZE } { select | insert | update | delete | merge}

Наряду с этим синтаксисом мы можем использовать выбор, вставку, удаление и слияние.

пример

В этом примере объясняются детали плана запроса клиента с идентификатором 1.

EXPLAIN SELECT * FROM CUSTOMER WHERE ID = 1;

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

Команда MERGE используется для обновления существующих строк и вставки новых строк в таблицу. Столбец первичного ключа играет важную роль при использовании этой команды; он используется для поиска строки.

Синтаксис

Ниже приводится общий синтаксис команды MERGE.

MERGE INTO tableName [ ( columnName [,...] ) ] 
[ KEY ( columnName [,...] ) ] 
{ VALUES { ( { DEFAULT | expression } [,...] ) } [,...] | select }

В приведенном выше синтаксисе предложение KEY используется для указания имени столбца первичного ключа. Наряду с предложением VALUES мы можем использовать примитивные значения для вставки или мы можем извлекать и сохранять другие значения таблицы в этой таблице с помощью команды select.

пример

В этом примере давайте попробуем добавить новую запись в таблицу Customers. Ниже приведены сведения о новой записи в таблице.

Название столбца Значение
Я БЫ 8
ИМЯ Локеш
ВОЗРАСТ 32
АДРЕС Хайдарабад
ЗАРПЛАТА 2500

Используя следующий запрос, давайте вставим данную запись в запрос базы данных H2.

MERGE INTO CUSTOMER KEY (ID) VALUES (8, 'Lokesh', 32, 'Hyderabad', 2500);

Вышеупомянутый запрос дает следующий результат.

Update count: 1

Давайте проверим записи таблицы Customer, выполнив следующий запрос.

SELECT * FROM CUSTOMER;

Вышеупомянутый запрос дает следующий результат.

Я БЫ имя Возраст Адрес Зарплата
1 Рамеш 32 Ахмадабад 2000 г.
2 Хилан 25 Дели 1500
3 Кошик 23 Кота 2000 г.
4 Chaitali 25 Мумбаи 6500
5 Hardik 27 Бхопал 8500
6 Комал 22 Депутат 4500
7 Маффи 24 Индор 10000
8 Локеш 32 Хайдарабад 2500

Теперь попробуем обновить запись с помощью Mergeкоманда. Ниже приведены подробные сведения об обновленной записи.

Название столбца Значение
Я БЫ 8
ИМЯ Локи
ВОЗРАСТ 32
АДРЕС Хайдарабад
ЗАРПЛАТА 3000

Используйте следующий запрос, чтобы вставить данную запись в запрос базы данных H2.

MERGE INTO CUSTOMER KEY (ID) VALUES (8, 'Loki', 32, 'Hyderabad', 3000);

Вышеупомянутый запрос дает следующий результат.

Update count: 1

Давайте проверим записи таблицы Customer, выполнив следующий запрос.

SELECT * FROM CUSTOMER;

Вышеупомянутый запрос дает следующий результат -

Я БЫ имя Возраст Адрес Зарплата
1 Рамеш 32 Ахмадабад 2000 г.
2 Хилан 25 Дели 1500
3 Кошик 23 Кота 2000 г.
4 Chaitali 25 Мумбаи 6500
5 Hardik 27 Бхопал 8500
6 Комал 22 Депутат 4500
7 Маффи 24 Индор 10000
8 Локи 32 Хайдарабад 3000

SHOW - это команда, используемая для отображения списка схем, таблиц или столбцов таблицы.

Синтаксис

Ниже приводится общий синтаксис команды SHOW.

SHOW { SCHEMAS | TABLES [ FROM schemaName ] | 
COLUMNS FROM tableName [ FROM schemaName ] }

пример

Следующая команда может использоваться для получения списка таблиц в текущей базе данных.

SHOW TABLES;

Приведенная выше команда дает следующий результат.

ТАБЛИЦА ИМЯ ТАБЛИЦА_СХЕМА
КЛИЕНТ ОБЩЕСТВЕННЫЙ
EMP ОБЩЕСТВЕННЫЙ

CREATE - это общая команда SQL, используемая для создания таблиц, схем, последовательностей, представлений и пользователей на сервере базы данных H2.

Создать таблицу

Создать таблицу - это команда, используемая для создания пользовательской таблицы в текущей базе данных.

Синтаксис

Ниже приведен общий синтаксис команды «Создать таблицу».

CREATE [ CACHED | MEMORY ] [ TEMP | [ GLOBAL | LOCAL ] TEMPORARY ] 
TABLE [ IF NOT EXISTS ] name 
[ ( { columnDefinition | constraint } [,...] ) ] 
[ ENGINE tableEngineName [ WITH tableEngineParamName [,...] ] ] 
[ NOT PERSISTENT ] [ TRANSACTIONAL ] 
[ AS select ]

Используя общий синтаксис команды Create Table, мы можем создавать различные типы таблиц, такие как кэшированные таблицы, таблицы памяти и временные таблицы. Ниже приведен список для описания различных пунктов данного синтаксиса.

  • CACHED- Кэшированные таблицы являются типом по умолчанию для обычных таблиц. Это означает, что количество строк не ограничено основной памятью.

  • MEMORY- Таблицы памяти являются типом по умолчанию для временных таблиц. Это означает, что таблицы памяти не должны становиться слишком большими, а данные индекса хранятся в основной памяти.

  • TEMPORARY- Временные таблицы удаляются при закрытии или открытии базы данных. В основном временные таблицы бывают двух типов -

    • ГЛОБАЛЬНЫЙ тип - Доступен для всех подключений.

    • ЛОКАЛЬНЫЙ тип - Доступен текущему соединению.

    Тип по умолчанию для временных таблиц - глобальный тип. Индексы временных таблиц хранятся в основной памяти, если временная таблица не создается с помощью CREATE CACHED TABLE.

  • ENGINE - Параметр ENGINE требуется только при использовании реализаций настраиваемых таблиц.

  • NOT PERSISTENT - Это модификатор, сохраняющий полные данные таблицы в памяти, и все строки теряются при закрытии базы данных.

  • TRANSACTIONAL - Это ключевое слово, которое фиксирует открытую транзакцию, и эта команда поддерживает только временные таблицы.

пример

В этом примере давайте создадим таблицу с именем tutorials_tbl, используя следующие данные.

Старший Нет Название столбца Тип данных
1 Я БЫ Int
2 заглавие Варчар (50)
3 Автор Варчар (20)
4 Дата подачи Свидание

Следующий запрос используется для создания таблицы tutorials_tbl вместе с данными данного столбца.

CREATE TABLE tutorials_tbl ( 
   id INT NOT NULL, 
   title VARCHAR(50) NOT NULL, 
   author VARCHAR(20) NOT NULL, 
   submission_date DATE 
);

Вышеупомянутый запрос дает следующий результат.

(0) rows effected

Создать схему

Создать схему - это команда, используемая для создания зависимой от пользователя схемы с определенной авторизацией (под текущим зарегистрированным пользователем).

Синтаксис

Ниже приводится общий синтаксис команды «Создать схему».

CREATE SCHEMA [ IF NOT EXISTS ] name [ AUTHORIZATION ownerUserName ]

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

Эта команда фиксирует открытую транзакцию в этом соединении.

пример

В этом примере давайте создадим схему с именем test_schema под пользователем SA, используя следующую команду.

CREATE SCHEMA test_schema AUTHORIZATION sa;

Приведенная выше команда дает следующий результат.

(0) rows effected

Создать последовательность

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

Синтаксис

Ниже приводится общий синтаксис команды создания последовательности.

CREATE SEQUENCE [ IF NOT EXISTS ] newSequenceName [ START WITH long ] 
[ INCREMENT BY long ] 
[ MINVALUE long | NOMINVALUE | NO MINVALUE ] 
[ MAXVALUE long | NOMAXVALUE | NO MAXVALUE ] 
[ CYCLE long | NOCYCLE | NO CYCLE ] 
[ CACHE long | NOCACHE | NO CACHE ]

Этот общий синтаксис используется для создания последовательности. Тип данных последовательностиBIGINT. В этой последовательности значения никогда не используются повторно, даже если транзакция откатывается.

пример

В этом примере давайте создадим последовательность с именем SEQ_ID, используя следующий запрос.

CREATE SEQUENCE SEQ_ID;

Вышеупомянутый запрос дает следующий результат.

(0) rows effected

ALTER - это команда, используемая для изменения структуры таблицы путем добавления различных предложений к alterкоманда. Исходя из сценария, нам нужно добавить соответствующее предложение в команду alter. В этой главе мы обсудим различные сценарии команды alter.

Изменить таблицу Добавить

Alter Table Add - это команда, используемая для добавления нового столбца в таблицу вместе с соответствующим типом данных. Эта команда фиксирует транзакцию в этом соединении.

Синтаксис

Ниже приведен общий синтаксис команды «Изменить таблицу».

ALTER TABLE [ IF EXISTS ] tableName ADD [ COLUMN ] 
{ [ IF NOT EXISTS ] columnDefinition [ { BEFORE | AFTER } columnName ] 
   | ( { columnDefinition } [,...] ) }

пример

В этом примере мы добавим новый столбец start_date к столу tutorials_tbl. Тип данных для start_date - Дата. Ниже приводится запрос на добавление нового столбца.

ALTER TABLE tutorials_tbl ADD start_date DATE;

Вышеупомянутый запрос дает следующий результат.

(6) rows effected

Изменить ограничение на добавление таблицы

Изменить ограничение добавления таблицы - это команда, используемая для добавления в таблицу различных ограничений, таких как первичный ключ, внешний ключ, не null и т. Д.

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

Синтаксис

Ниже приведен общий синтаксис команды добавления ограничения таблицы Изменить.

ALTER TABLE [ IF EXISTS ] tableName ADD constraint [ CHECK | NOCHECK ]

пример

В этом примере давайте добавим ограничение первичного ключа (tutorials_tbl_pk) к идентификатору столбца таблицы tutorials_tbl, используя следующий запрос.

ALTER TABLE tutorials_tbl ADD CONSTRAINT tutorials_tbl_pk PRIMARYKEY(id);

Вышеупомянутый запрос дает следующий результат.

(6) row (s) effected

Изменить ограничение переименования таблицы

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

Синтаксис

Ниже приведен общий синтаксис команды «Изменить ограничение переименования таблицы».

ALTER TABLE [ IF EXISTS ] tableName RENAME oldConstraintName TO newConstraintName

При использовании этого синтаксиса убедитесь, что старое имя ограничения должно существовать в соответствующем столбце.

пример

В этом примере мы изменим имя ограничения первичного ключа таблицы. tutorials_tbl из tutorials_tbl_pk к tutorials_tbl_pk_constraint. Ниже приводится соответствующий запрос.

ALTER TABLE tutorials_tbl RENAME CONSTRAINT 
tutorials_tbl_pk TO tutorials_tbl_pk_constraint;

Вышеупомянутый запрос дает следующий результат.

(1) row (s) effected

Изменить таблицу Изменить столбец

Эта команда используется для изменения структуры и свойств столбца конкретной таблицы. Изменение свойств означает изменение типа данных столбца, переименование столбца, изменение значения идентификатора или изменение избирательности.

Синтаксис

Ниже приведен общий синтаксис команды "Изменить столбец таблицы".

ALTER TABLE [ IF EXISTS ] tableName ALTER COLUMN columnName 
{ { dataType [ DEFAULT expression ] [ [ NOT ] NULL ] [ AUTO_INCREMENT | IDENTITY ] } 
| { RENAME TO name } 
| { RESTART WITH long } 
| { SELECTIVITY int } 
| { SET DEFAULT expression } 
| { SET NULL } 
| { SET NOT NULL } }

В приведенном выше синтаксисе -

  • RESTART - команда изменяет следующее значение столбца автоинкремента.

  • SELECTIVITY- команда устанавливает избирательность (1-100) для столбца. На основе значения селективности мы можем отобразить значение столбца.

  • SET DEFAULT - изменяет значение столбца по умолчанию.

  • SET NULL - устанавливает для столбца значение NULL.

  • SET NOT NULL - устанавливает для столбца значение NOT NULL.

пример

В этом примере мы переименуем столбец таблицы tutorials_tbl из Title к Tutorial_Title используя следующий запрос.

ALTER TABLE tutorials_tbl ALTER COLUMN title RENAME TO tutorial_title;

Вышеупомянутый запрос дает следующий результат.

(0) row(s) effected

Аналогичным образом мы можем выполнять разные сценарии с помощью команды ALTER.

DROP - это команда, взятая из общей грамматики SQL. Эта команда используется для удаления компонента базы данных и его структуры из памяти. В этой главе мы обсудим разные сценарии использования команды Drop.

Drop Table

Удалить таблицу - это команда, которая удаляет соответствующую таблицу и ее структуру.

Синтаксис

Ниже приведен общий синтаксис команды "Отбросить таблицу".

DROP TABLE [ IF EXISTS ] tableName [,...] [ RESTRICT | CASCADE ]

Команда завершится ошибкой, если мы используем RESTRICT и существует таблица с зависимыми представлениями. Все зависимые представления отбрасываются, когда мы используем ключевое слово CASCADE.

пример

В этом примере мы отбросим таблицу с именем test, используя следующий запрос.

DROP TABLE test;

Вышеупомянутый запрос дает следующий результат.

(6) row (s) effected

Удалить схему

Drop Schema - это команда, которая удаляет соответствующую схему с сервера базы данных. Это не будет работать с текущей схемой.

Синтаксис

DROP SCHEMA [ IF EXISTS ] schemaName

пример

В этом примере мы отбросим схему с именем test_schema используя следующий запрос.

DROP SCHEMA TEST_SCHEMA;

Вышеупомянутый запрос дает следующий результат.

(0) row(s) effected

Последовательность падения

Drop Sequence - это команда, используемая для удаления последовательности из структуры таблицы.

Синтаксис

Ниже приводится общий синтаксис команды Drop Sequence.

DROP SEQUENCE [ IF EXISTS ] sequenceName

Эта команда фиксирует открытую транзакцию в этом соединении.

пример

В этом примере мы отбросим последовательность с именем sequence_id. Ниже приводится команда.

DROP SEQUENCE sequence_id;

Приведенная выше команда дает следующий результат.

(0) row (s) effected

Drop View

Drop View - это команда, используемая для отбрасывания существующего представления. Все зависимые представления также удаляются, если используется предложение CASCADE.

Синтаксис

Ниже приводится общий синтаксис команды Drop View.

DROP VIEW [ IF EXISTS ] viewName [ RESTRICT | CASCADE ]

пример

В этом примере мы отбросим представление с именем sample_view используя следующий запрос.

DROP VIEW sample_view;

Вышеупомянутый запрос дает следующий результат.

(0) row (s) effected

TRUNCATE - это команда, используемая для удаления данных из таблицы. В отличие от DELETE FROM без предложения WHERE, эту команду нельзя откатить. Эта команда фиксирует открытую транзакцию в этом соединении.

Синтаксис

Ниже приведен общий синтаксис команды усечения.

TRUNCATE TABLE tableName

пример

В этом примере мы усечем таблицу с именем test используя следующий запрос.

TRUNCATE TABLE test;

Вышеупомянутый запрос дает следующий результат.

(6) row (s) effected

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

Синтаксис

У команды COMMIT есть два разных синтаксиса.

Ниже приводится общий синтаксис команды фиксации для фиксации текущей транзакции.

COMMIT [ WORK ]

Ниже приведен общий синтаксис команды фиксации для фиксации конкретной транзакции.

COMMIT TRANSACTION transactionName

Пример 1

В этом примере давайте зафиксируем текущую транзакцию, используя следующую команду.

COMMIT

Приведенная выше команда дает следующий результат.

Committed successfully

Пример 2

В этом примере мы зафиксируем транзакцию с именем tx_test используя следующую команду.

COMMIT TRANSACTION tx_test;

Приведенная выше команда дает следующий результат.

Committed successfully

Grant - это команда, исходящая из грамматики SQL, которая используется для предоставления прав таблице, пользователю или роли. Для выполнения этой команды требуются права администратора. Эта команда фиксирует открытую транзакцию в этом соединении.

В этой главе мы обсудим различные сценарии команды Grant.

Предоставить право

Предоставить право - это команда для предоставления прав администратора для таблицы, пользователя или роли.

Синтаксис

Ниже приведен общий синтаксис команды Grant.

GRANT { SELECT | INSERT | UPDATE | DELETE | ALL } [,...] ON 
{ { SCHEMA schemaName } | { tableName [,...] } } 
TO { PUBLIC | userName | roleName }

пример

В этом примере мы предоставим тестовой таблице доступ только для чтения с помощью следующей команды.

GRANT SELECT ON TEST TO READONLY

Приведенная выше команда дает следующий результат.

Grant successfully

Предоставить изменение любой схемы

Grant Alter Any Schema - это команда для предоставления прав на изменение схемы соответствующему пользователю.

Синтаксис

Ниже приводится общий синтаксис команды Grant Alter Any Schema.

GRANT ALTER ANY SCHEMA TO userName

пример

В этом примере мы предоставим права на изменение схемы пользователю с именем test_user. Убедитесь, что test_user существует. Ниже приводится запрос на предоставление прав на изменение.

GRANT ALTER ANY SCHEMA TO test_user;

Вышеупомянутый запрос дает следующий результат.

Granted successfully to test_user

SAVEPOINT - это команда, используемая для временного сохранения транзакции. Лучше поддерживать точки сохранения в транзакции, поскольку при необходимости полезно откатить транзакцию до соответствующей точки сохранения.

Синтаксис

Ниже приводится общий синтаксис команды точки сохранения.

SAVEPOINT savepointName

пример

В этом примере мы создадим точку сохранения с именем Half_Done, используя следующую команду.

SAVEPOINT Half_Done;

Приведенная выше команда дает следующий результат.

Savepoint created

ROLLBACK - это команда грамматики SQL, используемая для отката транзакции до точки сохранения или предыдущей транзакции. Используя эту команду, мы можем либо вернуться к определенной точке сохранения, либо вернуться к предыдущей выполненной транзакции.

Синтаксис

У команды ROLLABCK есть два разных синтаксиса.

Ниже приведен общий синтаксис команды отката.

ROLLBACK [ TO SAVEPOINT savepointName ]

Ниже приводится общий синтаксис команды Откат для конкретной транзакции.

ROLLBACK TRANSACTION transactionName

Пример 1

В этом примере мы откатим текущую транзакцию до точки сохранения с именем sp1_test используя следующую команду.

ROLLBACK sp1_test;

Приведенная выше команда дает следующий результат.

Rollback successfully

Пример 2

В следующем примере мы выполним откат полной транзакции с именем tx_test используя данную команду.

ROLLBACK TRANSACTION tx_test;

Приведенная выше команда дает следующий результат.

Rollback successfully

H2 - это база данных JAVA. Мы можем взаимодействовать с этой базой данных с помощью JDBC. В этой главе мы увидим, как создать соединение JDBC с базой данных H2 и операции CRUD с базой данных H2.

Как правило, создание соединения JDBC состоит из пяти шагов.

Step 1 - Регистрация драйвера базы данных JDBC.

Class.forName ("org.h2.Driver");

Step 2 - Открытие связи.

Connection conn = DriverManager.getConnection ("jdbc:h2:~/test", "sa","");

Step 3 - Создание заявления.

Statement st = conn.createStatement();

Step 4 - Выполнение оператора и получение Resultset.

Stmt.executeUpdate("sql statement");

Step 5 - Закрытие соединения.

conn.close();

Прежде чем перейти к созданию полной программы, нам нужно добавить h2-1.4.192.jar fileв CLASSPATH. Мы можем получить этоjar из папки C:\Program Files (x86)\H2\bin.

Создать таблицу

В этом примере мы напишем программу для создания таблицы. Рассмотрим таблицу с именемRegistration со следующими полями.

S.No Название столбца Тип данных НЕНУЛЕВОЙ Основной ключ
1 Я БЫ номер да да
2 Первый Варчар (255) Нет Нет
3 Последний Варчар (255) Нет Нет
4 Возраст номер Нет Нет

Ниже приведен пример программы с именем H2jdbcCreateDemo.

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement;  

public class H2jdbcCreateDemo { 
   // JDBC driver name and database URL 
   static final String JDBC_DRIVER = "org.h2.Driver";   
   static final String DB_URL = "jdbc:h2:~/test";  
   
   //  Database credentials 
   static final String USER = "sa"; 
   static final String PASS = ""; 
  
   public static void main(String[] args) { 
      Connection conn = null; 
      Statement stmt = null; 
      try { 
         // STEP 1: Register JDBC driver 
         Class.forName(JDBC_DRIVER); 
             
         //STEP 2: Open a connection 
         System.out.println("Connecting to database..."); 
         conn = DriverManager.getConnection(DB_URL,USER,PASS);  
         
         //STEP 3: Execute a query 
         System.out.println("Creating table in given database..."); 
         stmt = conn.createStatement(); 
         String sql =  "CREATE TABLE   REGISTRATION " + 
            "(id INTEGER not NULL, " + 
            " first VARCHAR(255), " +  
            " last VARCHAR(255), " +  
            " age INTEGER, " +  
            " PRIMARY KEY ( id ))";  
         stmt.executeUpdate(sql);
         System.out.println("Created table in given database..."); 
         
         // STEP 4: Clean-up environment 
         stmt.close(); 
         conn.close(); 
      } catch(SQLException se) { 
         //Handle errors for JDBC 
         se.printStackTrace(); 
      } catch(Exception e) { 
         //Handle errors for Class.forName 
         e.printStackTrace(); 
      } finally { 
         //finally block used to close resources 
         try{ 
            if(stmt!=null) stmt.close(); 
         } catch(SQLException se2) { 
         } // nothing we can do 
         try { 
            if(conn!=null) conn.close(); 
         } catch(SQLException se){ 
            se.printStackTrace(); 
         } //end finally try 
      } //end try 
      System.out.println("Goodbye!");
   } 
}

Сохраните указанную выше программу в H2jdbcCreateDemo.java. Скомпилируйте и выполните указанную выше программу, выполнив следующие команды в командной строке.

\>javac H2jdbcCreateDemo.java 
\>java H2jdbcCreateDemo

Приведенная выше команда дает следующий результат.

Connecting to database... 
Creating table in given database... 
Created table in given database... 
Goodbye!

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

Вставить записи

В этом примере мы напишем программу для вставки записей. Вставим следующие записи в таблицу Registration.

Я БЫ Первый Последний Возраст
100 Зара Али 18
101 Махназ Фатьма 25
102 Заид Хан 30
103 Сумит Mital 28

Ниже приведен пример программы с именем H2jdbcInsertDemo.

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement;  

public class H2jdbcInsertDemo { 
   // JDBC driver name and database URL 
   static final String JDBC_DRIVER = "org.h2.Driver";   
   static final String DB_URL = "jdbc:h2:~/test";  
   
   //  Database credentials 
   static final String USER = "sa"; 
   static final String PASS = ""; 
  
   public static void main(String[] args) { 
      Connection conn = null; 
      Statement stmt = null; 
      try{
         // STEP 1: Register JDBC driver 
         Class.forName(JDBC_DRIVER);  
         
         // STEP 2: Open a connection 
         System.out.println("Connecting to a selected database..."); 
         conn = DriverManager.getConnection(DB_URL,USER,PASS); 
         System.out.println("Connected database successfully..."); 
         
         // STEP 3: Execute a query 
         stmt = conn.createStatement();  
         String sql = "INSERT INTO Registration " + "VALUES (100, 'Zara', 'Ali', 18)"; 
         
         stmt.executeUpdate(sql); 
         sql = "INSERT INTO Registration " + "VALUES (101, 'Mahnaz', 'Fatma', 25)";  
         
         stmt.executeUpdate(sql); 
         sql = "INSERT INTO Registration " + "VALUES (102, 'Zaid', 'Khan', 30)"; 
         
         stmt.executeUpdate(sql); 
         sql = "INSERT INTO Registration " + "VALUES(103, 'Sumit', 'Mittal', 28)"; 
         
         stmt.executeUpdate(sql); 
         System.out.println("Inserted records into the table..."); 
         
         // STEP 4: Clean-up environment 
         stmt.close(); 
         conn.close(); 
      } catch(SQLException se) { 
         // Handle errors for JDBC 
         se.printStackTrace(); 
      } catch(Exception e) { 
         // Handle errors for Class.forName 
         e.printStackTrace(); 
      } finally { 
         // finally block used to close resources 
         try {
            if(stmt!=null) stmt.close();  
         } catch(SQLException se2) { 
         } // nothing we can do 
         try { 
            if(conn!=null) conn.close(); 
         } catch(SQLException se) { 
            se.printStackTrace(); 
         } // end finally try 
      } // end try 
      System.out.println("Goodbye!"); 
   } 
}

Сохраните указанную выше программу в H2jdbcInsertDemo.java. Скомпилируйте и выполните указанную выше программу, выполнив следующие команды в командной строке.

\>javac H2jdbcInsertDemo.java 
\>java H2jdbcInsertDemo

Приведенная выше команда дает следующий результат.

Connecting to a selected database... 
Connected database successfully... 
Inserted records into the table... 
Goodbye!

Читать запись

В этом примере мы напишем программу для чтения записей. Попробуем прочитать все записи из таблицыRegistration.

Ниже приведен пример программы с именем H2jdbcRecordDemo.

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement;  

public class H2jdbcReadDemo { 
   // JDBC driver name and database URL 
   static final String JDBC_DRIVER = "org.h2.Driver";   
   static final String DB_URL = "jdbc:h2:~/test";  
   
   //  Database credentials 
   static final String USER = "sa"; 
   static final String PASS = ""; 
   
   public static void main(String[] args) { 
      Connection conn = null; 
      Statement stmt = null; 
      try { 
         // STEP 1: Register JDBC driver 
         Class.forName(JDBC_DRIVER); 
         
         // STEP 2: Open a connection 
         System.out.println("Connecting to database..."); 
         conn = DriverManager.getConnection(DB_URL,USER,PASS);  
         
         // STEP 3: Execute a query 
         System.out.println("Connected database successfully..."); 
         stmt = conn.createStatement(); 
         String sql = "SELECT id, first, last, age FROM Registration"; 
         ResultSet rs = stmt.executeQuery(sql); 
         
         // STEP 4: Extract data from result set 
         while(rs.next()) { 
            // Retrieve by column name 
            int id  = rs.getInt("id"); 
            int age = rs.getInt("age"); 
            String first = rs.getString("first"); 
            String last = rs.getString("last");  
            
            // Display values 
            System.out.print("ID: " + id); 
            System.out.print(", Age: " + age); 
            System.out.print(", First: " + first); 
            System.out.println(", Last: " + last); 
         } 
         // STEP 5: Clean-up environment 
         rs.close(); 
      } catch(SQLException se) { 
         // Handle errors for JDBC 
         se.printStackTrace(); 
      } catch(Exception e) { 
         // Handle errors for Class.forName 
         e.printStackTrace(); 
      } finally { 
         // finally block used to close resources 
         try { 
            if(stmt!=null) stmt.close();  
         } catch(SQLException se2) { 
         } // nothing we can do 
         try { 
            if(conn!=null) conn.close(); 
         } catch(SQLException se) { 
            se.printStackTrace(); 
         } // end finally try 
      } // end try 
      System.out.println("Goodbye!"); 
   } 
}

Сохраните указанную выше программу в H2jdbcReadDemo.java. Скомпилируйте и выполните указанную выше программу, выполнив следующие команды в командной строке.

\>javac H2jdbcReadDemo.java 
\>java H2jdbcReadDemo

Приведенная выше команда дает следующий результат.

Connecting to a selected database... 
Connected database successfully... 
ID: 100, Age: 18, First: Zara, Last: Ali 
ID: 101, Age: 25, First: Mahnaz, Last: Fatma 
ID: 102, Age: 30, First: Zaid, Last: Khan 
ID: 103, Age: 28, First: Sumit, Last: Mittal 
Goodbye!

Обновить записи

В этом примере мы напишем программу для обновления записей. Попробуем прочитать все записи из таблицыRegistration.

Ниже приведен пример программы с именем H2jdbcUpdateDemo.

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement;  

public class H2jdbcUpdateDemo { 
   // JDBC driver name and database URL 
   static final String JDBC_DRIVER = "org.h2.Driver";   
   static final String DB_URL = "jdbc:h2:~/test";  
   
   // Database credentials 
   static final String USER = "sa"; 
   static final String PASS = ""; 
   
   public static void main(String[] args) { 
      Connection conn = null; 
      Statement stmt = null; 
      try { 
         // STEP 1: Register JDBC driver 
         Class.forName(JDBC_DRIVER); 
         
         // STEP 2: Open a connection 
         System.out.println("Connecting to a database..."); 
         conn = DriverManager.getConnection(DB_URL,USER,PASS);  
         
         // STEP 3: Execute a query 
         System.out.println("Connected database successfully..."); 
         stmt = conn.createStatement(); 
         String sql = "UPDATE Registration " + "SET age = 30 WHERE id in (100, 101)"; 
         stmt.executeUpdate(sql);  
         
         // Now you can extract all the records 
         // to see the updated records 
         sql = "SELECT id, first, last, age FROM Registration"; 
         ResultSet rs = stmt.executeQuery(sql);  
         
         while(rs.next()){ 
            // Retrieve by column name 
            int id  = rs.getInt("id"); 
            int age = rs.getInt("age"); 
            String first = rs.getString("first"); 
            String last = rs.getString("last");  
            
            // Display values 
            System.out.print("ID: " + id); 
            System.out.print(", Age: " + age); 
            System.out.print(", First: " + first); 
            System.out.println(", Last: " + last); 
         } 
         rs.close();    
      } catch(SQLException se) { 
         // Handle errors for JDBC 
         se.printStackTrace(); 
      } catch(Exception e) { 
         // Handle errors for Class.forName 
         e.printStackTrace(); 
      } finally { 
         // finally block used to close resources  
         try { 
            if(stmt!=null) stmt.close(); 
         } catch(SQLException se2) { 
         } // nothing we can do 
         try { 
            if(conn!=null) conn.close(); 
         } catch(SQLException se) { 
            se.printStackTrace(); 
         } // end finally try 
      } // end try 
      System.out.println("Goodbye!"); 
   } 
}

Сохраните указанную выше программу в H2jdbcUpdateDemo.java. Скомпилируйте и выполните указанную выше программу, выполнив следующие команды в командной строке.

\>javac H2jdbcUpdateDemo.java 
\>java H2jdbcUpdateDemo

Приведенная выше команда дает следующий результат.

Connecting to a selected database... 
Connected database successfully... 
ID: 100, Age: 30, First: Zara, Last: Ali 
ID: 101, Age: 30, First: Mahnaz, Last: Fatma 
ID: 102, Age: 30, First: Zaid, Last: Khan 
ID: 103, Age: 28, First: Sumit, Last: Mittal 
Goodbye!

Удалить записи

В этом примере мы напишем программу для удаления записей. Попробуем прочитать все записи из таблицыRegistration.

Ниже приведен пример программы с именем H2jdbcDeleteDemo.

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement;  

public class H2jdbcDeleteDemo { 
   // JDBC driver name and database URL 
   static final String JDBC_DRIVER = "org.h2.Driver";   
   static final String DB_URL = "jdbc:h2:~/test";  
   
   // Database credentials 
   static final String USER = "sa"; 
   static final String PASS = ""; 
  
   public static void main(String[] args) { 
      Connection conn = null; 
      Statement stmt = null; 
      try { 
         // STEP 1: Register JDBC driver 
         Class.forName(JDBC_DRIVER);  
         
         // STEP 2: Open a connection 
         System.out.println("Connecting to database..."); 
         conn = DriverManager.getConnection(DB_URL,USER,PASS);  
         
         // STEP 3: Execute a query
         System.out.println("Creating table in given database..."); 
         stmt = conn.createStatement();  
         String sql = "DELETE FROM Registration " + "WHERE id = 101"; 
         stmt.executeUpdate(sql);  
         
         // Now you can extract all the records 
         // to see the remaining records 
         sql = "SELECT id, first, last, age FROM Registration"; 
         ResultSet rs = stmt.executeQuery(sql);  
         
         while(rs.next()){ 
            // Retrieve by column name 
            int id  = rs.getInt("id"); 
            int age = rs.getInt("age"); 
            String first = rs.getString("first"); 
            String last = rs.getString("last");  
            
            // Display values 
            System.out.print("ID: " + id); 
            System.out.print(", Age: " + age); 
            System.out.print(", First: " + first); 
            System.out.println(", Last: " + last); 
         } 
         rs.close(); 
      } catch(SQLException se) { 
         // Handle errors for JDBC 
         se.printStackTrace();  
      } catch(Exception e) { 
         // Handle errors for Class.forName 
         e.printStackTrace(); 
      } finally { 
         // finally block used to close resources 
         try { 
            if(stmt!=null) stmt.close(); 
         } catch(SQLException se2) { 
         } // nothing we can do 
         try { 
            if(conn!=null) conn.close(); 
         } catch(SQLException se) { 
            se.printStackTrace(); 
         } // end finally try
      } // end try 
      System.out.println("Goodbye!"); 
   } 
}

Сохраните указанную выше программу в H2jdbcDeleteDemo.java. Скомпилируйте и выполните указанную выше программу, выполнив следующие команды в командной строке.

\>javac H2jdbcDeleteDemo.java 
\>java H2jdbcDeleteDemo

Приведенная выше команда дает следующий результат.

Connecting to a selected database... 
Connected database successfully... 
ID: 100, Age: 30, First: Zara, Last: Ali 
ID: 102, Age: 30, First: Zaid, Last: Khan 
ID: 103, Age: 28, First: Sumit, Last: Mittal 
Goodbye!