HSQLDB - Panduan Cepat

HyperSQL Database (HSQLDB) adalah pengelola database relasional modern yang sangat sesuai dengan standar SQL: 2011 dan spesifikasi JDBC 4. Ini mendukung semua fitur inti dan RDBMS. HSQLDB digunakan untuk pengembangan, pengujian, dan penyebaran aplikasi database.

Fitur utama dan unik dari HSQLDB adalah Kepatuhan Standar. Ini dapat menyediakan akses database dalam proses aplikasi pengguna, dalam server aplikasi, atau sebagai proses server terpisah.

Fitur HSQLDB

  • HSQLDB menggunakan struktur dalam memori untuk operasi cepat terhadap server DB. Ini menggunakan persistensi disk sesuai fleksibilitas pengguna, dengan pemulihan kerusakan yang andal.

  • HSQLDB juga cocok untuk intelijen bisnis, ETL, dan aplikasi lain yang memproses kumpulan data besar.

  • HSQLDB memiliki berbagai opsi penerapan perusahaan, seperti transaksi XA, sumber data penyatuan koneksi, dan otentikasi jarak jauh.

  • HSQLDB ditulis dalam bahasa pemrograman Java dan dijalankan dalam Java Virtual Machine (JVM). Ini mendukung antarmuka JDBC untuk akses database.

Komponen HSQLDB

Ada tiga komponen berbeda dalam paket jar HSQLDB.

  • Mesin HyperSQL RDBMS (HSQLDB)

  • Driver HyperSQL JDBC

  • Database Manager (alat akses database GUI, dengan versi Swing dan AWT)

HyperSQL RDBMS dan JDBC Driver menyediakan fungsionalitas inti. Manajer Database adalah alat akses database tujuan umum yang dapat digunakan dengan mesin database apa pun yang memiliki driver JDBC.

Sebuah jar tambahan bernama sqltool.jar, berisi Sql Tool, yang merupakan alat akses database baris perintah. Ini adalah perintah tujuan umum. Alat akses database baris yang dapat digunakan dengan mesin database lain juga.

HSQLDB adalah sistem manajemen database relasional yang diimplementasikan di Java murni. Anda dapat dengan mudah menyematkan database ini ke aplikasi Anda menggunakan JDBC. Atau Anda dapat menggunakan operasi secara terpisah.

Prasyarat

Ikuti penginstalan perangkat lunak prasyarat untuk HSQLDB.

Verifikasi Instalasi Java

Karena HSQLDB adalah sistem manajemen basis data relasional yang diimplementasikan di Java murni, Anda harus menginstal perangkat lunak JDK (Java Development Kit) sebelum menginstal HSQLDB. Jika Anda sudah memiliki instalasi JDK di sistem Anda, coba perintah berikut untuk memverifikasi versi Java.

java –version

Jika JDK berhasil diinstal di sistem Anda, Anda akan mendapatkan output berikut.

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)

Jika Anda belum menginstal JDK di sistem Anda, kunjungi tautan berikut untuk Menginstal JDK.

Instalasi HSQLDB

Berikut adalah langkah-langkah untuk menginstal HSQLDB.

Step 1 − Download HSQLDB bundle

Unduh versi terbaru database HSQLDB dari tautan berikut https://sourceforge.net/projects/hsqldb/files/. Setelah Anda mengklik tautan tersebut, Anda akan mendapatkan tangkapan layar berikut.

Klik HSQLDB dan unduhan akan segera dimulai. Terakhir, Anda akan mendapatkan file zip bernamahsqldb-2.3.4.zip.

Step 2 − Extract the HSQLDB zip file

Ekstrak file zip dan letakkan di file C:\direktori. Setelah ekstraksi, Anda akan mendapatkan struktur file seperti yang ditunjukkan pada gambar layar berikut.

Step 3 − Create a default database

Tidak ada database default untuk HSQLDB, oleh karena itu, Anda perlu membuat database untuk HSQLDB. Mari kita buat file properti bernamaserver.properties yang mendefinisikan database baru bernama demodb. Lihatlah properti server database berikut.

server.database.0 = file:hsqldb/demodb
server.dbname.0 = testdb

Tempatkan file server.properties ini ke dalam direktori home HSQLDB C:\hsqldb- 2.3.4\hsqldb\.

Sekarang jalankan perintah berikut pada command prompt.

\>cd C:\hsqldb-2.3.4\hsqldb
hsqldb>java -classpath lib/hsqldb.jar org.hsqldb.server.Server

Setelah menjalankan perintah di atas, Anda akan menerima status server seperti yang ditunjukkan pada gambar berikut.

Nanti, Anda akan menemukan struktur folder berikut dari direktori hsqldb di direktori home HSQLDB yaitu C:\hsqldb-2.3.4\hsqldb. File tersebut adalah file temp, file lck, file log, file properti, dan file script database demodb yang dibuat oleh server database HSQLDB.

Step 4 − Start the database server

Setelah Anda selesai membuat database, Anda harus memulai database dengan menggunakan perintah berikut.

\>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

Setelah menjalankan perintah di atas, Anda mendapatkan status berikut.

Sekarang, Anda dapat membuka layar beranda database runManagerSwing.bat dari C:\hsqldb-2.3.4\hsqldb\binlokasi. File bat ini akan membuka file GUI untuk database HSQLDB. Sebelum itu akan meminta Anda untuk pengaturan database melalui kotak dialog. Coba lihat screenshot berikut. Di kotak dialog ini, masukkan Nama Pengaturan, URL seperti yang ditunjukkan di atas dan klik Ok.

Anda akan mendapatkan layar GUI dari database HSQLDB seperti yang ditunjukkan pada gambar berikut.

Pada bab instalasi, kita membahas bagaimana menghubungkan database secara manual. Pada bab ini, kita akan membahas bagaimana menghubungkan database secara terprogram (menggunakan pemrograman Java).

Lihat program berikut, yang akan memulai server dan membuat koneksi antara aplikasi Java dan database.

Contoh

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);
      }
   }
}

Simpan kode ini ke ConnectDatabase.javamengajukan. Anda harus memulai database menggunakan perintah berikut.

\>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

Anda dapat menggunakan perintah berikut untuk mengkompilasi dan menjalankan kode.

\>javac ConnectDatabase.java
\>java ConnectDatabase

Setelah menjalankan perintah di atas, Anda akan menerima output berikut -

Connection created successfully

Bab ini menjelaskan berbagai tipe data HSQLDB. Server HSQLDB menawarkan enam kategori tipe data.

Tipe Data Numerik Tepat

