HSQLDB — Введение
HyperSQL Database (HSQLDB) — это современный менеджер реляционных баз данных, который соответствует стандарту SQL: 2011 и спецификациям JDBC 4. Он поддерживает все основные функции и RDBMS. HSQLDB используется для разработки, тестирования и развертывания приложений баз данных.
Главная и уникальная особенность HSQLDB — Стандартное соответствие. Он может предоставлять доступ к базе данных в процессе приложения пользователя, на сервере приложений или в качестве отдельного процесса сервера.
Особенности HSQLDB
-
HSQLDB использует структуру в памяти для быстрой работы с сервером БД. Он использует постоянство диска в соответствии с гибкостью пользователя, с надежным восстановлением после сбоя.
-
HSQLDB также подходит для бизнес-аналитики, ETL и других приложений, которые обрабатывают большие наборы данных.
-
HSQLDB имеет широкий спектр вариантов развертывания на предприятии, таких как транзакции XA, источники данных пула соединений и удаленная аутентификация.
-
HSQLDB написан на языке программирования Java и работает на виртуальной машине Java (JVM). Он поддерживает интерфейс JDBC для доступа к базе данных.
HSQLDB использует структуру в памяти для быстрой работы с сервером БД. Он использует постоянство диска в соответствии с гибкостью пользователя, с надежным восстановлением после сбоя.
HSQLDB также подходит для бизнес-аналитики, ETL и других приложений, которые обрабатывают большие наборы данных.
HSQLDB имеет широкий спектр вариантов развертывания на предприятии, таких как транзакции XA, источники данных пула соединений и удаленная аутентификация.
HSQLDB написан на языке программирования Java и работает на виртуальной машине Java (JVM). Он поддерживает интерфейс JDBC для доступа к базе данных.
Компоненты HSQLDB
В пакете HSQLDB есть три разных компонента.
-
HyperSQL RDBMS Engine (HSQLDB)
-
Драйвер JDBC для HyperSQL
-
Менеджер баз данных (инструмент для доступа к базе данных с графическим интерфейсом, с версиями Swing и AWT)
HyperSQL RDBMS Engine (HSQLDB)
Драйвер JDBC для HyperSQL
Менеджер баз данных (инструмент для доступа к базе данных с графическим интерфейсом, с версиями Swing и AWT)
HyperSQL RDBMS и JDBC Driver обеспечивают базовую функциональность. Менеджеры баз данных — это универсальные инструменты доступа к базам данных, которые можно использовать с любым ядром базы данных, имеющим драйвер JDBC.
Дополнительный jar, называемый sqltool.jar, содержит Sql Tool, который является инструментом доступа к базе данных из командной строки. Это команда общего назначения. Линейный инструмент доступа к базе данных, который можно использовать и с другими механизмами баз данных.
HSQlDB — Установка
HSQLDB — это система управления реляционными базами данных, реализованная на чистом Java. Вы можете легко встроить эту базу данных в свое приложение, используя JDBC. Или вы можете использовать операции отдельно.
Предпосылки
Следуйте обязательным установкам программного обеспечения для HSQLDB.
Проверьте установку Java
Поскольку HSQLDB — это система управления реляционными базами данных, реализованная на чистом Java, перед установкой HSQLDB необходимо установить программное обеспечение JDK (Java Development Kit). Если в вашей системе уже установлена 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.
Установка HSQLDB
Ниже приведены шаги для установки HSQLDB.
Шаг 1 — Загрузите пакет HSQLDB
Загрузите последнюю версию базы данных HSQLDB по следующей ссылке https://sourceforge.net/projects/hsqldb/files/. Как только вы нажмете на ссылку, вы получите следующий скриншот.
Нажмите HSQLDB, и загрузка начнется немедленно. Наконец, вы получите zip-файл с именем hsqldb-2.3.4.zip .
Шаг 2 — Извлеките zip-файл HSQLDB
Распакуйте zip-файл и поместите его в каталог C: \ . После извлечения вы получите структуру файла, как показано на следующем снимке экрана.
Шаг 3 — Создайте базу данных по умолчанию
Для HSQLDB нет базы данных по умолчанию, поэтому вам нужно создать базу данных для HSQLDB. Давайте создадим файл свойств с именем server.properties, который определяет новую базу данных с именем demodb . Взгляните на следующие свойства сервера базы данных.
server.database.0 = file:hsqldb/demodb server.dbname.0 = testdb
Поместите этот файл server.properties в домашний каталог HSQLDB, который находится в C: \ hsqldb- 2.3.4 \ hsqldb \ .
Теперь выполните следующую команду в командной строке.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server
После выполнения вышеуказанной команды вы получите статус сервера, как показано на следующем снимке экрана.
Позже вы найдете следующую структуру папок каталога hsqldb в домашнем каталоге HSQLDB, который находится в C: \ hsqldb-2.3.4 \ hsqldb . Это временный файл, файл lck, файл журнала, файл свойств и файл сценария базы данных demodb, созданной сервером базы данных HSQLDB.
Шаг 4 — Запустите сервер базы данных
Как только вы закончите создание базы данных, вы должны запустить базу данных с помощью следующей команды.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
После выполнения вышеуказанной команды вы получаете следующий статус.
Теперь вы можете открыть домашний экран базы данных, который называется runManagerSwing.bat, в папке C: \ hsqldb-2.3.4 \ hsqldb \ bin . Этот файл bat откроет файл GUI для базы данных HSQLDB. Перед этим он запросит настройки базы данных через диалоговое окно. Посмотрите на следующий скриншот. В этом диалоговом окне введите имя параметра, URL-адрес, как показано выше, и нажмите кнопку «ОК».
Вы получите экран графического интерфейса базы данных HSQLDB, как показано на следующем снимке экрана.
HSQlDB — Подключение
В главе об установке мы обсуждали, как подключить базу данных вручную. В этой главе мы обсудим, как подключить базу данных программно (используя Java-программирование).
Посмотрите на следующую программу, которая запустит сервер и создаст соединение между приложением Java и базой данных.
пример
import java.sql.Connection; import java.sql.DriverManager; public class ConnectDatabase { public static void main(String[] args) { Connection con = null; try { //Registering the HSQLDB JDBC driver Class.forName("org.hsqldb.jdbc.JDBCDriver"); //Creating the connection with HSQLDB con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); if (con!= null){ System.out.println("Connection created successfully"); }else{ System.out.println("Problem with creating connection"); } } catch (Exception e) { e.printStackTrace(System.out); } } }
Сохраните этот код в файле ConnectDatabase.java . Вам нужно будет запустить базу данных с помощью следующей команды.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Вы можете использовать следующую команду для компиляции и выполнения кода.
\>javac ConnectDatabase.java \>java ConnectDatabase
После выполнения вышеуказанной команды вы получите следующий вывод:
Connection created successfully
HSQLDB — Типы данных
В этой главе описываются различные типы данных HSQLDB. Сервер HSQLDB предлагает шесть категорий типов данных.
Точные числовые типы данных
Тип данных | От | к |
---|---|---|
BIGINT | -9.223.372.036.854.775.808 | 9.223.372.036.854.775.807 |
ИНТ | -2147483648 | 2147483647 |
SMALLINT | -32768 | 32767 |
TINYINT | 0 | 255 |
немного | 0 | 1 |
десятичный | -10 ^ 38 +1 | 10 ^ 38 -1 |
числовой | -10 ^ 38 +1 | 10 ^ 38 -1 |
Деньги | -922,337,203,685,477.5808 | +922,337,203,685,477.5807 |
smallmoney | -214,748.3648 | +214,748.3647 |
Приблизительные числовые типы данных
Тип данных | От | к |
---|---|---|
поплавок | -1,79E + 308 | 1,79E + 308 |
реальный | -3.40E + 38 | 3.40E + 38 |
Типы данных даты и времени
Тип данных | От | к |
---|---|---|
Дата и время | 1 января 1753 г. | 31 декабря 9999 г. |
smalldatetime | 1 января 1900 г. | 6 июня 2079 г. |
Дата | Хранит дату как 30 июня 1991 | |
время | Хранит время суток, как 12:30 вечера |
Примечание. Здесь дата и время имеют точность в 3,33 миллисекунды, в то время как малое время и дата имеют точность в 1 минуту.
Типы данных Строки символов
Тип данных | Описание |
---|---|
голец | Максимальная длина 8000 символов (фиксированная длина символов, отличных от Unicode) |
VARCHAR | Максимум 8000 символов (переменная длина не в Юникоде) |
VARCHAR (макс) | Максимальная длина 231 символа, переменная длина не в Юникоде (только для SQL Server 2005) |
текст | Данные не-Unicode переменной длины с максимальной длиной 2 147 483 647 символов |
Unicode Символьные строки Типы данных
Тип данных | Описание |
---|---|
NCHAR | Максимальная длина 4000 символов (фиксированная длина Unicode) |
NVARCHAR | Максимальная длина 4000 символов (переменная длина Unicode) |
NVARCHAR (макс) | Максимальная длина 231 символов (только для SQL Server 2005), (Unicode переменной длины) |
NTEXT | Максимальная длина 1 073 741 823 символа (переменная длина Unicode) |
Двоичные типы данных
Тип данных | Описание |
---|---|
двоичный | Максимальная длина 8000 байт (двоичные данные фиксированной длины) |
VARBINARY | Максимальная длина 8000 байт (двоичные данные переменной длины) |
VARBINARY (макс) | Максимальная длина 231 байт (только SQL Server 2005), (двоичные данные переменной длины) |
образ | Максимальная длина 2 147 483 647 байт (двоичные данные переменной длины) |
Разные типы данных
Тип данных | Описание |
---|---|
sql_variant | Хранит значения различных типов данных, поддерживаемых SQL Server, кроме text, ntext и timestamp |
отметка времени | Хранит уникальный для всей базы данных номер, который обновляется каждый раз при обновлении строки |
уникальный идентификатор | Хранит глобальный уникальный идентификатор (GUID) |
XML | Хранит данные XML. Вы можете хранить экземпляры XML в столбце или переменной (только для SQL Server 2005) |
курсор | Ссылка на объект курсора |
Таблица | Сохраняет набор результатов для последующей обработки |
HSQLDB — Создать таблицу
Основными обязательными требованиями для создания таблицы являются имя таблицы, имена полей и типы данных для этих полей. При желании вы также можете указать ключевые ограничения для таблицы.
Синтаксис
Посмотрите на следующий синтаксис.
CREATE TABLE table_name (column_name column_type);
пример
Давайте создадим таблицу с именем tutorials_tbl с такими именами полей, как id, title, author и submission_date. Посмотрите на следующий запрос.
CREATE TABLE tutorials_tbl ( id INT NOT NULL, title VARCHAR(50) NOT NULL, author VARCHAR(20) NOT NULL, submission_date DATE, PRIMARY KEY (id) );
После выполнения вышеуказанного запроса вы получите следующий вывод:
(0) rows effected
HSQLDB — Программа JDBC
Ниже приведена программа JDBC, используемая для создания таблицы с именем tutorials_tbl в базе данных HSQLDB. Сохраните программу в файл CreateTable.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class CreateTable { public static void main(String[] args) { Connection con = null; Statement stmt = null; int result = 0; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt = con.createStatement(); result = stmt.executeUpdate("CREATE TABLE tutorials_tbl ( id INT NOT NULL, title VARCHAR(50) NOT NULL, author VARCHAR(20) NOT NULL, submission_date DATE, PRIMARY KEY (id)); "); } catch (Exception e) { e.printStackTrace(System.out); } System.out.println("Table created successfully"); } }
Вы можете запустить базу данных, используя следующую команду.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Скомпилируйте и выполните вышеуказанную программу, используя следующую команду.
\>javac CreateTable.java \>java CreateTable
После выполнения вышеуказанной команды вы получите следующий вывод:
Table created successfully
HSQLDB — Drop Table
Очень легко удалить существующую таблицу HSQLDB. Однако вы должны быть очень осторожны при удалении любой существующей таблицы, так как любые потерянные данные не будут восстановлены после удаления таблицы.
Синтаксис
Ниже приведен общий синтаксис SQL для удаления таблицы HSQLDB.
DROP TABLE table_name;
пример
Давайте рассмотрим пример удаления таблицы с именем employee с сервера HSQLDB. Ниже приведен запрос на удаление таблицы с именем employee.
DROP TABLE employee;
После выполнения вышеуказанного запроса вы получите следующий вывод:
(0) rows effected
HSQLDB — Программа JDBC
Ниже приведена программа JDBC, используемая для удаления сотрудника таблицы с сервера HSQLDB.
Сохраните следующий код в файле DropTable.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class DropTable { public static void main(String[] args) { Connection con = null; Statement stmt = null; int result = 0; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt = con.createStatement(); result = stmt.executeUpdate("DROP TABLE employee"); }catch (Exception e) { e.printStackTrace(System.out); } System.out.println("Table dropped successfully"); } }
Вы можете запустить базу данных, используя следующую команду.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Скомпилируйте и выполните вышеуказанную программу, используя следующую команду.
\>javac DropTable.java \>java DropTable
После выполнения вышеуказанной команды вы получите следующий вывод:
Table dropped successfully
HSQLDB — Вставить запрос
Вы можете выполнить оператор запроса вставки в HSQLDB с помощью команды INSERT INTO. Вы должны предоставить пользовательские данные, следуя порядку полей столбца из таблицы.
Синтаксис
Ниже приводится общий синтаксис для вставки запроса.
INSERT INTO table_name (field1, field2,...fieldN) VALUES (value1, value2,...valueN );
Чтобы вставить данные строкового типа в таблицу, вам придется использовать двойные или одинарные кавычки, чтобы ввести строковое значение в оператор запроса вставки.
пример
Давайте рассмотрим пример, который вставляет запись в таблицу с именем tutorials_tbl со значениями id = 100, title = Learn PHP, Author = John Poul, а датой представления является текущая дата.
Ниже приведен запрос для данного примера.
INSERT INTO tutorials_tbl VALUES (100,'Learn PHP', 'John Poul', NOW());
После выполнения вышеуказанного запроса вы получите следующий вывод:
1 row effected
HSQLDB — Программа JDBC
Вот программа JDBC для вставки записи в таблицу с заданными значениями, id = 100, title = Learn PHP, Author = John Poul, а датой представления является текущая дата. Посмотрите на данную программу. Сохраните код в файле InserQuery.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class InsertQuery { public static void main(String[] args) { Connection con = null; Statement stmt = null; int result = 0; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt = con.createStatement(); result = stmt.executeUpdate("INSERT INTO tutorials_tbl VALUES (100,'Learn PHP', 'John Poul', NOW())"); con.commit(); }catch (Exception e) { e.printStackTrace(System.out); } System.out.println(result+" rows effected"); System.out.println("Rows inserted successfully"); } }
Вы можете запустить базу данных, используя следующую команду.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Скомпилируйте и выполните вышеуказанную программу, используя следующую команду.
\>javac InsertQuery.java \>java InsertQuery
После выполнения вышеуказанной команды вы получите следующий вывод:
1 rows effected Rows inserted successfully
Попробуйте вставить следующие записи в таблицу tutorials_tbl с помощью команды INSERT INTO .
Я бы | заглавие | автор | Дата подачи |
---|---|---|---|
101 | Выучить C | Yaswanth | Сейчас() |
102 | Изучай MySQL | Абдул С | Сейчас() |
103 | Узнайте Excell | Бавья канна | Сейчас() |
104 | Выучить JDB | Аджит Кумар | Сейчас() |
105 | Выучить джунит | Сатья Мурти | Сейчас() |
HSQLDB — Выбрать запрос
Команда SELECT используется для извлечения данных записи из базы данных HSQLDB. Здесь вам нужно упомянуть список обязательных полей в операторе Select.
Синтаксис
Вот общий синтаксис для запроса выбора.
SELECT field1, field2,...fieldN table_name1, table_name2... [WHERE Clause] [OFFSET M ][LIMIT N]
-
Вы можете выбрать одно или несколько полей в одной команде SELECT.
-
Вы можете указать звездочку (*) вместо полей. В этом случае SELECT вернет все поля.
-
Вы можете указать любое условие, используя предложение WHERE.
-
Вы можете указать смещение, используя OFFSET, откуда SELECT начнет возвращать записи. По умолчанию смещение равно нулю.
-
Вы можете ограничить количество возвратов, используя атрибут LIMIT.
Вы можете выбрать одно или несколько полей в одной команде SELECT.
Вы можете указать звездочку (*) вместо полей. В этом случае SELECT вернет все поля.
Вы можете указать любое условие, используя предложение WHERE.
Вы можете указать смещение, используя OFFSET, откуда SELECT начнет возвращать записи. По умолчанию смещение равно нулю.
Вы можете ограничить количество возвратов, используя атрибут LIMIT.
пример
Вот пример, который выбирает поля id, title и author всех записей из таблицы tutorials_tbl . Мы можем достичь этого с помощью оператора SELECT. Ниже приведен запрос для примера.
SELECT id, title, author FROM tutorials_tbl
После выполнения вышеуказанного запроса вы получите следующий вывод.
+------+----------------+-----------------+ | id | title | author | +------+----------------+-----------------+ | 100 | Learn PHP | John Poul | | 101 | Learn C | Yaswanth | | 102 | Learn MySQL | Abdul S | | 103 | Learn Excell | Bavya kanna | | 104 | Learn JDB | Ajith kumar | | 105 | Learn Junit | Sathya Murthi | +------+----------------+-----------------+
HSQLDB — Программа JDBC
Вот программа JDBC, которая будет извлекать поля id, title и author всех записей из таблицы tutorials_tbl . Сохраните следующий код в файле SelectQuery.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class SelectQuery { public static void main(String[] args) { Connection con = null; Statement stmt = null; ResultSet result = null; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt = con.createStatement(); result = stmt.executeQuery( "SELECT id, title, author FROM tutorials_tbl"); while(result.next()){ System.out.println(result.getInt("id")+" | "+ result.getString("title")+" | "+ result.getString("author")); } } catch (Exception e) { e.printStackTrace(System.out); } } }
Вы можете запустить базу данных, используя следующую команду.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Скомпилируйте и выполните приведенный выше код с помощью следующей команды.
\>javac SelectQuery.java \>java SelectQuery
После выполнения вышеуказанной команды вы получите следующий вывод:
100 | Learn PHP | John Poul 101 | Learn C | Yaswanth 102 | Learn MySQL | Abdul S 103 | Learn Excell | Bavya Kanna 104 | Learn JDB | Ajith kumar 105 | Learn Junit | Sathya Murthi
HSQLDB — Где пункт
Обычно мы используем команду SELECT для извлечения данных из таблицы HSQLDB. Мы можем использовать условное предложение WHERE для фильтрации результирующих данных. Используя WHERE, мы можем указать критерии выбора для выбора необходимых записей из таблицы.
Синтаксис
Ниже приведен синтаксис предложения SELECT команды WHERE для извлечения данных из таблицы HSQLDB.
SELECT field1, field2,...fieldN table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
-
Вы можете использовать одну или несколько таблиц, разделенных запятой, чтобы включить различные условия, используя предложение WHERE, но предложение WHERE является необязательной частью команды SELECT.
-
Вы можете указать любое условие, используя предложение WHERE.
-
Вы можете указать более одного условия, используя операторы AND или OR.
-
Предложение WHERE также может использоваться вместе с командой SQL DELETE или UPDATE для указания условия.
Вы можете использовать одну или несколько таблиц, разделенных запятой, чтобы включить различные условия, используя предложение WHERE, но предложение WHERE является необязательной частью команды SELECT.
Вы можете указать любое условие, используя предложение WHERE.
Вы можете указать более одного условия, используя операторы AND или OR.
Предложение WHERE также может использоваться вместе с командой SQL DELETE или UPDATE для указания условия.
Мы можем отфильтровать данные записи, используя условия. Мы используем различные операторы в условном предложении WHERE. Вот список операторов, которые можно использовать с предложением WHERE.
оператор | Описание | пример |
---|---|---|
знак равно | Проверяет, равны ли значения двух операндов или нет, если да, то условие становится истинным. | (A = B) не соответствует действительности |
знак равно | Проверяет, равны ли значения двух операндов или нет, если значения не равны, тогда условие становится истинным. | (A! = B) верно |
> | Проверяет, больше ли значение левого операнда, чем значение правого операнда, если да, то условие становится истинным. | (A> B) не соответствует действительности |
< | Проверяет, меньше ли значение левого операнда, чем значение правого операнда, если да, тогда условие становится истинным. | (A <B) верно |
> = | Проверяет, больше ли значение левого операнда или равно значению правого операнда, если да, то условие становится истинным. | (A> = B) не соответствует действительности |
<= | Проверяет, меньше ли значение левого операнда или равно значению правого операнда, если да, тогда условие становится истинным. | (A <= B) верно |
пример
Вот пример, который извлекает такие детали, как идентификатор, название и автор книги под названием «Learn C». Это возможно с помощью предложения WHERE в команде SELECT. Ниже приведен запрос для того же.
SELECT id, title, author FROM tutorials_tbl WHERE title = 'Learn C';
После выполнения вышеуказанного запроса вы получите следующий вывод.
+------+----------------+-----------------+ | id | title | author | +------+----------------+-----------------+ | 101 | Learn C | Yaswanth | +------+----------------+-----------------+
HSQLDB — Программа JDBC
Вот программа JDBC, которая извлекает данные записей из таблицы tutorials_tbl с заголовком Learn C. Сохраните следующий код в WhereClause.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class WhereClause { public static void main(String[] args) { Connection con = null; Statement stmt = null; ResultSet result = null; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt = con.createStatement(); result = stmt.executeQuery( "SELECT id, title, author FROM tutorials_tbl WHERE title = 'Learn C'"); while(result.next()){ System.out.println(result.getInt("id")+" | "+result.getString("title")+" | "+result.getString("author")); } } catch (Exception e) { e.printStackTrace(System.out); } } }
Вы можете запустить базу данных, используя следующую команду.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Скомпилируйте и выполните приведенный выше код с помощью следующей команды.
\>javac WhereClause.java \>java WhereClause
После выполнения вышеуказанной команды вы получите следующий вывод.
101 | Learn C | Yaswanth
HSQLDB — обновить запрос
Всякий раз, когда вы хотите изменить значения таблицы, вы можете использовать команду UPDATE. Это изменит любое значение поля из любой таблицы HSQLDB.
Синтаксис
Вот общий синтаксис для команды UPDATE.
UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]
- Вы можете обновить одно или несколько полей в целом.
- Вы можете указать любое условие, используя предложение WHERE.
- Вы можете обновлять значения в одной таблице за раз.
пример
Давайте рассмотрим пример, который обновляет заголовок учебника с «Изучить C» до «C и структуры данных» с идентификатором «101». Ниже приведен запрос на обновление.
UPDATE tutorials_tbl SET title = 'C and Data Structures' WHERE id = 101;
После выполнения вышеуказанного запроса вы получите следующий вывод.
(1) Rows effected
HSQLDB — Программа JDBC
Вот программа JDBC, которая обновит заголовок учебника с Learn C до C и структур данных, имеющих идентификатор 101 . Сохраните следующую программу в файле UpdateQuery.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class UpdateQuery { public static void main(String[] args) { Connection con = null; Statement stmt = null; int result = 0; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt = con.createStatement(); result = stmt.executeUpdate( "UPDATE tutorials_tbl SET title = 'C and Data Structures' WHERE id = 101"); } catch (Exception e) { e.printStackTrace(System.out); } System.out.println(result+" Rows effected"); } }
Вы можете запустить базу данных, используя следующую команду.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Скомпилируйте и выполните вышеуказанную программу, используя следующую команду.
\>javac UpdateQuery.java \>java UpdateQuery
После выполнения вышеуказанной команды вы получите следующий вывод:
1 Rows effected
HSQLDB — Удалить предложение
Всякий раз, когда вы хотите удалить запись из любой таблицы HSQLDB, вы можете использовать команду DELETE FROM.
Синтаксис
Вот общий синтаксис команды DELETE для удаления данных из таблицы HSQLDB.
DELETE FROM table_name [WHERE Clause]
-
Если предложение WHERE не указано, то все записи будут удалены из данной таблицы MySQL.
-
Вы можете указать любое условие, используя предложение WHERE.
-
Вы можете удалять записи в одной таблице одновременно.
Если предложение WHERE не указано, то все записи будут удалены из данной таблицы MySQL.
Вы можете указать любое условие, используя предложение WHERE.
Вы можете удалять записи в одной таблице одновременно.
пример
Давайте рассмотрим пример, который удаляет данные записи из таблицы с именем tutorials_tbl, имеющей идентификатор 105 . Ниже приведен запрос, который реализует данный пример.
DELETE FROM tutorials_tbl WHERE id = 105;
После выполнения вышеуказанного запроса вы получите следующий вывод:
(1) rows effected
HSQLDB — Программа JDBC
Вот программа JDBC, которая реализует данный пример. Сохраните следующую программу в DeleteQuery.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class DeleteQuery { public static void main(String[] args) { Connection con = null; Statement stmt = null; int result = 0; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt = con.createStatement(); result = stmt.executeUpdate( "DELETE FROM tutorials_tbl WHERE id=105"); } catch (Exception e) { e.printStackTrace(System.out); } System.out.println(result+" Rows effected"); } }
Вы можете запустить базу данных, используя следующую команду.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Скомпилируйте и выполните вышеуказанную программу, используя следующую команду.
\>javac DeleteQuery.java \>java DeleteQuery
После выполнения вышеуказанной команды вы получите следующий вывод:
1 Rows effected
HSQLDB — как статья
В структуре СУБД есть предложение WHERE. Вы можете использовать предложение WHERE со знаком равенства (=), где мы хотим сделать точное совпадение. Но может быть требование, когда мы хотим отфильтровать все результаты, где имя автора должно содержать «john». Это можно сделать с помощью предложения SQL LIKE вместе с предложением WHERE.
Если предложение SQL LIKE используется вместе с символами%, то оно будет работать как метасимвол (*) в UNIX при перечислении всех файлов или каталогов в командной строке.
Синтаксис
Ниже приведен общий синтаксис SQL предложения LIKE.
SELECT field1, field2,...fieldN table_name1, table_name2... WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
-
Вы можете указать любое условие, используя предложение WHERE.
-
Вы можете использовать предложение LIKE вместе с предложением WHERE.
-
Вы можете использовать предложение LIKE вместо знака равенства.
-
Когда предложение LIKE используется вместе со знаком%, оно будет работать как поиск метасимволов.
-
Вы можете указать более одного условия, используя операторы AND или OR.
-
Предложение WHERE … LIKE может использоваться вместе с командой SQL DELETE или UPDATE для указания условия.
Вы можете указать любое условие, используя предложение WHERE.
Вы можете использовать предложение LIKE вместе с предложением WHERE.
Вы можете использовать предложение LIKE вместо знака равенства.
Когда предложение LIKE используется вместе со знаком%, оно будет работать как поиск метасимволов.
Вы можете указать более одного условия, используя операторы AND или OR.
Предложение WHERE … LIKE может использоваться вместе с командой SQL DELETE или UPDATE для указания условия.
пример
Давайте рассмотрим пример, который возвращает список данных учебных пособий, где имя автора начинается с Джона . Ниже приведен запрос HSQLDB для данного примера.
SELECT * from tutorials_tbl WHERE author LIKE 'John%';
После выполнения вышеуказанного запроса вы получите следующий вывод.
+-----+----------------+-----------+-----------------+ | id | title | author | submission_date | +-----+----------------+-----------+-----------------+ | 100 | Learn PHP | John Poul | 2016-06-20 | +-----+----------------+-----------+-----------------+
HSQLDB — Программа JDBC
Ниже приводится программа JDBC, которая извлекает список данных учебных пособий, где имя автора начинается с Джона . Сохраните код в LikeClause.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class LikeClause { public static void main(String[] args) { Connection con = null; Statement stmt = null; ResultSet result = null; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt = con.createStatement(); result = stmt.executeQuery( "SELECT * from tutorials_tbl WHERE author LIKE 'John%';"); while(result.next()){ System.out.println(result.getInt("id")+" | "+result.getString("title")+" | "+result.getString("author")+" | "+result.getDate("submission_date")); } } catch (Exception e) { e.printStackTrace(System.out); } } }
Вы можете запустить базу данных, используя следующую команду.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Скомпилируйте и выполните приведенный выше код с помощью следующей команды.
\>javac LikeClause.java \>java LikeClause
После выполнения следующей команды вы получите следующий вывод.
100 | Learn PHP | John Poul | 2016-06-20
HSQLDB — результаты сортировки
Команда SQL SELECT извлекает данные из таблицы HSQLDB всякий раз, когда существует требование, которое следует определенному порядку, при извлечении и отображении записей. В этом случае мы можем использовать предложение ORDER BY .
Синтаксис
Вот синтаксис команды SELECT вместе с предложением ORDER BY для сортировки данных из HSQLDB.
SELECT field1, field2,...fieldN table_name1, table_name2... ORDER BY field1, [field2...] [ASC [DESC]]
-
Вы можете отсортировать возвращаемый результат по любому полю при условии, что это поле перечислено.
-
Вы можете отсортировать результат по нескольким полям.
-
Вы можете использовать ключевое слово ASC или DESC, чтобы получить результат в порядке возрастания или убывания. По умолчанию это в порядке возрастания.
-
Вы можете использовать предложение WHERE … LIKE обычным способом, чтобы поставить условие.
Вы можете отсортировать возвращаемый результат по любому полю при условии, что это поле перечислено.
Вы можете отсортировать результат по нескольким полям.
Вы можете использовать ключевое слово ASC или DESC, чтобы получить результат в порядке возрастания или убывания. По умолчанию это в порядке возрастания.
Вы можете использовать предложение WHERE … LIKE обычным способом, чтобы поставить условие.
пример
Давайте рассмотрим пример, который выбирает и сортирует записи таблицы tutorials_tbl , упорядочивая имя автора в порядке возрастания. Ниже приведен запрос для того же.
SELECT id, title, author from tutorials_tbl ORDER BY author ASC;
После выполнения вышеуказанного запроса вы получите следующий вывод.
+------+----------------+-----------------+ | id | title | author | +------+----------------+-----------------+ | 102 | Learn MySQL | Abdul S | | 104 | Learn JDB | Ajith kumar | | 103 | Learn Excell | Bavya kanna | | 100 | Learn PHP | John Poul | | 105 | Learn Junit | Sathya Murthi | | 101 | Learn C | Yaswanth | +------+----------------+-----------------+
HSQLDB — Программа JDBC
Вот программа JDBC, которая выбирает и сортирует записи таблицы tutorials_tbl , упорядочивая имя автора в порядке возрастания. Сохраните следующую программу в OrderBy.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class OrderBy { public static void main(String[] args) { Connection con = null; Statement stmt = null; ResultSet result = null; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt = con.createStatement(); result = stmt.executeQuery( "SELECT id, title, author from tutorials_tbl ORDER BY author ASC"); while(result.next()){ System.out.println(result.getInt("id")+" | "+result.getString("title")+" | "+result.getString("author")); } } catch (Exception e) { e.printStackTrace(System.out); } } }
Вы можете запустить базу данных, используя следующую команду.
\>cd C:\hsqldb-2.3.4\hsqldb hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:hsqldb/demodb --dbname.0 testdb
Скомпилируйте и выполните вышеуказанную программу, используя следующую команду.
\>javac OrderBy.java \>java OrderBy
После выполнения вышеуказанной команды вы получите следующий вывод.
102 | Learn MySQL | Abdul S 104 | Learn JDB | Ajith kumar 103 | Learn Excell | Bavya Kanna 100 | Learn PHP | John Poul 105 | Learn Junit | Sathya Murthi 101 | C and Data Structures | Yaswanth
HSQLDB — Joins
Всякий раз, когда требуется извлечь данные из нескольких таблиц, используя один запрос, вы можете использовать JOINS из RDBMS. Вы можете использовать несколько таблиц в одном запросе SQL. Акт объединения в HSQLDB относится к объединению двух или более таблиц в одну таблицу.
Рассмотрим следующие таблицы клиентов и заказов.
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 | +----+----------+-----+-----------+----------+ Orders: +-----+---------------------+-------------+--------+ |OID | DATE | CUSTOMER_ID | AMOUNT | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 3000 | | 100 | 2009-10-08 00:00:00 | 3 | 1500 | | 101 | 2009-11-20 00:00:00 | 2 | 1560 | | 103 | 2008-05-20 00:00:00 | 4 | 2060 | +-----+---------------------+-------------+--------+
Теперь давайте попробуем получить данные о клиентах и сумму заказа, которую разместил соответствующий клиент. Это означает, что мы извлекаем данные записей из таблицы клиентов и заказов. Мы можем достичь этого, используя концепцию JOINS в HSQLDB. Ниже приведен запрос JOIN для того же.
SELECT ID, NAME, AGE, AMOUNT FROM CUSTOMERS, ORDERS WHERE CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
После выполнения вышеуказанного запроса вы получите следующий вывод.
+----+----------+-----+--------+ | ID | NAME | AGE | AMOUNT | +----+----------+-----+--------+ | 3 | kaushik | 23 | 3000 | | 3 | kaushik | 23 | 1500 | | 2 | Khilan | 25 | 1560 | | 4 | Chaitali | 25 | 2060 | +----+----------+-----+--------+
JOIN Типы
В HSQLDB доступны разные типы соединений.
-
INNER JOIN — возвращает строки, если в обеих таблицах есть совпадения.
-
LEFT JOIN — возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений.
-
RIGHT JOIN — возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений.
-
FULL JOIN — возвращает строки, если в одной из таблиц есть совпадение.
-
SELF JOIN — используется для присоединения таблицы к себе, как если бы эта таблица была двумя таблицами, временно переименовывая хотя бы одну таблицу в операторе SQL.
INNER JOIN — возвращает строки, если в обеих таблицах есть совпадения.
LEFT JOIN — возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений.
RIGHT JOIN — возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений.
FULL JOIN — возвращает строки, если в одной из таблиц есть совпадение.
SELF JOIN — используется для присоединения таблицы к себе, как если бы эта таблица была двумя таблицами, временно переименовывая хотя бы одну таблицу в операторе SQL.
Внутреннее соединение
Наиболее часто используемым и важным соединением является ВНУТРЕННЕЕ СОЕДИНЕНИЕ. Это также упоминается как EQUIJOIN.
INNER JOIN создает новую таблицу результатов, комбинируя значения столбцов двух таблиц (table1 и table2) на основе предиката соединения. Запрос сравнивает каждую строку таблицы table1 с каждой строкой таблицы table2, чтобы найти все пары строк, которые удовлетворяют предикату соединения. Когда предикат соединения удовлетворяется, значения столбцов для каждой соответствующей пары строк A и B объединяются в результирующую строку.
Синтаксис
Основной синтаксис INNER JOIN заключается в следующем.
SELECT table1.column1, table2.column2... FROM table1 INNER JOIN table2 ON table1.common_field = table2.common_field;
пример
Рассмотрим следующие две таблицы, одна из которых называется таблицей CUSTOMERS, а другая — таблицей ORDERS следующим образом:
+----+----------+-----+-----------+----------+ | 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 | +----+----------+-----+-----------+----------+
+-----+---------------------+-------------+--------+ | OID | DATE | CUSTOMER_ID | AMOUNT | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 3000 | | 100 | 2009-10-08 00:00:00 | 3 | 1500 | | 101 | 2009-11-20 00:00:00 | 2 | 1560 | | 103 | 2008-05-20 00:00:00 | 4 | 2060 | +-----+---------------------+-------------+--------+
Теперь давайте объединим эти две таблицы, используя запрос INNER JOIN, следующим образом:
SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
После выполнения вышеуказанного запроса вы получите следующий вывод.
+----+----------+--------+---------------------+ | ID | NAME | AMOUNT | DATE | +----+----------+--------+---------------------+ | 3 | kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | kaushik | 1500 | 2009-10-08 00:00:00 | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | +----+----------+--------+---------------------+
Оставить Присоединиться
HSQLDB LEFT JOIN возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений. Это означает, что если предложение ON соответствует 0 (нулю) записей в правой таблице, соединение все равно будет возвращать строку в результате, но с NULL в каждом столбце правой таблицы.
Это означает, что левое соединение возвращает все значения из левой таблицы, а также совпадающие значения из правой таблицы или NULL в случае отсутствия соответствующего предиката соединения.
Синтаксис
Основной синтаксис LEFT JOIN выглядит следующим образом:
SELECT table1.column1, table2.column2... FROM table1 LEFT JOIN table2 ON table1.common_field = table2.common_field;
Здесь данное условие может быть любым выражением, основанным на вашем требовании.
пример
Рассмотрим следующие две таблицы, одна из которых называется таблицей CUSTOMERS, а другая — таблицей ORDERS следующим образом:
+----+----------+-----+-----------+----------+ | 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 | +----+----------+-----+-----------+----------+
+-----+---------------------+-------------+--------+ | OID | DATE | CUSTOMER_ID | AMOUNT | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 3000 | | 100 | 2009-10-08 00:00:00 | 3 | 1500 | | 101 | 2009-11-20 00:00:00 | 2 | 1560 | | 103 | 2008-05-20 00:00:00 | 4 | 2060 | +-----+---------------------+-------------+--------+
Теперь давайте объединим эти две таблицы с помощью запроса LEFT JOIN следующим образом:
SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS LEFT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
После выполнения вышеуказанного запроса вы получите следующий вывод:
+----+----------+--------+---------------------+ | ID | NAME | AMOUNT | DATE | +----+----------+--------+---------------------+ | 1 | Ramesh | NULL | NULL | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 3 | kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | kaushik | 1500 | 2009-10-08 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | | 5 | Hardik | NULL | NULL | | 6 | Komal | NULL | NULL | | 7 | Muffy | NULL | NULL | +----+----------+--------+---------------------+
Право Присоединиться
HSQLDB RIGHT JOIN возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений. Это означает, что если предложение ON соответствует 0 (нулю) записей в левой таблице, соединение все равно будет возвращать строку в результате, но с NULL в каждом столбце левой таблицы.
Это означает, что правое соединение возвращает все значения из правой таблицы, а также совпадающие значения из левой таблицы или NULL в случае отсутствия соответствующего предиката соединения.
Синтаксис
Основной синтаксис RIGHT JOIN следующий:
SELECT table1.column1, table2.column2... FROM table1 RIGHT JOIN table2 ON table1.common_field = table2.common_field;
пример
Рассмотрим следующие две таблицы, одна из которых называется таблицей CUSTOMERS, а другая — таблицей ORDERS следующим образом:
+----+----------+-----+-----------+----------+ | 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 | +----+----------+-----+-----------+----------+
+-----+---------------------+-------------+--------+ | OID | DATE | CUSTOMER_ID | AMOUNT | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 3000 | | 100 | 2009-10-08 00:00:00 | 3 | 1500 | | 101 | 2009-11-20 00:00:00 | 2 | 1560 | | 103 | 2008-05-20 00:00:00 | 4 | 2060 | +-----+---------------------+-------------+--------+
Теперь давайте объединим эти две таблицы, используя запрос RIGHT JOIN следующим образом:
SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS RIGHT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
После выполнения вышеуказанного запроса вы получите следующий результат.
+------+----------+--------+---------------------+ | ID | NAME | AMOUNT | DATE | +------+----------+--------+---------------------+ | 3 | kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | kaushik | 1500 | 2009-10-08 00:00:00 | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | +------+----------+--------+---------------------+
Полное соединение
HSQLDB FULL JOIN объединяет результаты как левого, так и правого внешних объединений.
Объединенная таблица будет содержать все записи из обеих таблиц и заполнять пустые значения для пропущенных совпадений с обеих сторон.
Синтаксис
Основной синтаксис FULL JOIN выглядит следующим образом:
SELECT table1.column1, table2.column2... FROM table1 FULL JOIN table2 ON table1.common_field = table2.common_field;
Здесь данное условие может быть любым выражением, основанным на вашем требовании.
пример
Рассмотрим следующие две таблицы, одна из которых называется таблицей CUSTOMERS, а другая — таблицей ORDERS следующим образом:
+----+----------+-----+-----------+----------+ | 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 | +----+----------+-----+-----------+----------+
+-----+---------------------+-------------+--------+ | OID | DATE | CUSTOMER_ID | AMOUNT | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 3000 | | 100 | 2009-10-08 00:00:00 | 3 | 1500 | | 101 | 2009-11-20 00:00:00 | 2 | 1560 | | 103 | 2008-05-20 00:00:00 | 4 | 2060 | +-----+---------------------+-------------+--------+
Теперь давайте объединим эти две таблицы с помощью запроса FULL JOIN следующим образом:
SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS FULL JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
После выполнения вышеуказанного запроса вы получите следующий результат.
+------+----------+--------+---------------------+ | ID | NAME | AMOUNT | DATE | +------+----------+--------+---------------------+ | 1 | Ramesh | NULL | NULL | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 3 | kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | kaushik | 1500 | 2009-10-08 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | | 5 | Hardik | NULL | NULL | | 6 | Komal | NULL | NULL | | 7 | Muffy | NULL | NULL | | 3 | kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | kaushik | 1500 | 2009-10-08 00:00:00 | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | +------+----------+--------+---------------------+
Самостоятельное присоединение
SQL SELF JOIN используется для соединения таблицы с самим собой, как если бы эта таблица была двумя таблицами, временно переименовывая хотя бы одну таблицу в операторе SQL.
Синтаксис
Основной синтаксис SELF JOIN выглядит следующим образом:
SELECT a.column_name, b.column_name... FROM table1 a, table1 b WHERE a.common_field = b.common_field;
Здесь предложение WHERE может быть любым заданным выражением, основанным на вашем требовании.
пример
Рассмотрим следующие две таблицы, одна из которых называется таблицей CUSTOMERS, а другая — таблицей ORDERS следующим образом:
+----+----------+-----+-----------+----------+ | 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 | +----+----------+-----+-----------+----------+
Теперь давайте присоединимся к этой таблице с помощью запроса SELF JOIN следующим образом:
SELECT a.ID, b.NAME, a.SALARY FROM CUSTOMERS a, CUSTOMERS b WHERE a.SALARY > b.SALARY;
После выполнения вышеуказанного запроса вы получите следующий вывод:
+----+----------+---------+ | ID | NAME | SALARY | +----+----------+---------+ | 2 | Ramesh | 1500.00 | | 2 | kaushik | 1500.00 | | 1 | Chaitali | 2000.00 | | 2 | Chaitali | 1500.00 | | 3 | Chaitali | 2000.00 | | 6 | Chaitali | 4500.00 | | 1 | Hardik | 2000.00 | | 2 | Hardik | 1500.00 | | 3 | Hardik | 2000.00 | | 4 | Hardik | 6500.00 | | 6 | Hardik | 4500.00 | | 1 | Komal | 2000.00 | | 2 | Komal | 1500.00 | | 3 | Komal | 2000.00 | | 1 | Muffy | 2000.00 | | 2 | Muffy | 1500.00 | | 3 | Muffy | 2000.00 | | 4 | Muffy | 6500.00 | | 5 | Muffy | 8500.00 | | 6 | Muffy | 4500.00 | +----+----------+---------+
HsqlDB — нулевые значения
SQL NULL — это термин, используемый для обозначения пропущенного значения. Значение NULL в таблице — это значение в поле, которое кажется пустым. Всякий раз, когда мы пытаемся дать условие, которое сравнивает значение поля или столбца со значением NULL, оно не работает должным образом.
Мы можем обрабатывать значения NULL, используя три вещи.
-
IS NULL — оператор возвращает true, если значение столбца равно NULL.
-
IS NOT NULL — оператор возвращает true, если значение столбца NOT NULL.
-
<=> — Оператор сравнивает значения, которые (в отличие от оператора =) верны даже для двух значений NULL.
IS NULL — оператор возвращает true, если значение столбца равно NULL.
IS NOT NULL — оператор возвращает true, если значение столбца NOT NULL.
<=> — Оператор сравнивает значения, которые (в отличие от оператора =) верны даже для двух значений NULL.
Для поиска столбцов, которые имеют значение NULL или NOT NULL, используйте IS NULL или IS NOT NULL соответственно.
пример
Давайте рассмотрим пример, где есть таблица tcount_tbl, которая содержит два столбца, author и tutorial_count. Мы можем предоставить значения NULL, чтобы tutorial_count указывал, что автор не опубликовал ни одного учебника. Следовательно, значение tutorial_count для этого соответствующего автора равно NULL.
Выполните следующие запросы.
create table tcount_tbl(author varchar(40) NOT NULL, tutorial_count INT); INSERT INTO tcount_tbl values ('Abdul S', 20); INSERT INTO tcount_tbl values ('Ajith kumar', 5); INSERT INTO tcount_tbl values ('Jen', NULL); INSERT INTO tcount_tbl values ('Bavya kanna', 8); INSERT INTO tcount_tbl values ('mahran', NULL); INSERT INTO tcount_tbl values ('John Poul', 10); INSERT INTO tcount_tbl values ('Sathya Murthi', 6);
Используйте следующую команду, чтобы отобразить все записи из таблицы tcount_tbl .
select * from tcount_tbl;
После выполнения вышеуказанной команды вы получите следующий вывод.
+-----------------+----------------+ | author | tutorial_count | +-----------------+----------------+ | Abdul S | 20 | | Ajith kumar | 5 | | Jen | NULL | | Bavya kanna | 8 | | mahran | NULL | | John Poul | 10 | | Sathya Murthi | 6 | +-----------------+----------------+
Чтобы найти записи, в которых столбец tutorial_count равен NULL, выполните запрос.
SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;
После выполнения запроса вы получите следующий вывод.
+-----------------+----------------+ | author | tutorial_count | +-----------------+----------------+ | Jen | NULL | | mahran | NULL | +-----------------+----------------+
Чтобы найти записи, в которых столбец tutorial_count не равен NULL, выполните запрос.
SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;
После выполнения запроса вы получите следующий вывод.
+-----------------+----------------+ | author | tutorial_count | +-----------------+----------------+ | Abdul S | 20 | | Ajith kumar | 5 | | Bavya kanna | 8 | | John Poul | 10 | | Sathya Murthi | 6 | +-----------------+----------------+
HSQLDB — Программа JDBC
Вот программа JDBC, которая извлекает записи отдельно из таблицы tcount_tbl, где tutorial_ count равно NULL, а tutorial_count NOT NULL. Сохраните следующую программу в NullValues.java .
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class NullValues { public static void main(String[] args) { Connection con = null; Statement stmt_is_null = null; Statement stmt_is_not_null = null; ResultSet result = null; try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); con = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/testdb", "SA", ""); stmt_is_null = con.createStatement(); stmt_is_not_null = con.createStatement(); result = stmt_is_null.executeQuery( "SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;"); System.out.println("Records where the tutorial_count is NULL"); while(result.next()){ System.out.println(result.getString("author")+" | "+result.getInt("tutorial_count")); } result = stmt_is_not_null.executeQuery( "SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;"); System.out.println("Records where the tutorial_count is NOT NULL"); while(result.next()){ System.out.println(result.getString("author")+" | "+result.getInt("tutorial_count")); } } catch (Exception e) { e.printStackTrace(System.out); } } }
Скомпилируйте и выполните вышеуказанную программу, используя следующую команду.
\>javac NullValues.java \>Java NullValues
После выполнения вышеуказанной команды вы получите следующий вывод.
Records where the tutorial_count is NULL Jen | 0 mahran | 0 Records where the tutorial_count is NOT NULL Abdul S | 20 Ajith kumar | 5 Bavya kanna | 8 John Poul | 10 Sathya Murthi | 6
HSQLDB — Регулярные выражения
HSQLDB поддерживает некоторые специальные символы для операции сопоставления с образцом на основе регулярных выражений и оператора REGEXP.
Ниже приведена таблица паттернов, которую можно использовать вместе с оператором REGEXP.
Шаблон | Что соответствует шаблону |
---|---|
^ | Начало строки |
$ | Конец строки |
, | Любой отдельный персонаж |
[…] | Любой символ, указанный в квадратных скобках |
[^ …] | Любой символ, не указанный в квадратных скобках |
p1 | p2 | p3 | Чередование; соответствует любому из паттернов p1, p2 или p3 |
* | Ноль или более экземпляров предыдущего элемента |
+ | Один или несколько экземпляров предыдущего элемента |
{П} | n экземпляров предыдущего элемента |
{Т, п} | от m до n экземпляров предыдущего элемента |
пример
Давайте попробуем различные примеры запросов, чтобы удовлетворить наши требования. Посмотрите на следующие данные запросы.
Попробуйте этот запрос, чтобы найти всех авторов, чье имя начинается с ‘^ A’.
SELECT author FROM tcount_tbl WHERE REGEXP_MATCHES(author,'^A.*');
После выполнения вышеуказанного запроса вы получите следующий вывод.
+-----------------+ | author | +-----------------+ | Abdul S | | Ajith kumar | +-----------------+
Попробуйте этот запрос, чтобы найти всех авторов, чье имя заканчивается на ‘ul $’.
SELECT author FROM tcount_tbl WHERE REGEXP_MATCHES(author,'.*ul$');
После выполнения вышеуказанного запроса вы получите следующий вывод.
+-----------------+ | author | +-----------------+ | John Poul | +-----------------+
Попробуйте этот запрос, чтобы найти всех авторов, чье имя содержит «th».
SELECT author FROM tcount_tbl WHERE REGEXP_MATCHES(author,'.*th.*');
После выполнения вышеуказанного запроса вы получите следующий вывод.
+-----------------+ | author | +-----------------+ | Ajith kumar | | Abdul S | +-----------------+
Попробуйте этот запрос, чтобы найти всех авторов, чье имя начинается с гласной (a, e, i, o, u).
SELECT author FROM tcount_tbl WHERE REGEXP_MATCHES(author,'^[AEIOU].*');
После выполнения вышеуказанного запроса вы получите следующий вывод.
+-----------------+ | author | +-----------------+ | Abdul S | | Ajith kumar | +-----------------+
HSQLDB — Сделки
Транзакция — это последовательная группа операций манипулирования базой данных, которая выполняется и рассматривается как одна единица работы. Другими словами, когда все операции успешно выполнены, только тогда вся транзакция будет завершена. Если какая-либо операция в транзакции завершится неудачей, вся транзакция завершится неудачей.
Свойства сделок
По сути, транзакция поддерживает 4 стандартных свойства. Они могут упоминаться как свойства ACID.
Атомарность — все операции в транзакциях выполняются успешно, в противном случае транзакция прерывается в точке сбоя, а предыдущие операции откатываются до своей предыдущей позиции.
Согласованность — база данных корректно меняет состояния при успешной транзакции.
Изоляция — это позволяет транзакции работать независимо друг от друга и быть прозрачными друг для друга.
Долговечность — результат или результат совершенной транзакции сохраняется в случае сбоя системы.
Фиксация, откат и сохранение
Эти ключевые слова в основном используются для транзакций HSQLDB.
Фиксация — всегда успешная транзакция должна быть завершена путем выполнения команды COMMIT.
Откат — Если в транзакции происходит сбой, то должна быть выполнена команда ROLLBACK, чтобы вернуть каждую таблицу, на которую есть ссылка в транзакции, в ее предыдущее состояние.
Точка сохранения — создает точку в группе транзакций для отката.
пример
В следующем примере объясняется концепция транзакций, а также фиксация, откат и точка сохранения. Давайте рассмотрим таблицу «Клиенты» с колонками id, name, age, address и salary.
Я бы | название | Возраст | Адрес | Оплата труда |
---|---|---|---|---|
1 | Рамеш | 32 | Ахмедабад | 2000,00 |
2 | Карун | 25 | Дели | 1500,00 |
3 | Кошик | 23 | Kota | 2000,00 |
4 | Chaitanya | 25 | Mumbai | 6500,00 |
5 | Хариш | 27 | Бхопал | 8500,00 |
6 | Камеш | 22 | член парламента | 1500,00 |
7 | Murali | 24 | Индор | 10000,00 |
Используйте следующие команды, чтобы создать таблицу клиентов в соответствии с приведенными выше данными.
CREATE TABLE Customer (id INT NOT NULL, name VARCHAR(100) NOT NULL, age INT NOT NULL, address VARCHAR(20), Salary INT, PRIMARY KEY (id)); Insert into Customer values (1, "Ramesh", 32, "Ahmedabad", 2000); Insert into Customer values (2, "Karun", 25, "Delhi", 1500); Insert into Customer values (3, "Kaushik", 23, "Kota", 2000); Insert into Customer values (4, "Chaitanya", 25, "Mumbai", 6500); Insert into Customer values (5, "Harish", 27, "Bhopal", 8500); Insert into Customer values (6, "Kamesh", 22, "MP", 1500); Insert into Customer values (7, "Murali", 24, "Indore", 10000);
Пример для COMMIT
Следующий запрос удаляет строки из таблицы, имеющие возраст = 25, и использует команду COMMIT для применения этих изменений в базе данных.
DELETE FROM CUSTOMERS WHERE AGE = 25; COMMIT;
После выполнения вышеуказанного запроса вы получите следующий вывод.
2 rows effected
После успешного выполнения вышеуказанной команды проверьте записи таблицы клиентов, выполнив приведенную ниже команду.
Select * from Customer;
После выполнения вышеуказанного запроса вы получите следующий вывод.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000 | | 3 | kaushik | 23 | Kota | 2000 | | 5 | Harish | 27 | Bhopal | 8500 | | 6 | Kamesh | 22 | MP | 4500 | | 7 | Murali | 24 | Indore | 10000 | +----+----------+-----+-----------+----------+
Пример для отката
Давайте рассмотрим ту же таблицу Customer в качестве входных данных.
Я бы | название | Возраст | Адрес | Оплата труда |
---|---|---|---|---|
1 | Рамеш | 32 | Ахмедабад | 2000,00 |
2 | Карун | 25 | Дели | 1500,00 |
3 | Кошик | 23 | Kota | 2000,00 |
4 | Chaitanya | 25 | Mumbai | 6500,00 |
5 | Хариш | 27 | Бхопал | 8500,00 |
6 | Камеш | 22 | член парламента | 1500,00 |
7 | Murali | 24 | Индор | 10000,00 |
Вот пример запроса, который объясняет функциональность отката путем удаления записей из таблицы, имеющих возраст = 25, а затем откат изменений в базе данных.
DELETE FROM CUSTOMERS WHERE AGE = 25; ROLLBACK;
После успешного выполнения вышеупомянутых двух запросов вы можете просмотреть данные записи в таблице Customer, используя следующую команду.
Select * from Customer;
После выполнения вышеуказанной команды вы получите следующий вывод.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000 | | 2 | Karun | 25 | Delhi | 1500 | | 3 | Kaushik | 23 | Kota | 2000 | | 4 | Chaitanya| 25 | Mumbai | 6500 | | 5 | Harish | 27 | Bhopal | 8500 | | 6 | Kamesh | 22 | MP | 4500 | | 7 | Murali | 24 | Indore | 10000 | +----+----------+-----+-----------+----------+
Запрос на удаление удаляет данные записей клиентов, чей возраст = 25 лет. Команда «Откат» откатывает эти изменения в таблице «Клиенты».
Пример для точки сохранения
Точка сохранения — это точка в транзакции, когда вы можете откатить транзакцию до определенной точки без отката всей транзакции.
Давайте рассмотрим ту же таблицу Customer в качестве входных данных.
Я бы | название | Возраст | Адрес | Оплата труда |
---|---|---|---|---|
1 | Рамеш | 32 | Ахмедабад | 2000,00 |
2 | Карун | 25 | Дели | 1500,00 |
3 | Кошик | 23 | Kota | 2000,00 |
4 | Chaitanya | 25 | Mumbai | 6500,00 |
5 | Хариш | 27 | Бхопал | 8500,00 |
6 | Камеш | 22 | член парламента | 1500,00 |
7 | Murali | 24 | Индор | 10000,00 |
Давайте рассмотрим в этом примере, вы планируете удалить три разных записи из таблицы «Клиенты». Вы хотите создать точку сохранения перед каждым удалением, чтобы в любой момент можно было вернуться к любой точке сохранения, чтобы вернуть соответствующие данные в исходное состояние.
Вот серия операций.
SAVEPOINT SP1; DELETE FROM CUSTOMERS WHERE ID = 1; SAVEPOINT SP2; DELETE FROM CUSTOMERS WHERE ID = 2; SAVEPOINT SP3; DELETE FROM CUSTOMERS WHERE ID = 3;
Теперь вы создали три точки сохранения и удалили три записи. В этой ситуации, если вы хотите откатить записи с идентификаторами 2 и 3, используйте следующую команду отката.
ROLLBACK TO SP2;
Обратите внимание, что с момента отката до SP2 произошло только первое удаление. Используйте следующий запрос, чтобы отобразить все записи клиентов.
Select * from Customer;
После выполнения вышеуказанного запроса вы получите следующий вывод.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 2 | Karun | 25 | Delhi | 1500 | | 3 | Kaushik | 23 | Kota | 2000 | | 4 | Chaitanya| 25 | Mumbai | 6500 | | 5 | Harish | 27 | Bhopal | 8500 | | 6 | Kamesh | 22 | MP | 4500 | | 7 | Murali | 24 | Indore | 10000 | +----+----------+-----+-----------+----------+
Отпустить точку сохранения
Мы можем освободить точку сохранения с помощью команды RELEASE. Ниже приводится общий синтаксис.
RELEASE SAVEPOINT SAVEPOINT_NAME;
HsqlDB — Alter Command
Всякий раз, когда необходимо изменить имя таблицы или поля, изменить порядок полей, изменить тип данных полей или любую структуру таблицы, вы можете добиться того же с помощью команды ALTER.
пример
Давайте рассмотрим пример, который объясняет команду ALTER с использованием различных сценариев.
Используйте следующий запрос для создания таблицы с именем testalter_tbl с идентификатором и именем поля.
//below given query is to create a table testalter_tbl table. create table testalter_tbl(id INT, name VARCHAR(10)); //below given query is to verify the table structure testalter_tbl. Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM = 'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';
После выполнения вышеуказанного запроса вы получите следующий вывод.
+------------+-------------+------------+-----------+-----------+------------+ |TABLE_SCHEM | TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE| +------------+-------------+------------+-----------+-----------+------------+ | PUBLIC |TESTALTER_TBL| ID | 4 | INTEGER | 4 | | PUBLIC |TESTALTER_TBL| NAME | 12 | VARCHAR | 10 | +------------+-------------+------------+-----------+-----------+------------+
Удаление или добавление столбца
Всякий раз, когда вы хотите удалить существующий столбец из таблицы HSQLDB, вы можете использовать предложение DROP вместе с командой ALTER.
Используйте следующий запрос, чтобы удалить столбец ( имя ) из таблицы testalter_tbl.
ALTER TABLE testalter_tbl DROP name;
После успешного выполнения вышеуказанного запроса вы можете узнать, было ли удалено поле имени из таблицы testalter_tbl, с помощью следующей команды.
Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM = 'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';
После выполнения вышеуказанной команды вы получите следующий вывод.
+------------+-------------+------------+-----------+-----------+------------+ |TABLE_SCHEM | TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE| +------------+-------------+------------+-----------+-----------+------------+ | PUBLIC |TESTALTER_TBL| ID | 4 | INTEGER | 4 | +------------+-------------+------------+-----------+-----------+------------+
Всякий раз, когда вы хотите добавить какой-либо столбец в таблицу HSQLDB, вы можете использовать предложение ADD вместе с командой ALTER.
Используйте следующий запрос, чтобы добавить столбец с именем NAME в таблицу testalter_tbl .
ALTER TABLE testalter_tbl ADD name VARCHAR(10);
После успешного выполнения вышеуказанного запроса вы можете узнать, добавлено ли поле имени в таблицу testalter_tbl, с помощью следующей команды.
Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM = 'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';
После выполнения вышеуказанного запроса вы получите следующий вывод.
+------------+-------------+------------+-----------+-----------+------------+ |TABLE_SCHEM | TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE| +------------+-------------+------------+-----------+-----------+------------+ | PUBLIC |TESTALTER_TBL| ID | 4 | INTEGER | 4 | | PUBLIC |TESTALTER_TBL| NAME | 12 | VARCHAR | 10 | +------------+-------------+------------+-----------+-----------+------------+
Изменение определения столбца или имени
Всякий раз, когда требуется изменить определение столбца, используйте предложение MODIFY или CHANGE вместе с командой ALTER .
Давайте рассмотрим пример, который объяснит, как использовать предложение CHANGE. Таблица testalter_tbl содержит два поля — id и name — с типами данных int и varchar соответственно. Теперь давайте попробуем изменить тип данных id с INT на BIGINT. Ниже приведен запрос на внесение изменений.
ALTER TABLE testalter_tbl CHANGE id id BIGINT;
После успешного выполнения вышеуказанного запроса структуру таблицы можно проверить с помощью следующей команды.
Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM = 'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';
После выполнения вышеуказанной команды вы получите следующий вывод.
+------------+-------------+------------+-----------+-----------+------------+ |TABLE_SCHEM | TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE| +------------+-------------+------------+-----------+-----------+------------+ | PUBLIC |TESTALTER_TBL| ID | 4 | BIGINT | 4 | | PUBLIC |TESTALTER_TBL| NAME | 12 | VARCHAR | 10 | +------------+-------------+------------+-----------+-----------+------------+
Теперь давайте попробуем увеличить размер столбца NAME с 10 до 20 в таблице testalter_tbl . Ниже приведен запрос для достижения этого с использованием предложения MODIFY вместе с командой ALTER.
ALTER TABLE testalter_tbl MODIFY name VARCHAR(20);
После успешного выполнения вышеуказанного запроса структуру таблицы можно проверить с помощью следующей команды.
Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM = 'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';
После выполнения вышеуказанной команды вы получите следующий вывод.
+------------+-------------+------------+-----------+-----------+------------+ |TABLE_SCHEM | TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE| +------------+-------------+------------+-----------+-----------+------------+ | PUBLIC |TESTALTER_TBL| ID | 4 | BIGINT | 4 | | PUBLIC |TESTALTER_TBL| NAME | 12 | VARCHAR | 20 | +------------+-------------+------------+-----------+-----------+------------+
HSQLDB — индексы
Индекс базы данных — это структура данных, которая повышает скорость операций в таблице. Индексы могут быть созданы с использованием одного или нескольких столбцов, что обеспечивает основу как для быстрого случайного поиска, так и для эффективного упорядочения доступа к записям.
While creating an index, it should be considered what are the columns which will be used to make SQL queries, and create one or more indexes on those columns.
Practically, indexes are also type of tables, which keep the primary key or the index field and a pointer to each record into the actual table.
The users cannot see the indexes. They are just used to speed up queries and will be used by the Database Search Engine to quickly locate records.
The INSERT and UPDATE statements take more time on tables having indexes, whereas SELECT statements run faster on those tables. The reason being while inserting or updating, the database needs to insert or update the index values as well.
Simple & Unique Index
You can create a unique index on a table. A unique index means that two rows cannot have the same index value. Following is the syntax to create an Index on a table.
CREATE UNIQUE INDEX index_name ON table_name (column1, column2,...);
You can use one or more columns to create an index. For example, create an index on tutorials_tbl using tutorial_author.
CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author)
You can create a simple index on a table. Just omit the UNIQUE keyword from the query to create a simple index. A simple index allows duplicate values in a table.
If you want to index the values in a column in a descending order, you can add the reserved word DESC after the column name.
CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author DESC)
ALTER Command to Add & Drop INDEX
There are four types of statements for adding indexes to a table −
-
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) − This statement adds a PRIMARY KEY, which means that indexed values must be unique and cannot be NULL.
-
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) − This statement creates an index for which the values must be unique (with the exception of NULL values, which may appear multiple times).
-
ALTER TABLE tbl_name ADD INDEX index_name (column_list) − This adds an ordinary index in which any value may appear more than once.
-
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) − This creates a special FULLTEXT index that is used for text-searching purposes.
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) − This statement adds a PRIMARY KEY, which means that indexed values must be unique and cannot be NULL.
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) − This statement creates an index for which the values must be unique (with the exception of NULL values, which may appear multiple times).
ALTER TABLE tbl_name ADD INDEX index_name (column_list) − This adds an ordinary index in which any value may appear more than once.
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) − This creates a special FULLTEXT index that is used for text-searching purposes.
Following is the query to add index in an existing table.
ALTER TABLE testalter_tbl ADD INDEX (c);
You can drop any INDEX by using the DROP clause along with the ALTER command. Following is the query to drop the above-created index.
ALTER TABLE testalter_tbl DROP INDEX (c);
Displaying INDEX Information
You can use the SHOW INDEX command to list out all the indexes associated with a table. Vertical-format output (specified by \G) often is useful with this statement, to avoid long line wraparound.
Following is the generic syntax to display the index information about a table.