Tipe data Dari Untuk
bigint -9.223.372.036.854.775.808 9.223.372.036.854.775.807
int -2.147.483.648 2.147.483.647
smallint -32,768 32.767
tinyint 0 255
sedikit 0 1
desimal -10 ^ 38 +1 10 ^ 38 -1
numerik -10 ^ 38 +1 10 ^ 38 -1
uang -922,337,203,685,477.5808 +922,337,203,685,477.5807
uang kecil -214,748,3648 +214,748.3647

Perkiraan Jenis Data Numerik

Tipe data Dari Untuk
mengapung -1,79E + 308 1,79E + 308
nyata -3,40E + 38 3.40E + 38

Tipe Data Tanggal dan Waktu

Tipe data Dari Untuk
tanggal Waktu 1 Jan 1753 31 Desember 9999
smalldatetime 1 Jan 1900 6 Juni 2079
tanggal Menyimpan tanggal seperti 30 Juni 1991
waktu Menyimpan waktu hari seperti 12:30

Note - Di sini, datetime memiliki akurasi 3,33 milidetik sedangkan datetime kecil memiliki akurasi 1 menit.

Tipe Data String Karakter

Tipe data Deskripsi
arang Panjang maksimum 8.000 karakter (Panjang tetap karakter non-Unicode)
varchar.dll Maksimum 8.000 karakter (data non-Unicode dengan panjang variabel)
varchar (maks) Panjang maksimum 231 karakter, panjang variabel data non-Unicode (hanya SQL Server 2005)
teks Data non-Unicode dengan panjang variabel dengan panjang maksimal 2.147.483.647 karakter

Tipe Data String Karakter Unicode

Tipe data Deskripsi
nchar Panjang maksimum 4.000 karakter (Unicode panjang tetap)
nvarchar.dll Panjang maksimum 4.000 karakter (panjang Variabel Unicode)
nvarchar (maks) Panjang maksimum 231 karakter (hanya SQL Server 2005), (Variable length Unicode)
ntext Panjang maksimum 1.073.741.823 karakter (Panjang variabel Unicode)

Tipe Data Biner

Tipe data Deskripsi
biner Panjang maksimum 8.000 byte (Data biner panjang tetap)
varbinary Panjang maksimum 8.000 byte (Data biner panjang variabel)
varbinary (maks) Panjang maksimum 231 byte (SQL Server 2005 saja), (Panjang variabel data biner)
gambar Panjang maksimum 2.147.483.647 byte (Panjang Variabel Data Biner)

Jenis Data Lain-lain

Tipe data Deskripsi
sql_variant Menyimpan nilai dari berbagai tipe data yang didukung SQL Server, kecuali teks, ntext, dan timestamp
cap waktu Menyimpan nomor unik seluruh database yang diperbarui setiap kali baris diperbarui
pengenal unik Menyimpan pengenal unik global (GUID)
xml Menyimpan data XML. Anda dapat menyimpan contoh xml di kolom atau variabel (hanya SQL Server 2005)
kursor Referensi ke objek kursor
meja Menyimpan kumpulan hasil untuk pemrosesan nanti

Persyaratan wajib dasar untuk membuat tabel adalah nama tabel, nama bidang, dan tipe data untuk bidang tersebut. Secara opsional, Anda juga dapat memberikan batasan utama ke tabel.

Sintaksis

Perhatikan sintaks berikut.

CREATE TABLE table_name (column_name column_type);

Contoh

Mari kita buat tabel bernama tutorials_tbl dengan nama-nama field seperti id, title, author, dan submission_date. Lihat kueri berikut.

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

Setelah menjalankan query di atas, Anda akan menerima output berikut -

(0) rows effected

HSQLDB - Program JDBC

Berikut adalah program JDBC yang digunakan untuk membuat tabel bernama tutorials_tbl ke dalam database HSQLDB. Simpan program keCreateTable.java mengajukan.

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");
   }
}

Anda dapat memulai database menggunakan perintah berikut.

\>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

Kompilasi dan jalankan program di atas menggunakan perintah berikut.

\>javac CreateTable.java
\>java CreateTable

Setelah menjalankan perintah di atas, Anda akan menerima output berikut -

Table created successfully

Sangat mudah untuk menjatuhkan tabel HSQLDB yang sudah ada. Namun, Anda harus sangat berhati-hati saat menghapus tabel yang ada karena data yang hilang tidak akan dipulihkan setelah menghapus tabel.

Sintaksis

Berikut ini adalah sintaks SQL umum untuk menjatuhkan tabel HSQLDB.

DROP TABLE table_name;

Contoh

Mari kita pertimbangkan contoh untuk menjatuhkan tabel bernama karyawan dari server HSQLDB. Berikut ini adalah kueri untuk menjatuhkan tabel bernama karyawan.

DROP TABLE employee;

Setelah menjalankan query di atas, Anda akan menerima output berikut -

(0) rows effected

HSQLDB - Program JDBC

Berikut ini adalah program JDBC yang digunakan untuk menjatuhkan karyawan tabel dari server HSQLDB.

Simpan kode berikut ke DropTable.java mengajukan.

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");
   }
}

Anda dapat memulai database menggunakan perintah berikut.

\>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

Kompilasi dan jalankan program di atas menggunakan perintah berikut.

\>javac DropTable.java
\>java DropTable

Setelah menjalankan perintah di atas, Anda akan menerima output berikut -

Table dropped successfully

Anda dapat mencapai Sisipkan pernyataan kueri di HSQLDB dengan menggunakan perintah INSERT INTO. Anda harus memberikan data yang ditentukan pengguna mengikuti urutan kolom kolom dari tabel.

Sintaksis

Berikut ini adalah sintaks umum untuk INSERT sebuah pertanyaan.

INSERT INTO table_name (field1, field2,...fieldN)
VALUES (value1, value2,...valueN );

Untuk memasukkan data tipe string ke dalam tabel, Anda harus menggunakan tanda kutip ganda atau tunggal untuk memberikan nilai string ke dalam pernyataan kueri sisipkan.

Contoh

Mari kita pertimbangkan contoh yang menyisipkan record ke dalam tabel bernama tutorials_tbl dengan nilai id = 100, title = Belajar PHP, Penulis = John Poul, dan tanggal pengiriman adalah tanggal sekarang.

Berikut ini adalah kueri untuk contoh yang diberikan.

INSERT INTO tutorials_tbl VALUES (100,'Learn PHP', 'John Poul', NOW());

Setelah menjalankan query di atas, Anda akan menerima output berikut -

1 row effected

HSQLDB - Program JDBC

Berikut adalah program JDBC untuk memasukkan record ke dalam tabel dengan nilai yang diberikan, id = 100, title = Learn PHP, Author = John Poul, dan tanggal pengiriman adalah tanggal sekarang. Lihatlah program yang diberikan. Simpan kode tersebut ke dalamInserQuery.java mengajukan.

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"); 
   } 
}

Anda dapat memulai database menggunakan perintah berikut.

\>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

Kompilasi dan jalankan program di atas menggunakan perintah berikut.

\>javac InsertQuery.java 
\>java InsertQuery

Setelah menjalankan perintah di atas, Anda akan menerima output berikut -

1 rows effected 
Rows inserted successfully

Coba masukkan record berikut ke file tutorials_tbl tabel dengan menggunakan INSERT INTO perintah.

Indo Judul Penulis Tanggal penyerahan
101 Pelajari C Yaswanth Sekarang()
102 Pelajari MySQL Abdul S Sekarang()
103 Pelajari Excell Bavya kanna Sekarang()
104 Pelajari JDB Ajith kumar Sekarang()
105 Pelajari Junit Sathya Murthi Sekarang()

Perintah SELECT digunakan untuk mengambil data record dari database HSQLDB. Di sini, Anda perlu menyebutkan daftar bidang wajib dalam pernyataan Pilih.

Sintaksis

Berikut adalah sintaks umum untuk kueri Select.

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • Anda dapat mengambil satu atau lebih bidang dalam satu perintah PILIH.

  • Anda dapat menentukan bintang (*) di tempat bidang. Dalam kasus ini, PILIH akan mengembalikan semua bidang.

  • Anda dapat menentukan kondisi apapun menggunakan klausa WHERE.

  • Anda dapat menentukan offset menggunakan OFFSET dari mana SELECT akan mulai mengembalikan record. Secara default, offset adalah nol.

  • Anda dapat membatasi jumlah pengembalian menggunakan atribut LIMIT.

Contoh

Berikut adalah contoh yang mengambil bidang id, judul, dan penulis dari semua rekaman dari tutorials_tblmeja. Kita dapat mencapai ini dengan menggunakan pernyataan SELECT. Berikut adalah kueri untuk contoh tersebut.

SELECT id, title, author FROM tutorials_tbl

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+------+----------------+-----------------+
|  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 - Program JDBC

Berikut adalah program JDBC yang akan mengambil field id, title, dan author dari semua record tutorials_tblmeja. Simpan kode berikut ke dalamSelectQuery.java mengajukan.

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);
      }
   }
}

Anda dapat memulai database menggunakan perintah berikut.

\>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

Kompilasi dan jalankan kode di atas menggunakan perintah berikut.

\>javac SelectQuery.java
\>java SelectQuery

Setelah menjalankan perintah di atas, Anda akan menerima output berikut -

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

Umumnya, kami menggunakan perintah SELECT untuk mengambil data dari tabel HSQLDB. Kita dapat menggunakan klausa bersyarat WHERE untuk memfilter data yang dihasilkan. Menggunakan WHERE kita dapat menentukan kriteria pemilihan untuk memilih record yang diperlukan dari tabel.

Sintaksis

Berikut ini adalah sintaks dari perintah SELECT WHERE clause untuk mengambil data dari tabel HSQLDB.

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • Anda dapat menggunakan satu atau lebih tabel yang dipisahkan dengan koma untuk memasukkan berbagai kondisi menggunakan klausa WHERE, tetapi klausa WHERE adalah bagian opsional dari perintah SELECT.

  • Anda dapat menentukan kondisi apapun menggunakan klausa WHERE.

  • Anda dapat menentukan lebih dari satu kondisi menggunakan operator DAN atau ATAU.

  • Klausa WHERE juga dapat digunakan bersama dengan perintah DELETE atau UPDATE SQL untuk menentukan kondisi.

Kita dapat memfilter data rekaman dengan menggunakan kondisi. Kami menggunakan operator yang berbeda dalam klausa WHERE bersyarat. Berikut adalah daftar operator, yang dapat digunakan dengan klausa WHERE.

Operator Deskripsi Contoh
= Memeriksa apakah nilai dari dua operan sama atau tidak, jika ya maka kondisinya menjadi benar. (A = B) tidak benar
! = Memeriksa apakah nilai dari dua operan sama atau tidak, jika nilai tidak sama maka kondisinya menjadi benar. (A! = B) benar
> Memeriksa apakah nilai operan kiri lebih besar dari nilai operan kanan, jika ya maka kondisinya menjadi benar. (A> B) tidak benar
< Memeriksa apakah nilai operan kiri kurang dari nilai operan kanan, jika ya maka kondisinya menjadi benar. (A <B) benar
> = Memeriksa apakah nilai operan kiri lebih besar dari atau sama dengan nilai operan kanan, jika ya maka kondisinya menjadi benar. (A> = B) tidak benar
<= Memeriksa apakah nilai operan kiri kurang dari atau sama dengan nilai operan kanan, jika ya maka kondisinya menjadi benar. (A <= B) benar

Contoh

Berikut ini contoh yang mengambil detail seperti id, judul, dan penulis buku berjudul "Learn C". Hal ini dimungkinkan dengan menggunakan klausa WHERE pada perintah SELECT. Berikut ini adalah kueri yang sama.

SELECT id, title, author FROM tutorials_tbl WHERE title = 'Learn C';

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+------+----------------+-----------------+
| id   |      title     |    author       |
+------+----------------+-----------------+
| 101  |      Learn C   |   Yaswanth      |
+------+----------------+-----------------+

HSQLDB - Program JDBC

Berikut adalah program JDBC yang mengambil data rekaman dari tabel tutorials_tblmemiliki judul Learn C. Simpan kode berikut keWhereClause.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);
      }
   }

}

Anda dapat memulai database menggunakan perintah berikut.

\>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

Kompilasi dan jalankan kode di atas menggunakan perintah berikut.

\>javac WhereClause.java
\>java WhereClause

Setelah menjalankan perintah di atas, Anda akan menerima output berikut.

101 | Learn C | Yaswanth

Setiap kali Anda ingin mengubah nilai tabel, Anda dapat menggunakan perintah UPDATE. Ini akan mengubah nilai bidang apa pun dari tabel HSQLDB mana pun.

Sintaksis

Berikut adalah sintaks generik untuk perintah UPDATE.

UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]
  • Anda dapat memperbarui satu atau lebih bidang sekaligus.
  • Anda dapat menentukan kondisi apapun menggunakan klausa WHERE.
  • Anda dapat memperbarui nilai dalam satu tabel dalam satu waktu.

Contoh

Mari kita pertimbangkan contoh yang memperbarui judul tutorial dari "Pelajari C" menjadi "C dan Struktur Data" yang memiliki id "101". Berikut adalah query untuk update.

UPDATE tutorials_tbl SET title = 'C and Data Structures' WHERE id = 101;

Setelah menjalankan query di atas, Anda akan menerima output berikut.

(1) Rows effected

HSQLDB - Program JDBC

Berikut adalah program JDBC yang akan memperbarui judul tutorial dari Learn C untuk C and Data Structures memiliki id 101. Simpan program berikut ke dalamUpdateQuery.java mengajukan.

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");
   }
}

Anda dapat memulai database menggunakan perintah berikut.

\>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

Kompilasi dan jalankan program di atas menggunakan perintah berikut.

\>javac UpdateQuery.java
\>java UpdateQuery

Setelah menjalankan perintah di atas, Anda akan menerima output berikut -

1 Rows effected

Kapanpun Anda ingin menghapus record dari tabel HSQLDB, Anda dapat menggunakan perintah DELETE FROM.

Sintaksis

Berikut adalah sintaks generik untuk perintah DELETE untuk menghapus data dari tabel HSQLDB.

DELETE FROM table_name [WHERE Clause]
  • Jika klausa WHERE tidak ditentukan, maka semua catatan akan dihapus dari tabel MySQL yang diberikan.

  • Anda dapat menentukan kondisi apapun menggunakan klausa WHERE.

  • Anda dapat menghapus rekaman dalam satu tabel dalam satu waktu.

Contoh

Mari kita pertimbangkan contoh yang menghapus data record dari tabel bernama tutorials_tbl memiliki id 105. Berikut ini adalah kueri yang mengimplementasikan contoh yang diberikan.

DELETE FROM tutorials_tbl WHERE id = 105;

Setelah menjalankan query di atas, Anda akan menerima output berikut -

(1) rows effected

HSQLDB - Program JDBC

Berikut adalah program JDBC yang mengimplementasikan contoh yang diberikan. Simpan program berikut keDeleteQuery.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");
   }
}

Anda dapat memulai database menggunakan perintah berikut.

\>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

Kompilasi dan jalankan program di atas menggunakan perintah berikut.

\>javac DeleteQuery.java
\>java DeleteQuery

Setelah menjalankan perintah di atas, Anda akan menerima output berikut -

1 Rows effected

Ada klausul WHERE dalam struktur RDBMS. Anda dapat menggunakan klausa WHERE dengan tanda sama dengan (=) di mana kita ingin melakukan pencocokan tepat. Tapi mungkin ada persyaratan di mana kita ingin menyaring semua hasil di mana nama pembuatnya harus mengandung "john". Ini dapat ditangani dengan menggunakan klausa SQL LIKE bersama dengan klausa WHERE.

Jika klausa SQL LIKE digunakan bersama dengan% karakter, maka klausa tersebut akan berfungsi seperti metacharacter (*) di UNIX sambil mencantumkan semua file atau direktori pada command prompt.

Sintaksis

Berikut ini adalah sintaks SQL umum dari klausa LIKE.

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • Anda dapat menentukan kondisi apa pun menggunakan klausa WHERE.

  • Anda dapat menggunakan klausa LIKE bersama dengan klausa WHERE.

  • Anda dapat menggunakan klausa LIKE sebagai pengganti tanda sama dengan.

  • Jika klausa LIKE digunakan bersama dengan tanda%, maka klausa LIKE akan bekerja seperti pencarian karakter meta.

  • Anda dapat menentukan lebih dari satu kondisi menggunakan operator DAN atau ATAU.

  • Klausa WHERE ... LIKE dapat digunakan bersama dengan perintah DELETE atau UPDATE SQL untuk menentukan kondisi.

Contoh

Mari kita pertimbangkan contoh yang mengambil daftar data tutorial di mana nama penulis dimulai John. Berikut adalah query HSQLDB untuk contoh yang diberikan.

SELECT * from tutorials_tbl WHERE author LIKE 'John%';

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+-----+----------------+-----------+-----------------+
|  id |      title     |   author  | submission_date |
+-----+----------------+-----------+-----------------+
| 100 |    Learn PHP   | John Poul | 2016-06-20      |
+-----+----------------+-----------+-----------------+

HSQLDB - Program JDBC

Berikut adalah program JDBC yang mengambil daftar data tutorial dimana nama penulis dimulai John. Simpan kode keLikeClause.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);
      }
   }
}

Anda dapat memulai database menggunakan perintah berikut.

\>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

Kompilasi dan jalankan kode di atas menggunakan perintah berikut.

\>javac LikeClause.java
\>java LikeClause

Setelah menjalankan perintah berikut, Anda akan menerima keluaran berikut.

100 | Learn PHP | John Poul | 2016-06-20

Perintah SQL SELECT mengambil data dari tabel HSQLDB setiap kali ada persyaratan yang mengikuti urutan tertentu saat mengambil dan menampilkan record. Dalam hal ini, kita dapat menggunakanORDER BY ayat.

Sintaksis

Berikut adalah sintaks dari perintah SELECT bersama dengan klausa ORDER BY untuk mengurutkan data dari HSQLDB.

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
  • Anda dapat mengurutkan hasil yang dikembalikan di bidang mana pun asalkan bidang itu dicantumkan.

  • Anda dapat mengurutkan hasil di lebih dari satu bidang.

  • Anda dapat menggunakan kata kunci ASC atau DESC untuk mendapatkan hasil dalam urutan naik atau turun. Secara default, ini dalam urutan menaik.

  • Anda dapat menggunakan klausa WHERE ... LIKE dengan cara biasa untuk membuat suatu kondisi.

Contoh

Mari kita pertimbangkan contoh yang mengambil dan menyortir record tutorials_tbltabel dengan memesan nama penulis dalam urutan menaik. Berikut ini adalah kueri yang sama.

SELECT id, title, author from tutorials_tbl ORDER BY author ASC;

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+------+----------------+-----------------+
| 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 - Program JDBC

Berikut adalah program JDBC yang mengambil dan menyortir record tutorials_tbltabel dengan memesan nama penulis dalam urutan menaik. Simpan program berikut keOrderBy.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);
      }
   }
}

Anda dapat memulai database menggunakan perintah berikut.

\>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

Kompilasi dan jalankan program di atas menggunakan perintah berikut.

\>javac OrderBy.java
\>java OrderBy

Setelah menjalankan perintah di atas, Anda akan menerima output berikut.

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

Setiap kali ada persyaratan untuk mengambil data dari beberapa tabel menggunakan satu kueri, Anda dapat menggunakan JOINS dari RDBMS. Anda dapat menggunakan beberapa tabel dalam satu kueri SQL Anda. Tindakan bergabung di HSQLDB mengacu pada penghancuran dua tabel atau lebih menjadi satu tabel.

Pertimbangkan tabel Pelanggan dan Pesanan berikut.

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  |
+-----+---------------------+-------------+--------+

Sekarang, mari kita coba mengambil data pelanggan dan jumlah pesanan yang ditempatkan masing-masing pelanggan. Ini berarti kami mengambil data rekaman dari tabel pelanggan dan pesanan. Kami dapat mencapai ini dengan menggunakan konsep JOINS di HSQLDB. Berikut ini adalah kueri GABUNG untuk hal yang sama.

SELECT ID, NAME, AGE, AMOUNT FROM CUSTOMERS, ORDERS WHERE CUSTOMERS.ID =
ORDERS.CUSTOMER_ID;

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+----+----------+-----+--------+
| ID |   NAME   | AGE | AMOUNT |
+----+----------+-----+--------+
|  3 | kaushik  |  23 |  3000  |
|  3 | kaushik  |  23 |  1500  |
|  2 | Khilan   |  25 |  1560  |
|  4 | Chaitali |  25 |  2060  |
+----+----------+-----+--------+

Jenis GABUNG

Ada berbagai jenis gabungan yang tersedia di HSQLDB.

  • INNER JOIN - Mengembalikan baris saat ada kecocokan di kedua tabel.

  • LEFT JOIN - Menampilkan semua baris dari tabel kiri, meskipun tidak ada kecocokan di tabel kanan.

  • RIGHT JOIN - Menampilkan semua baris dari tabel kanan, meskipun tidak ada kecocokan di tabel kiri.

  • FULL JOIN - Mengembalikan baris saat ada kecocokan di salah satu tabel.

  • SELF JOIN - Digunakan untuk menggabungkan tabel ke tabel itu sendiri seolah-olah tabel adalah dua tabel, untuk sementara mengganti nama setidaknya satu tabel dalam pernyataan SQL.

Gabung Batin

Gabungan yang paling sering digunakan dan penting adalah INNER JOIN. Ini juga disebut sebagai EQUIJOIN.

INNER JOIN membuat tabel hasil baru dengan menggabungkan nilai kolom dari dua tabel (tabel1 dan tabel2) berdasarkan predikat gabungan. Kueri membandingkan setiap baris tabel1 dengan setiap baris tabel2 untuk menemukan semua pasangan baris, yang memenuhi predikat gabungan. Jika predikat gabungan terpenuhi, nilai kolom untuk setiap pasangan baris A dan B yang cocok digabungkan menjadi baris hasil.

Sintaksis

Sintaks dasar INNER JOIN adalah sebagai berikut.

SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;

Contoh

Perhatikan dua tabel berikut, satu tabel berjudul sebagai CUSTOMERS dan tabel lainnya berjudul tabel ORDERS sebagai berikut -

+----+----------+-----+-----------+----------+
| 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   |
+-----+---------------------+-------------+--------+

Sekarang, mari kita gabungkan dua tabel ini menggunakan query INNER JOIN sebagai berikut -

SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS
INNER JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+----+----------+--------+---------------------+
| 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 |
+----+----------+--------+---------------------+

Gabung Kiri

HSQLDB LEFT JOIN mengembalikan semua baris dari tabel kiri, meskipun tidak ada kecocokan di tabel kanan. Ini berarti bahwa jika klausa ON cocok dengan 0 (nol) record di tabel kanan, join akan tetap mengembalikan baris di hasil, tetapi dengan NULL di setiap kolom dari tabel kanan.

Ini berarti bahwa gabungan kiri mengembalikan semua nilai dari tabel kiri, ditambah nilai yang cocok dari tabel kanan atau NULL jika tidak ada predikat gabungan yang cocok.

Sintaksis

Sintaks dasar LEFT JOIN adalah sebagai berikut -

SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;

Di sini kondisi yang diberikan dapat berupa ekspresi apa pun berdasarkan kebutuhan Anda.

Contoh

Perhatikan dua tabel berikut, satu tabel berjudul sebagai CUSTOMERS dan tabel lainnya berjudul tabel ORDERS sebagai berikut -

+----+----------+-----+-----------+----------+
| 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   |
+-----+---------------------+-------------+--------+

Sekarang, mari kita gabungkan dua tabel ini menggunakan kueri LEFT JOIN sebagai berikut -

SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS
LEFT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Setelah menjalankan query di atas, Anda akan menerima output berikut -

+----+----------+--------+---------------------+
| 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         |
+----+----------+--------+---------------------+

Bergabung dengan Benar

HSQLDB RIGHT JOIN mengembalikan semua baris dari tabel kanan, meskipun tidak ada kecocokan di tabel kiri. Ini berarti bahwa jika klausa ON cocok dengan 0 (nol) record di tabel kiri, join akan tetap mengembalikan satu baris di hasil, tetapi dengan NULL di setiap kolom dari tabel kiri.

Ini berarti bahwa gabungan kanan mengembalikan semua nilai dari tabel kanan, ditambah nilai yang cocok dari tabel kiri atau NULL jika tidak ada predikat gabungan yang cocok.

Sintaksis

Sintaks dasar RIGHT JOIN adalah sebagai berikut -

SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;

Contoh

Perhatikan dua tabel berikut, satu tabel berjudul sebagai CUSTOMERS dan tabel lainnya berjudul tabel ORDERS sebagai berikut -

+----+----------+-----+-----------+----------+
| 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  |
+-----+---------------------+-------------+--------+

Sekarang, mari kita gabungkan dua tabel ini menggunakan kueri RIGHT JOIN sebagai berikut -

SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS
RIGHT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Setelah menjalankan query di atas, Anda akan menerima hasil sebagai berikut.

+------+----------+--------+---------------------+
|  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 |
+------+----------+--------+---------------------+

Bergabung Penuh

HSQLDB FULL JOIN menggabungkan hasil gabungan luar kiri dan kanan.

Tabel yang digabungkan akan berisi semua record dari kedua tabel, dan mengisi NULL untuk kecocokan yang hilang di kedua sisi.

Sintaksis

Sintaks dasar FULL JOIN adalah sebagai berikut -

SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field = table2.common_field;

Di sini kondisi yang diberikan dapat berupa ekspresi apa pun berdasarkan kebutuhan Anda.

Contoh

Perhatikan dua tabel berikut, satu tabel berjudul sebagai CUSTOMERS dan tabel lainnya berjudul tabel ORDERS sebagai berikut -

+----+----------+-----+-----------+----------+
| 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   |
+-----+---------------------+-------------+--------+

Sekarang, mari kita gabungkan dua tabel ini menggunakan query FULL JOIN sebagai berikut -

SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS
FULL JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Setelah menjalankan query di atas, Anda akan menerima hasil sebagai berikut.

+------+----------+--------+---------------------+
|  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 |
+------+----------+--------+---------------------+

Bergabung Sendiri

SQL SELF JOIN digunakan untuk menggabungkan tabel ke tabel itu sendiri seolah-olah tabel adalah dua tabel, untuk sementara mengganti nama setidaknya satu tabel dalam pernyataan SQL.

Sintaksis

Sintaks dasar SELF JOIN adalah sebagai berikut -

SELECT a.column_name, b.column_name...
FROM table1 a, table1 b
WHERE a.common_field = b.common_field;

Di sini, klausa WHERE bisa berupa ekspresi apa pun yang diberikan berdasarkan kebutuhan Anda.

Contoh

Perhatikan dua tabel berikut, satu tabel berjudul sebagai CUSTOMERS dan tabel lainnya berjudul tabel ORDERS sebagai berikut -

+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+

Sekarang, mari kita gabungkan tabel ini menggunakan query SELF JOIN sebagai berikut -

SELECT a.ID, b.NAME, a.SALARY FROM CUSTOMERS a, CUSTOMERS b
WHERE a.SALARY > b.SALARY;

Setelah menjalankan query di atas, Anda akan menerima output berikut -

+----+----------+---------+
| 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 |
+----+----------+---------+

SQL NULL adalah istilah yang digunakan untuk mewakili nilai yang hilang. Nilai NULL dalam tabel adalah nilai di bidang yang tampaknya kosong. Setiap kali kami mencoba memberikan kondisi, yang membandingkan nilai kolom atau kolom dengan NULL, itu tidak berfungsi dengan baik.

Kita bisa menangani nilai NULL dengan menggunakan tiga hal.

  • IS NULL - Operator mengembalikan nilai true jika nilai kolom adalah NULL.

  • IS NOT NULL - Operator mengembalikan true jika nilai kolom TIDAK NULL.

  • <=> - Operator membandingkan nilai, yang (tidak seperti operator =) benar bahkan untuk dua nilai NULL.

Untuk mencari kolom yang NULL atau NOT NULL, gunakan IS NULL atau IS NOT NULL masing-masing.

Contoh

Mari kita perhatikan contoh di mana ada tabel tcount_tblyang berisi dua kolom, author dan tutorial_count. Kami dapat memberikan nilai NULL ke tutorial_count yang menunjukkan bahwa penulis tidak menerbitkan satu pun tutorial. Oleh karena itu, nilai tutorial_count untuk masing-masing penulis tersebut adalah NULL.

Jalankan kueri berikut.

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);

Gunakan perintah berikut untuk menampilkan semua catatan dari tcount_tbl meja.

select * from tcount_tbl;

Setelah menjalankan perintah di atas, Anda akan menerima output berikut.

+-----------------+----------------+
|     author      | tutorial_count |
+-----------------+----------------+
|      Abdul S    |      20        |
|    Ajith kumar  |      5         |
|        Jen      |     NULL       |
|    Bavya kanna  |      8         |
|       mahran    |     NULL       |
|     John Poul   |      10        |
|   Sathya Murthi |      6         |
+-----------------+----------------+

Untuk mencari record dimana kolom tutorial_count IS NULL, berikut adalah querynya.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;

Setelah eksekusi kueri, Anda akan menerima keluaran berikut.

+-----------------+----------------+
|     author      | tutorial_count |
+-----------------+----------------+
|       Jen       |     NULL       |
|      mahran     |     NULL       |
+-----------------+----------------+

Untuk menemukan record di mana kolom tutorial_count IS NOT NULL, berikut adalah query-nya.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;

Setelah eksekusi kueri, Anda akan menerima keluaran berikut.

+-----------------+----------------+
|      author     | tutorial_count |
+-----------------+----------------+
|      Abdul S    |      20        |
|     Ajith kumar |       5        |
|     Bavya kanna |       8        |
|     John Poul   |      10        |
|   Sathya Murthi |       6        |
+-----------------+----------------+

HSQLDB - Program JDBC

Berikut adalah program JDBC yang mengambil record secara terpisah dari tabel tcount_tbl dimana tutorial_ count adalah NULL dan tutorial_count TIDAK NULL. Simpan program berikut keNullValues.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);
      }
   }
}

Kompilasi dan jalankan program di atas menggunakan perintah berikut.

\>javac NullValues.java
\>Java NullValues

Setelah menjalankan perintah di atas, Anda akan menerima output berikut.

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 mendukung beberapa simbol khusus untuk operasi pencocokan pola berdasarkan ekspresi reguler dan operator REGEXP.

Berikut adalah tabel pola yang dapat digunakan bersama dengan operator REGEXP.

Pola Apa Pola yang Cocok
^ Awal dari string
$ Akhir string
. Karakter tunggal apa pun
[...] Karakter apa pun yang terdaftar di antara tanda kurung siku
[^ ...] Karakter apa pun yang tidak terdaftar di antara tanda kurung siku
p1 | p2 | p3 Alternasi; cocok dengan salah satu pola p1, p2, atau p3
* Nol atau lebih contoh dari elemen sebelumnya
+ Satu atau lebih contoh dari elemen sebelumnya
{n} n contoh dari elemen sebelumnya
{M N} m melalui n contoh dari elemen sebelumnya

Contoh

Mari kita coba contoh kueri yang berbeda untuk memenuhi kebutuhan kita. Lihatlah kueri yang diberikan berikut ini.

Coba Kueri ini untuk menemukan semua penulis yang namanya dimulai dengan '^ A'.

SELECT author FROM tcount_tbl WHERE REGEXP_MATCHES(author,'^A.*');

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+-----------------+
|     author      |
+-----------------+
|     Abdul S     |
|    Ajith kumar  |
+-----------------+

Coba Query ini untuk menemukan semua penulis yang namanya diakhiri dengan 'ul $'.

SELECT author FROM tcount_tbl WHERE REGEXP_MATCHES(author,'.*ul$');

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+-----------------+
|     author      |
+-----------------+
|    John Poul    |
+-----------------+

Coba Query ini untuk menemukan semua penulis yang namanya mengandung 'th'.

SELECT author FROM tcount_tbl WHERE REGEXP_MATCHES(author,'.*th.*');

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+-----------------+
|     author      |
+-----------------+
|    Ajith kumar  | 
|     Abdul S     |
+-----------------+

Coba kueri ini untuk menemukan semua penulis yang namanya dimulai dengan vokal (a, e, i, o, u).

SELECT author FROM tcount_tbl WHERE REGEXP_MATCHES(author,'^[AEIOU].*');

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+-----------------+
|     author      |
+-----------------+
|     Abdul S     |
|    Ajith kumar  |
+-----------------+

SEBUAH Transactionadalah sekelompok operasi manipulasi database yang berurutan, yang dilakukan dan dianggap sebagai satu unit kerja tunggal. Dengan kata lain, ketika semua operasi berhasil dijalankan, baru seluruh transaksi akan selesai. Jika ada operasi dalam transaksi yang gagal, maka seluruh transaksi akan gagal.

Sifat Transaksi

Pada dasarnya, transaksi mendukung 4 properti standar. Mereka dapat disebut sebagai properti ACID.

Atomicity - Semua operasi dalam transaksi berhasil dijalankan, jika tidak, transaksi dibatalkan pada titik kegagalan dan operasi sebelumnya digulung kembali ke posisi sebelumnya.

Consistency - Basis data mengubah status dengan benar setelah transaksi yang dilakukan berhasil.

Isolation - Ini memungkinkan transaksi untuk beroperasi secara independen dan transparan satu sama lain.

Durability - Hasil atau efek dari transaksi yang dilakukan tetap ada jika terjadi kegagalan sistem.

Commit, Rollback, dan Savepoint

Kata kunci ini terutama digunakan untuk transaksi HSQLDB.

Commit- Selalu transaksi yang berhasil harus diselesaikan dengan menjalankan perintah COMMIT.

Rollback - Jika terjadi kegagalan dalam transaksi, maka perintah ROLLBACK harus dijalankan untuk mengembalikan setiap tabel yang direferensikan dalam transaksi ke keadaan sebelumnya.

Savepoint - Membuat titik dalam grup transaksi untuk melakukan rollback.

Contoh

Contoh berikut menjelaskan konsep transaksi bersama dengan commit, rollback, dan Savepoint. Mari kita perhatikan tabel Pelanggan dengan kolom id, nama, umur, alamat, dan gaji.

Indo Nama Usia Alamat Gaji
1 Ramesh 32 Ahmedabad 2000.00
2 Karun 25 Delhi 1500,00
3 Kaushik 23 Kota 2000.00
4 Chaitanya 25 Mumbai 6500,00
5 Harish 27 Bhopal 8500,00
6 Kamesh 22 MP 1500,00
7 Murali 24 Indore 10.000,00

Gunakan perintah berikut untuk membuat tabel pelanggan di sepanjang baris data di atas.

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);

Contoh untuk COMMIT

Kueri berikut menghapus baris dari tabel yang memiliki age = 25 dan menggunakan perintah COMMIT untuk menerapkan perubahan tersebut dalam database.

DELETE FROM CUSTOMERS WHERE AGE = 25;
COMMIT;

Setelah menjalankan query di atas, Anda akan menerima output berikut.

2 rows effected

Setelah berhasil mengeksekusi perintah di atas, periksa catatan tabel pelanggan dengan menjalankan perintah yang diberikan di bawah ini.

Select * from Customer;

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+----+----------+-----+-----------+----------+
| 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  |
+----+----------+-----+-----------+----------+

Contoh untuk Rollback

Mari kita pertimbangkan tabel Pelanggan yang sama sebagai input.

Indo Nama Usia Alamat Gaji
1 Ramesh 32 Ahmedabad 2000.00
2 Karun 25 Delhi 1500,00
3 Kaushik 23 Kota 2000.00
4 Chaitanya 25 Mumbai 6500,00
5 Harish 27 Bhopal 8500,00
6 Kamesh 22 MP 1500,00
7 Murali 24 Indore 10.000,00

Berikut adalah contoh kueri yang menjelaskan tentang fungsionalitas Rollback dengan menghapus record dari tabel yang memiliki age = 25 dan kemudian ROLLBACK perubahan dalam database.

DELETE FROM CUSTOMERS WHERE AGE = 25;
ROLLBACK;

Setelah berhasil mengeksekusi dua kueri di atas, Anda dapat melihat data rekaman di tabel Pelanggan menggunakan perintah berikut.

Select * from Customer;

Setelah menjalankan perintah di atas, Anda akan menerima output berikut.

+----+----------+-----+-----------+----------+
| 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  |
+----+----------+-----+-----------+----------+

Kueri hapus menghapus data catatan pelanggan yang usianya = 25. Perintah Rollback, memutar kembali perubahan tersebut pada tabel Pelanggan.

Contoh untuk Savepoint

Savepoint adalah titik dalam transaksi ketika Anda dapat mengembalikan transaksi ke titik tertentu tanpa memutar kembali seluruh transaksi.

Mari kita pertimbangkan tabel Pelanggan yang sama sebagai input.

Indo Nama Usia Alamat Gaji
1 Ramesh 32 Ahmedabad 2000.00
2 Karun 25 Delhi 1500,00
3 Kaushik 23 Kota 2000.00
4 Chaitanya 25 Mumbai 6500,00
5 Harish 27 Bhopal 8500,00
6 Kamesh 22 MP 1500,00
7 Murali 24 Indore 10.000,00

Mari kita pertimbangkan dalam contoh ini, Anda berencana untuk menghapus tiga catatan berbeda dari tabel Pelanggan. Anda ingin membuat Savepoint sebelum setiap penghapusan, sehingga Anda dapat memutar kembali ke Savepoint mana pun kapan saja untuk mengembalikan data yang sesuai ke keadaan aslinya.

Berikut rangkaian operasinya.

SAVEPOINT SP1;
DELETE FROM CUSTOMERS WHERE ID = 1;
SAVEPOINT SP2;
DELETE FROM CUSTOMERS WHERE ID = 2;
SAVEPOINT SP3;
DELETE FROM CUSTOMERS WHERE ID = 3;

Sekarang, Anda telah membuat tiga Savepoint dan menghapus tiga catatan. Dalam situasi ini, jika Anda ingin memutar kembali rekaman yang memiliki Id 2 dan 3 kemudian gunakan perintah Rollback berikut.

ROLLBACK TO SP2;

Perhatikan bahwa hanya penghapusan pertama yang terjadi sejak Anda mengembalikan ke SP2. Gunakan kueri berikut ini untuk menampilkan semua catatan pelanggan.

Select * from Customer;

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+----+----------+-----+-----------+----------+
| 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   |
+----+----------+-----+-----------+----------+

Lepaskan Savepoint

Kita dapat melepaskan Savepoint menggunakan perintah RELEASE. Berikut ini adalah sintaks generik.

RELEASE SAVEPOINT SAVEPOINT_NAME;

Kapan pun ada kebutuhan untuk mengubah nama tabel atau bidang, mengubah urutan bidang, mengubah tipe data bidang, atau struktur tabel apa pun, Anda dapat mencapai hal yang sama menggunakan perintah ALTER.

Contoh

Mari kita pertimbangkan contoh yang menjelaskan perintah ALTER menggunakan skenario yang berbeda.

Gunakan kueri berikut untuk membuat tabel bernama testalter_tbl dengan ladang ' id dan name.

//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';

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+------------+-------------+------------+-----------+-----------+------------+
|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     |
+------------+-------------+------------+-----------+-----------+------------+

Menjatuhkan atau Menambahkan Kolom

Kapanpun Anda ingin DROP kolom yang ada dari tabel HSQLDB, Anda dapat menggunakan klausa DROP bersama dengan perintah ALTER.

Gunakan kueri berikut untuk menjatuhkan kolom (name) dari tabel testalter_tbl.

ALTER TABLE testalter_tbl DROP name;

Setelah berhasil mengeksekusi kueri di atas, Anda dapat mengetahui apakah bidang nama dihapus dari tabel testalter_tbl menggunakan perintah berikut.

Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM =
   'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';

Setelah menjalankan perintah di atas, Anda akan menerima output berikut.

+------------+-------------+------------+-----------+-----------+------------+
|TABLE_SCHEM |  TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE|
+------------+-------------+------------+-----------+-----------+------------+
|  PUBLIC    |TESTALTER_TBL|      ID    |      4    |   INTEGER |     4      |
+------------+-------------+------------+-----------+-----------+------------+

Kapanpun Anda ingin menambahkan kolom apapun ke dalam tabel HSQLDB, Anda dapat menggunakan klausa ADD bersama dengan perintah ALTER.

Gunakan kueri berikut untuk menambahkan kolom bernama NAME Ke meja testalter_tbl.

ALTER TABLE testalter_tbl ADD name VARCHAR(10);

Setelah berhasil mengeksekusi query di atas, Anda dapat mengetahui apakah field name ditambahkan ke tabel testalter_tbl menggunakan perintah berikut.

Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM =
   'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';

Setelah menjalankan query di atas, Anda akan menerima output berikut.

+------------+-------------+------------+-----------+-----------+------------+
|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     |
+------------+-------------+------------+-----------+-----------+------------+

Mengubah Definisi atau Nama Kolom

Setiap kali ada persyaratan untuk mengubah definisi kolom, gunakan MODIFY atau CHANGE klausa bersama dengan ALTER perintah.

Mari kita perhatikan contoh yang akan menjelaskan bagaimana menggunakan klausa CHANGE. Mejatestalter_tblberisi dua bidang - id dan nama - memiliki tipe data int dan varchar masing-masing. Sekarang mari kita coba mengubah tipe data id dari INT ke BIGINT. Berikut ini adalah query untuk melakukan perubahan.

ALTER TABLE testalter_tbl CHANGE id id BIGINT;

Setelah eksekusi query di atas berhasil, struktur tabel dapat diverifikasi menggunakan perintah berikut.

Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM =
   'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';

Setelah menjalankan perintah di atas, Anda akan menerima output berikut.

+------------+-------------+------------+-----------+-----------+------------+
|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     |
+------------+-------------+------------+-----------+-----------+------------+

Sekarang mari kita coba untuk meningkatkan ukuran kolom NAME dari 10 menjadi 20 di testalter_tblmeja. Berikut ini adalah kueri untuk mencapai ini menggunakan klausa MODIFY bersama dengan perintah ALTER.

ALTER TABLE testalter_tbl MODIFY name VARCHAR(20);

Setelah eksekusi query di atas berhasil, struktur tabel dapat diverifikasi menggunakan perintah berikut.

Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM =
   'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';

Setelah menjalankan perintah di atas, Anda akan menerima output berikut.

+------------+-------------+------------+-----------+-----------+------------+
|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      |
+------------+-------------+------------+-----------+-----------+------------+

SEBUAH database indexadalah struktur data yang meningkatkan kecepatan operasi dalam sebuah tabel. Indeks dapat dibuat menggunakan satu atau beberapa kolom, memberikan dasar untuk pencarian acak cepat dan pengurutan akses yang efisien ke catatan.

Saat membuat indeks, harus dipertimbangkan kolom apa yang akan digunakan untuk membuat kueri SQL, dan membuat satu atau beberapa indeks pada kolom tersebut.

Secara praktis, indeks juga merupakan tipe tabel, yang menyimpan kunci utama atau bidang indeks dan penunjuk ke setiap rekaman ke dalam tabel sebenarnya.

Pengguna tidak dapat melihat indeks. Mereka hanya digunakan untuk mempercepat query dan akan digunakan oleh Database Search Engine untuk menemukan record dengan cepat.

Pernyataan INSERT dan UPDATE membutuhkan lebih banyak waktu pada tabel yang memiliki indeks, sedangkan pernyataan SELECT berjalan lebih cepat pada tabel tersebut. Alasannya adalah saat memasukkan atau memperbarui, database perlu memasukkan atau memperbarui nilai indeks juga.

Indeks Sederhana & Unik

Anda dapat membuat indeks unik di atas tabel. SEBUAHunique indexartinya dua baris tidak boleh memiliki nilai indeks yang sama. Berikut sintaks untuk membuat Index pada tabel.

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2,...);

Anda dapat menggunakan satu atau beberapa kolom untuk membuat indeks. Misalnya, buat indeks di tutorials_tbl menggunakan tutorial_author.

CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author)

Anda dapat membuat indeks sederhana di atas tabel. Abaikan saja kata kunci UNIK dari kueri untuk membuat indeks sederhana. SEBUAHsimple index memungkinkan nilai duplikat dalam tabel.

Jika Anda ingin mengindeks nilai dalam kolom dalam urutan menurun, Anda dapat menambahkan kata khusus DESC setelah nama kolom.

CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author DESC)

ALTER Perintah untuk Tambah & Jatuhkan INDEX

Ada empat jenis pernyataan untuk menambahkan indeks ke tabel -

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) - Pernyataan ini menambahkan PRIMARY KEY, yang berarti nilai yang diindeks harus unik dan tidak boleh NULL.

  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) - Pernyataan ini membuat indeks yang nilainya harus unik (dengan pengecualian nilai NULL, yang mungkin muncul beberapa kali).

  • ALTER TABLE tbl_name ADD INDEX index_name (column_list) - Ini menambahkan indeks biasa di mana nilai apa pun dapat muncul lebih dari sekali.

  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) - Ini membuat indeks FULLTEXT khusus yang digunakan untuk tujuan pencarian teks.

Berikut ini adalah query untuk menambahkan indeks dalam tabel yang sudah ada.

ALTER TABLE testalter_tbl ADD INDEX (c);

Anda dapat menghapus INDEX apa pun dengan menggunakan klausa DROP bersama dengan perintah ALTER. Berikut ini adalah kueri untuk menghapus indeks yang dibuat di atas.

ALTER TABLE testalter_tbl DROP INDEX (c);

Menampilkan Informasi INDEX

Anda dapat menggunakan perintah SHOW INDEX untuk membuat daftar semua indeks yang terkait dengan tabel. Output format vertikal (ditentukan oleh \ G) sering kali berguna dengan pernyataan ini, untuk menghindari garis batas yang panjang.

Berikut ini adalah sintaks generik untuk menampilkan informasi indeks tentang sebuah tabel.

SHOW INDEX FROM table_name\G