H2 Veritabanı - Hızlı Kılavuz
H2, açık kaynaklı hafif bir Java veritabanıdır. Java uygulamalarına gömülebilir veya istemci-sunucu modunda çalıştırılabilir. Temel olarak, H2 veritabanı bellek içi veritabanı olarak çalışacak şekilde yapılandırılabilir, bu da verilerin diskte kalmayacağı anlamına gelir. Gömülü veritabanı nedeniyle, üretim geliştirme için kullanılmaz, daha çok geliştirme ve test için kullanılır.
Bu veritabanı, gömülü modda veya sunucu modunda kullanılabilir. H2 veritabanının ana özellikleri aşağıdadır -
- Son derece hızlı, açık kaynak, JDBC API
- Gömülü ve sunucu modlarında mevcuttur; bellek içi veritabanları
- Tarayıcı tabanlı Konsol uygulaması
- Küçük ayak izi - Yaklaşık 1,5 MB kavanoz dosyası boyutu
H2 Veritabanının Özellikleri
H2 Veritabanının temel özellikleri aşağıdaki gibidir -
Son derece hızlı bir veritabanı motorudur.
H2 açık kaynak kodludur ve Java ile yazılmıştır.
Standart SQL ve JDBC API'yi destekler. PostgreSQL ODBC sürücüsünü de kullanabilir.
Gömülü ve Sunucu moduna sahiptir.
H2 destekler clustering ve multi-version concurrency.
Güçlü güvenlik özelliklerine sahiptir.
Ek özellikler
Aşağıda H2 Veritabanının bazı ek özellikleri verilmiştir -
H2, disk tabanlı veya bellek içi veritabanları ve tablolar, salt okunur veritabanı desteği, geçici tablolardır.
H2, işlem desteği (okuma tamamlandı), 2 aşamalı çoklu bağlantılar, tablo düzeyinde kilitleme sağlar.
H2, karmaşık sorgular için genetik bir algoritma, sıfır yönetim kullanan maliyet tabanlı bir optimize edicidir.
H2 kaydırılabilir ve güncellenebilir sonuç seti desteği, büyük sonuç kümesi, harici sonuç sıralama, fonksiyonlar bir sonuç kümesi döndürebilir.
H2, şifrelenmiş veri tabanı (AES), SHA-256 şifre şifreleme, şifreleme işlevleri ve SSL'yi destekler.
H2 Veritabanındaki Bileşenler
H2 Veritabanını kullanmak için aşağıdaki bileşenlere sahip olmanız gerekir -
- Bir web tarayıcısı
- H2 konsol sunucusu
Bu bir istemci / sunucu uygulamasıdır, bu nedenle onu çalıştırmak için hem sunucu hem de istemci (bir tarayıcı) gerekir.
H2, Java ile yazılmış bir veritabanıdır. Bu veritabanını JDBC kullanarak uygulamamıza kolayca yerleştirebiliriz. Bunu birçok farklı platformda veya Java Runtime Environment'ın herhangi bir sürümünde çalıştırabiliriz. Ancak veri tabanını kurmadan önce sistemde Java kurulu olmalıdır.
Java Kurulumunu Doğrulayın
Sisteme JDK yüklüyse, Java sürümünü doğrulamak için aşağıdaki komutu deneyin.
java –version
JDk sisteme başarıyla yüklendiyse, aşağıdaki çıktıyı alacağız.
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 sistemde yüklü değilse, o zaman için aşağıdaki bağlantıyı ziyaret JDK'yi yükleyin .
H2 Veritabanını Kurun
Bu veritabanını birçok farklı platformda çalıştırabiliriz. Bu bölümde, Windows üzerinde H2 Veritabanı kurulumu hakkında bilgi edineceğiz.
Aşağıda, H2 Veritabanını Windows işletim sistemine kurma adımları verilmiştir.
Adım 1: H2 Kurulum Dosyasını İndirin
Verilen bağlantıdan H2 Veritabanının en son sürümünü indirin . Bu bağlantıda, H2 veritabanının en son sürümünü iki türde alacaksınız. Biri Windows Installer türü (yani .exe dosyası) ve ikincisi, diğer işletim sistemleri için Platformdan Bağımsız zip dosyasıdır.
.Exe dosyasını indirdikten sonra Windows tarafından desteklenen H2 veritabanını indirmek için Windows yükleyiciye tıklayın. Bu durumda, 1.4.192 sürümüyle H2 Database kullanıyoruz.
Adım 2: H2 Veritabanını Kurun
İndirdikten sonra, İndirilenler dizininde H2 Windows yükleyici dosyasını (yani h2-setup-yyyy-mm-dd.exe) alırız. H2 Veritabanının kurulum sürecini başlatmak için, kurulum dosyasına çift tıklayın.
Aşağıdaki ekran, kurulum işleminin ilk adımıdır. Aşağıdaki ekran görüntüsünde gösterildiği gibi H2 veritabanı sunucusunu kurmak istediğimiz bir yol sağlayın.
Yukarıdaki ekran görüntüsünde görüldüğü gibi, varsayılan olarak C:\ProgramFiles (x86)\H2hedef klasör olarak. Sonraki adıma geçmek için ileri'yi tıklayın. Aşağıdaki ekran açılır.
Yukarıdaki ekran görüntüsünde, yükleme işlemini başlatmak için Yükle düğmesine tıklayın. Kurulumdan sonra aşağıdaki ekran görüntüsünü alıyoruz.
Kurulum işlemini tamamlamak için Finish'e tıklayın.
Adım 3: H2 Veritabanı Kurulumunu Doğrulayın
Kurulumdan sonra, sistemdeki veritabanı kurulumunu doğrulayalım. Windows → H2 Console yazın → H2 konsol simgesine tıklayın. URL'ye bağlanınhttp://localhost:8082. Bağlanma anında, H2 veri tabanı aşağıdaki ekran görüntüsünde gösterildiği gibi veri tabanı kaydını isteyecektir.
Yukarıdaki iletişim kutusunda Kaydedilen Ayarlar, Ayarlar Adı, Sürücü Sınıfı, JDBC URL'si, Kullanıcı Adı ve Şifre gibi tüm ayrıntıları doldurun. JDBC URL'sinde, veritabanının bulunduğunu ve veritabanı adını belirtin. Kullanıcı Adı ve Parola, veritabanının kullanıcı adı ve parolası için alanlardır. Bağlan'a tıklayın.
Aşağıdaki ekran görüntüsünde gösterildiği gibi Veritabanı karşılama sayfası açılır.
Select komutu, bir tablodan veya birden çok tablodan kayıt verilerini almak için kullanılır. Bir seçme sorgusu tasarlarsak, verileri adı verilen sonuç tablosu biçiminde döndürür.result sets.
Sözdizimi
SELECT ifadesinin temel sözdizimi aşağıdaki gibidir -
SELECT [ TOP term ] [ DISTINCT | ALL ] selectExpression [,...]
FROM tableExpression [,...] [ WHERE expression ]
[ GROUP BY expression [,...] ] [ HAVING expression ]
[ { UNION [ ALL ] | MINUS | EXCEPT | INTERSECT } select ] [ ORDER BY order [,...] ]
[ [ LIMIT expression ] [ OFFSET expression ] [ SAMPLE_SIZE rowCountInt ] ]
[ FOR UPDATE ]
Mevcut tüm alanları getirmek için aşağıdaki sözdizimini kullanın.
SELECT * FROM table_name;
Misal
Aşağıdaki kayıtlara sahip MÜŞTERİ tablosunu düşünün -
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Verilen verilerle birlikte müşteri tablosunu elde etmek için aşağıdaki sorguları yürütün.
CREATE TABLE CUSTOMER (id number, name varchar(20), age number, address varchar(20),
salary number);
INSERT into CUSTOMER values (1, 'Ramesh', 32, 'Ahmedabad', 2000);
INSERT into CUSTOMER values (2, 'Khilan', 25, 'Delhi', 1500);
INSERT into CUSTOMER values (3, 'kaushik', 23, 'Kota', 2000);
INSERT into CUSTOMER values (4, 'Chaitali', 25, 'Mumbai', 6500);
INSERT into CUSTOMER values (5, 'Hardik', 27, 'Bhopal', 8500);
INSERT into CUSTOMER values (6, 'Komal', 22, 'MP', 4500);
INSERT into CUSTOMER values (7, 'Muffy', 24, 'Indore', 10000);
Aşağıdaki komut, MÜŞTERİ tablosunda bulunan müşterilerin ID, İsim ve Maaş alanlarını getirecek bir örnektir.
SELECT ID, NAME, SALARY FROM CUSTOMERS;
Yukarıdaki komut aşağıdaki sonucu verir.
+----+----------+----------+
| ID | NAME | SALARY |
+----+----------+----------+
| 1 | Ramesh | 2000.00 |
| 2 | Khilan | 1500.00 |
| 3 | kaushik | 2000.00 |
| 4 | Chaitali | 6500.00 |
| 5 | Hardik | 8500.00 |
| 6 | Komal | 4500.00 |
| 7 | Muffy | 10000.00 |
+----+----------+----------+
MÜŞTERİLER tablosunun tüm alanlarını getirmek için aşağıdaki sorguyu kullanın.
SQL> SELECT * FROM CUSTOMERS;
Yukarıdaki sorgu aşağıdaki sonucu verir -
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
SQL INSERT deyimi, veritabanındaki bir tabloya yeni veri satırları eklemek için kullanılır.
Sözdizimi
INSERT INTO deyiminin temel sözdizimi aşağıdadır.
INSERT INTO tableName
{ [ ( columnName [,...] ) ]
{ VALUES
{ ( { DEFAULT | expression } [,...] ) } [,...] | [ DIRECT ] [ SORTED ] select } } |
{ SET { columnName = { DEFAULT | expression } } [,...] }
Bu INSERT deyimini kullanarak bir tabloya yeni bir kayıt veya yeni satırlar ekleyebiliriz. DIRECT cümlesini kullanırken, sonuçlar herhangi bir ara adım olmaksızın doğrudan hedef tabloya etkilenir. Ancak, tablonun tüm sütunları için değer eklerken, değerlerin sırasının tablodaki sütunlarla aynı sırada olduğundan emin olun.
Misal
Bir örnek alalım ve aşağıdaki verilen kayıtları Müşteri tablosuna eklemeye çalışalım.
İD | İsim | Yaş | Adres | Maaş |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000 |
2 | Khilan | 25 | Delhi | 1500 |
3 | Kaushik | 23 | Kota | 2000 |
4 | Chaitail | 25 | Bombay | 6500 |
5 | Hardik | 27 | Bhopal | 8500 |
6 | Komal | 22 | MP | 4500 |
7 | Muffy | 24 | Indore | 10000 |
Aşağıdaki komutları uygulayarak verilen tüm kayıtları müşteri tablosuna alabiliriz.
INSERT INTO CUSTOMER VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000);
INSERT INTO CUSTOMER VALUES (2, 'Khilan', 25, 'Delhi', 1500);
INSERT INTO CUSTOMER VALUES (3, 'kaushik', 23, 'Kota', 2000);
INSERT INTO CUSTOMER VALUES (4, 'Chaitali', 25, 'Mumbai', 6500);
INSERT INTO CUSTOMER VALUES (5, 'Hardik', 27, 'Bhopal', 8500);
INSERT INTO CUSTOMER VALUES (6, 'Komal', 22, 'MP', 4500);
INSERT INTO CUSTOMER VALUES (7, 'Muffy', 24, 'Indore', 10000);
UPDATE sorgusu, bir tablodaki mevcut kayıtları güncellemek veya değiştirmek için kullanılır. Seçili satırları güncellemek için UPDATE sorgusu ile WHERE cümlesini kullanabiliriz, aksi takdirde tüm satırlar etkilenir.
Sözdizimi
UPDATE sorgusunun temel sözdizimi aşağıdadır.
UPDATE tableName [ [ AS ] newTableAlias ] SET
{ { columnName = { DEFAULT | expression } } [,...] } |
{ ( columnName [,...] ) = ( select ) }
[ WHERE expression ] [ ORDER BY order [,...] ] [ LIMIT expression ]
Bu UPDATE sözdiziminde, AND veya OR cümlelerini kullanarak birden fazla koşulu birleştirebiliriz.
Misal
Aşağıdaki kayıtlara sahip MÜŞTERİ tablosunu düşünün.
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Verilen verilerle birlikte müşteri tablosunu da almak istiyorsanız aşağıdaki sorguları yürütün.
CREATE TABLE CUSTOMER (id number, name varchar(20), age number, address varchar(20),
salary number);
INSERT into CUSTOMER values (1, 'Ramesh', 32, 'Ahmedabad', 2000);
INSERT into CUSTOMER values (2, 'Khilan', 25, 'Delhi', 1500);
INSERT into CUSTOMER values (3, 'kaushik', 23, 'Kota', 2000);
INSERT into CUSTOMER values (4, 'Chaitali', 25, 'Mumbai', 6500);
INSERT into CUSTOMER values (5, 'Hardik', 27, 'Bhopal', 8500);
INSERT into CUSTOMER values (6, 'Komal', 22, 'MP', 4500);
INSERT into CUSTOMER values (7, 'Muffy', 24, 'Indore', 10000);
Aşağıdaki komut, kimliği 6 olan bir müşteri için ADDRESS'i güncelleyecek bir örnektir -
UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;
Şimdi, MÜŞTERİLER tablosu aşağıdaki kayıtlara sahip olacaktır. Aşağıdaki sorguyu yürüterek müşteri tablo kayıtlarını kontrol edebiliriz.
SELECT * FROM CUSTOMERS;
Yukarıdaki sorgu aşağıdaki sonucu verir.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | Pune | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
MÜŞTERİLER tablosundaki tüm ADRES ve MAAŞ sütun değerlerini değiştirmek için WHERE cümlesini kullanmamız gerekmez. UPDATE sorgusu aşağıdaki gibi olacaktır -
UPDATE CUSTOMERS SET ADDRESS = 'Pune', SALARY = 1000.00;
Şimdi, MÜŞTERİLER tablosu aşağıdaki kayıtlara sahip olacaktır. Aşağıdaki sorguyu yürüterek müşteri tablo kayıtlarını kontrol edebiliriz.
SELECT * FROM CUSTOMERS;
Yukarıdaki sorgu aşağıdaki sonucu verir -
+----+----------+-----+---------+---------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+---------+---------+
| 1 | Ramesh | 32 | Pune | 1000.00 |
| 2 | Khilan | 25 | Pune | 1000.00 |
| 3 | kaushik | 23 | Pune | 1000.00 |
| 4 | Chaitali | 25 | Pune | 1000.00 |
| 5 | Hardik | 27 | Pune | 1000.00 |
| 6 | Komal | 22 | Pune | 1000.00 |
| 7 | Muffy | 24 | Pune | 1000.00 |
+----+----------+-----+---------+---------+
SQL DELETE sorgusu, bir tablodan var olan kayıtları silmek için kullanılır. Seçilen kayıtları silmek için WHERE cümlesini DELETE sorgusu ile kullanabiliriz, aksi takdirde tüm kayıtlar silinecektir.
Sözdizimi
Silme komutunun genel sorgu söz dizimi aşağıdadır.
DELETE [ TOP term ] FROM tableName [ WHERE expression ] [ LIMIT term ]
Yukarıdaki sözdizimi, satırları bir tablodan siler. TOP veya LIMIT belirtilirse, en fazla belirtilen sayıda satır silinir (sıfır veya sıfırdan küçükse sınır yoktur).
Misal
Aşağıdaki kayıtlara sahip MÜŞTERİ tablosunu düşünün.
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Aşağıdaki komut, kimliği 6 olan müşterinin detaylarını silecektir.
DELETE FROM CUSTOMERS WHERE ID = 6;
Yukarıdaki komutu uyguladıktan sonra, aşağıdaki komutu uygulayarak Müşteri tablosunu kontrol edin.
SELECT * FROM CUSTOMERS;
Yukarıdaki komut aşağıdaki çıktıyı üretir -
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
CUSTOMERS tablosundaki tüm kayıtları SİLMEK istiyorsak WHERE cümlesini kullanmayız. DELETE sorgusu aşağıdaki gibi olacaktır.
DELETE FROM CUSTOMER;
Yukarıdaki komutu uyguladıktan sonra, Müşteri tablosunda hiçbir kayıt bulunmayacaktır.
BACKUP, veritabanı yedeklemesini ayrı bir .zip dosyasına almak için kullanılan komuttur. Nesneler kilitlenmez ve yedekleme yapıldığında işlem günlüğü de kopyalanır. Bu komutu yürütmek için yönetici hakları gereklidir.
Sözdizimi
Yedekleme komutunun genel sözdizimi aşağıdadır.
BACKUP TO fileNameString;
Misal
Bu örnekte, mevcut veritabanının bir yedeğini alalım. backup.zipdosya. Aynısı için aşağıdaki komutu kullanın.
BACKUP TO 'backup.zip';
Yukarıdaki komutu çalıştırdığınızda, yerel dosya sisteminizde backup.zip dosyasını alacaksınız.
CALL, H2 veritabanı sunucusuna ait bir SQL komutudur. Bu komut, basit bir ifadeyi hesaplamak için kullanılır. Verilen ifadenin sonucunu tek bir sütun alanında döndürür. Bir sonuç dizisi döndürdüğünde, dizideki her öğe bir sütun değeri olarak görüntülenir.
Sözdizimi
Aşağıda CALL komutunun genel sözdizimi verilmiştir.
CALL expression;
Bu sözdiziminde aritmetik ifadeyi kullanabiliriz.
Misal
Bir örnek alalım ve call komutunu kullanarak bir aritmetik ifade (15 * 25) çalıştıralım.
CALL 15*25;
Yukarıdaki komut aşağıdaki çıktıyı üretir.
375 |
---|
375 |
EXPLAIN komutu, bir ifadenin yürütme planını görüntüler. EXPLAIN ANALYZE komutunu kullanarak bir ifade yürüttüğümüzde, sorgu planı her tablo için gerçek satır tarama sayısını içerecektir.
Sözdizimi
EXPLAIN komutunun genel sözdizimi aşağıdadır.
EXPLAIN { [ PLAN FOR ] | ANALYZE } { select | insert | update | delete | merge}
Bu sözdizimiyle birlikte seçebilir, ekleyebilir, silebilir ve birleştirebiliriz.
Misal
Bu örnek, kimliği 1 olan müşterinin sorgu planı ayrıntılarını açıklar.
EXPLAIN SELECT * FROM CUSTOMER WHERE ID = 1;
Yukarıdaki komut aşağıdaki çıktıyı üretir -
MERGE komutu, mevcut satırları güncellemek ve bir tabloya yeni satırlar eklemek için kullanılır. Birincil anahtar sütunu, bu komutu kullanırken önemli bir rol oynar; satırı bulmak için kullanılır.
Sözdizimi
MERGE komutunun genel sözdizimi aşağıdadır.
MERGE INTO tableName [ ( columnName [,...] ) ]
[ KEY ( columnName [,...] ) ]
{ VALUES { ( { DEFAULT | expression } [,...] ) } [,...] | select }
Yukarıdaki sözdiziminde, KEY yan tümcesi birincil anahtar sütun adını belirtmek için kullanılır. VALUES cümlesiyle birlikte, ilkel değerleri eklemek için kullanabiliriz veya select komutunu kullanarak bu tabloya başka bir tablo değeri alıp saklayabiliriz.
Misal
Bu örnekte, Müşteriler tablosuna yeni bir kayıt eklemeye çalışalım. Tablodaki yeni kaydın ayrıntıları aşağıdadır.
Sütun adı | Değer |
---|---|
İD | 8 |
İSİM | Lokesh |
YAŞ | 32 |
ADRES | Haydarabad |
MAAŞ | 2500 |
Aşağıdaki sorguyu kullanarak, verilen kaydı H2 veritabanı sorgusuna ekleyelim.
MERGE INTO CUSTOMER KEY (ID) VALUES (8, 'Lokesh', 32, 'Hyderabad', 2500);
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
Update count: 1
Aşağıdaki sorguyu yürüterek Müşteri tablosunun kayıtlarını doğrulayalım.
SELECT * FROM CUSTOMER;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
İD | İsim | Yaş | Adres | Maaş |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000 |
2 | Khilan | 25 | Delhi | 1500 |
3 | Kaushik | 23 | Kota | 2000 |
4 | Chaitali | 25 | Bombay | 6500 |
5 | Hardik | 27 | Bhopal | 8500 |
6 | Komal | 22 | MP | 4500 |
7 | Muffy | 24 | Indore | 10000 |
8 | Lokesh | 32 | Haydarabad | 2500 |
Şimdi kaydı kullanarak güncellemeyi deneyelim. Mergekomut. Aşağıda güncellenecek kaydın ayrıntıları verilmiştir.
Sütun adı | Değer |
---|---|
İD | 8 |
İSİM | Loki |
YAŞ | 32 |
ADRES | Haydarabad |
MAAŞ | 3000 |
Verilen kaydı H2 veritabanı sorgusuna eklemek için aşağıdaki sorguyu kullanın.
MERGE INTO CUSTOMER KEY (ID) VALUES (8, 'Loki', 32, 'Hyderabad', 3000);
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
Update count: 1
Aşağıdaki sorguyu yürüterek Müşteri tablosunun kayıtlarını doğrulayalım.
SELECT * FROM CUSTOMER;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir -
İD | İsim | Yaş | Adres | Maaş |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000 |
2 | Khilan | 25 | Delhi | 1500 |
3 | Kaushik | 23 | Kota | 2000 |
4 | Chaitali | 25 | Bombay | 6500 |
5 | Hardik | 27 | Bhopal | 8500 |
6 | Komal | 22 | MP | 4500 |
7 | Muffy | 24 | Indore | 10000 |
8 | Loki | 32 | Haydarabad | 3000 |
SHOW, tablonun Şemalar, Tablolar veya Sütunların listesini görüntülemek için kullanılan bir komuttur.
Sözdizimi
Aşağıda SHOW komutunun genel sözdizimi verilmiştir.
SHOW { SCHEMAS | TABLES [ FROM schemaName ] |
COLUMNS FROM tableName [ FROM schemaName ] }
Misal
Aşağıdaki komut, mevcut veritabanındaki tabloların listesini almak için kullanılabilir.
SHOW TABLES;
Yukarıdaki komut aşağıdaki çıktıyı üretir.
TABLO İSMİ | TABLE_SCHEMA |
---|---|
MÜŞTERİ | HALKA AÇIK |
EMP | HALKA AÇIK |
CREATE, H2 Veritabanı sunucusunda Tablolar, Şemalar, Sıralar, Görünümler ve Kullanıcılar oluşturmak için kullanılan genel bir SQL komutudur.
Tablo Oluştur
Tablo Oluştur, mevcut veritabanında kullanıcı tanımlı bir tablo oluşturmak için kullanılan bir komuttur.
Sözdizimi
Tablo Oluştur komutu için genel sözdizimi aşağıdadır.
CREATE [ CACHED | MEMORY ] [ TEMP | [ GLOBAL | LOCAL ] TEMPORARY ]
TABLE [ IF NOT EXISTS ] name
[ ( { columnDefinition | constraint } [,...] ) ]
[ ENGINE tableEngineName [ WITH tableEngineParamName [,...] ] ]
[ NOT PERSISTENT ] [ TRANSACTIONAL ]
[ AS select ]
Tablo Oluştur komutunun genel sözdizimini kullanarak, önbelleğe alınmış tablolar, bellek tabloları ve geçici tablolar gibi farklı tablo türleri oluşturabiliriz. Aşağıda verilen sözdiziminden farklı cümlecikleri açıklayan liste bulunmaktadır.
CACHED- Önbelleğe alınan tablolar, normal tablolar için varsayılan türdür. Bu, satır sayısının ana bellek ile sınırlı olmadığı anlamına gelir.
MEMORY- Bellek tabloları, geçici tablolar için varsayılan türdür. Bu, bellek tablolarının çok büyük olmaması gerektiği ve indeks verilerinin ana bellekte tutulması gerektiği anlamına gelir.
TEMPORARY- Veritabanını kapatırken veya açarken geçici tablolar silinir. Temel olarak, geçici tablolar iki türdendir -
GLOBAL tür - Tüm bağlantılardan erişilebilir.
YEREL tip - Mevcut bağlantı ile erişilebilir.
Geçici tablolar için varsayılan tip global tiptir. Geçici tablo CREATE CACHED TABLE kullanılarak oluşturulmadıkça, geçici tabloların dizinleri ana bellekte tutulur.
ENGINE - MOTOR seçeneği yalnızca özel tablo uygulamaları kullanıldığında gereklidir.
NOT PERSISTENT - Tüm tablo verilerini bellekte tutmak için bir değiştiricidir ve veritabanı kapatıldığında tüm satırlar kaybolur.
TRANSACTIONAL - Açık bir işlemi gerçekleştiren bir anahtar sözcüktür ve bu komut yalnızca geçici tabloları destekler.
Misal
Bu örnekte, aşağıdaki verilen verileri kullanarak tutorials_tbl adlı bir tablo oluşturalım.
Sr.No | Sütun adı | Veri tipi |
---|---|---|
1 | İD | Int |
2 | Başlık | Varchar (50) |
3 | Yazar | Varchar 'e Tıklayın (20) |
4 | Teslim tarihi | Tarih |
Aşağıdaki sorgu bir tablo oluşturmak için kullanılır tutorials_tbl verilen sütun verileriyle birlikte.
CREATE TABLE tutorials_tbl (
id INT NOT NULL,
title VARCHAR(50) NOT NULL,
author VARCHAR(20) NOT NULL,
submission_date DATE
);
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(0) rows effected
Şema Oluştur
Şema Oluştur, belirli bir yetkilendirme altında (şu anda kayıtlı kullanıcı altında) kullanıcıya bağlı bir şema oluşturmak için kullanılan bir komuttur.
Sözdizimi
Şema Oluştur komutunun genel sözdizimi aşağıdadır.
CREATE SCHEMA [ IF NOT EXISTS ] name [ AUTHORIZATION ownerUserName ]
Yukarıdaki genel sözdiziminde, YETKİLENDİRME, ilgili kullanıcı adını sağlamak için kullanılan bir anahtar sözcüktür. Bu komut isteğe bağlıdır, yani kullanıcı adını sağlamazsak, o zaman mevcut kullanıcıyı dikkate alır. Komutu yürüten kullanıcı, sahibinin yanı sıra yönetici haklarına da sahip olmalıdır.
Bu komut, bu bağlantıda açık bir işlem gerçekleştirir.
Misal
Bu örnekte, adlı bir şema oluşturalım. test_schema SA kullanıcısı altında, aşağıdaki komutu kullanarak.
CREATE SCHEMA test_schema AUTHORIZATION sa;
Yukarıdaki komut aşağıdaki çıktıyı üretir.
(0) rows effected
Sıra Oluştur
Sıra, id veya herhangi bir rastgele sütun değeri için bir sıra izleyerek bir sayı üretmek için kullanılan bir kavramdır.
Sözdizimi
Aşağıda, create sequence komutunun genel sözdizimi verilmiştir.
CREATE SEQUENCE [ IF NOT EXISTS ] newSequenceName [ START WITH long ]
[ INCREMENT BY long ]
[ MINVALUE long | NOMINVALUE | NO MINVALUE ]
[ MAXVALUE long | NOMAXVALUE | NO MAXVALUE ]
[ CYCLE long | NOCYCLE | NO CYCLE ]
[ CACHE long | NOCACHE | NO CACHE ]
Bu genel sözdizimi, bir dizi oluşturmak için kullanılır. Bir dizinin veri türüBIGINT. Bu sırada, işlem geri alındığında bile değerler asla yeniden kullanılmaz.
Misal
Bu örnekte, adında bir dizi oluşturalım. SEQ_ID, aşağıdaki sorguyu kullanarak.
CREATE SEQUENCE SEQ_ID;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(0) rows effected
ALTER, tablo yapısını farklı maddeler ekleyerek değiştirmek için kullanılan bir komuttur. alterkomut. Senaryoya göre, alter komutuna ilgili cümle eklememiz gerekir. Bu bölümde, alter komutunun çeşitli senaryolarını tartışacağız.
Tabloyu Değiştir Ekle
Tablo Değiştir Ekle, ilgili veri türü ile birlikte tabloya yeni bir sütun eklemek için kullanılan bir komuttur. Bu komut, bu bağlantıdaki işlemi gerçekleştirir.
Sözdizimi
Tablo Ekle komutunu değiştir komutunun genel sözdizimi aşağıdadır.
ALTER TABLE [ IF EXISTS ] tableName ADD [ COLUMN ]
{ [ IF NOT EXISTS ] columnDefinition [ { BEFORE | AFTER } columnName ]
| ( { columnDefinition } [,...] ) }
Misal
Bu örnekte, yeni bir sütun ekleyeceğiz start_date masaya tutorials_tbl. Başlangıç_tarihi için veri türü Tarih'tir. Yeni bir sütun eklemek için sorgu aşağıdadır.
ALTER TABLE tutorials_tbl ADD start_date DATE;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(6) rows effected
Tabloyu Değiştir Kısıtlama Ekle
Tablo değiştir kısıtlama ekleme, tabloya birincil anahtar, yabancı anahtar, boş değil vb. Gibi farklı kısıtlamalar eklemek için kullanılan bir komuttur.
Henüz mevcut değilse gerekli dizinler otomatik olarak oluşturulur. Benzersiz kısıtlamayı kontrol etmeyi devre dışı bırakmak mümkün değildir. Bu komut, bu bağlantıda açık bir işlem gerçekleştirir.
Sözdizimi
Alter table add constraint komutunun genel sözdizimi aşağıdadır.
ALTER TABLE [ IF EXISTS ] tableName ADD constraint [ CHECK | NOCHECK ]
Misal
Bu örnekte, bir birincil anahtar kısıtlaması ekleyelim (tutorials_tbl_pk) tablonun sütun kimliğine tutorials_tbl, aşağıdaki sorguyu kullanarak.
ALTER TABLE tutorials_tbl ADD CONSTRAINT tutorials_tbl_pk PRIMARYKEY(id);
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(6) row (s) effected
Tabloyu Yeniden Adlandırma Kısıtlamasını Değiştir
Bu komut, belirli bir ilişki tablosunun kısıtlama adını yeniden adlandırmak için kullanılır. Bu komut, bu bağlantıda açık bir işlem gerçekleştirir.
Sözdizimi
Aşağıda, Alter Table Rename Constraint komutunun genel sözdizimi yer almaktadır.
ALTER TABLE [ IF EXISTS ] tableName RENAME oldConstraintName TO newConstraintName
Bu sözdizimini kullanırken, eski kısıtlama adının ilgili sütunda olması gerektiğinden emin olun.
Misal
Bu örnekte, tablonun birincil anahtar kısıtlama adını değiştireceğiz tutorials_tbl itibaren tutorials_tbl_pk -e tutorials_tbl_pk_constraint. Bunu yapmak için sorgu aşağıdadır.
ALTER TABLE tutorials_tbl RENAME CONSTRAINT
tutorials_tbl_pk TO tutorials_tbl_pk_constraint;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(1) row (s) effected
Tabloyu Değiştir Sütunu Değiştir
Bu komut, belirli bir tablonun sütununun yapısını ve özelliklerini değiştirmek için kullanılır. Özelliklerin değiştirilmesi, bir sütunun veri türünü değiştirmek, bir sütunu yeniden adlandırmak, kimlik değerini değiştirmek veya seçiciliği değiştirmek anlamına gelir.
Sözdizimi
Aşağıda, Tabloyu Değiştir Sütunu Değiştir komutunun genel sözdizimi verilmiştir.
ALTER TABLE [ IF EXISTS ] tableName ALTER COLUMN columnName
{ { dataType [ DEFAULT expression ] [ [ NOT ] NULL ] [ AUTO_INCREMENT | IDENTITY ] }
| { RENAME TO name }
| { RESTART WITH long }
| { SELECTIVITY int }
| { SET DEFAULT expression }
| { SET NULL }
| { SET NOT NULL } }
Yukarıdaki sözdiziminde -
RESTART - komut, otomatik artış sütununun sonraki değerini değiştirir.
SELECTIVITY- komut bir sütun için seçiciliği (1-100) ayarlar. Seçicilik değerine bağlı olarak, sütunun değerini görüntüleyebiliriz.
SET DEFAULT - bir sütunun varsayılan değerini değiştirir.
SET NULL - sütunu NULL'a izin verecek şekilde ayarlar.
SET NOT NULL - sütunu NOT NULL'a izin verecek şekilde ayarlar.
Misal
Bu örnekte, tablonun sütununu yeniden adlandıracağız tutorials_tbl itibaren Title -e Tutorial_Title aşağıdaki sorguyu kullanarak.
ALTER TABLE tutorials_tbl ALTER COLUMN title RENAME TO tutorial_title;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(0) row(s) effected
Benzer şekilde ALTER komutu ile farklı senaryolar gerçekleştirebiliriz.
DROP, genel SQL gramerinden alınan bir komuttur. Bu komut, bir veritabanı bileşenini ve yapısını bellekten silmek için kullanılır. Bu bölümde tartışacağımız Drop komutu ile farklı senaryolar var.
Bırak Tablo
Drop Table, ilgili tabloyu ve yapısını silen bir komuttur.
Sözdizimi
Tabloyu Bırak komutunun genel sözdizimi aşağıdadır.
DROP TABLE [ IF EXISTS ] tableName [,...] [ RESTRICT | CASCADE ]
RESTRICT kullanıyorsak ve bağımlı görünümlere sahip tablo mevcutsa komut başarısız olacaktır. CASCADE anahtar kelimesini kullandığımızda tüm bağımlı görünümler atılır.
Misal
Bu örnekte, aşağıdaki sorguyu kullanarak test adlı bir tablo bırakacağız.
DROP TABLE test;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(6) row (s) effected
Bırak Şeması
Drop Şeması, veritabanı sunucusundan ilgili bir şemayı bırakan bir komuttur. Mevcut şemadan çalışmayacaktır.
Sözdizimi
DROP SCHEMA [ IF EXISTS ] schemaName
Misal
Bu örnekte, adlı bir şema bırakacağız test_schema aşağıdaki sorguyu kullanarak.
DROP SCHEMA TEST_SCHEMA;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(0) row(s) effected
Bırak Sırası
Bırak Sırası, tablo yapısından bir sıra bırakmak için kullanılan bir komuttur.
Sözdizimi
Drop Sequence komutunun genel sözdizimi aşağıdadır.
DROP SEQUENCE [ IF EXISTS ] sequenceName
Bu komut, bu bağlantıda açık bir işlem gerçekleştirir.
Misal
Bu örnekte, adlı bir dizi bırakacağız sequence_id. Aşağıdaki komuttur.
DROP SEQUENCE sequence_id;
Yukarıdaki komut aşağıdaki çıktıyı üretir.
(0) row (s) effected
Görünümü Bırak
Drop View, mevcut görünümü bırakmak için kullanılan bir komuttur. CASCADE yan tümcesi kullanılırsa tüm bağımlı görünümler de bırakılır.
Sözdizimi
Drop View komutunun genel sözdizimi aşağıdadır.
DROP VIEW [ IF EXISTS ] viewName [ RESTRICT | CASCADE ]
Misal
Bu örnekte, adlı bir görünüm bırakacağız sample_view aşağıdaki sorguyu kullanarak.
DROP VIEW sample_view;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(0) row (s) effected
TRUNCATE, verileri tablodan silmek için kullanılan bir komuttur. WHERE yan tümcesi olmayan DELETE FROM'un aksine, bu komut geri alınamaz. Bu komut, bu bağlantıda açık bir işlem gerçekleştirir.
Sözdizimi
Truncate komutunun genel sözdizimi aşağıdadır.
TRUNCATE TABLE tableName
Misal
Bu örnekte, adlı bir tabloyu kısaltacağız test aşağıdaki sorguyu kullanarak.
TRUNCATE TABLE test;
Yukarıdaki sorgu aşağıdaki çıktıyı üretir.
(6) row (s) effected
COMMIT, işlemi gerçekleştirmek için kullanılan SQL gramerinden bir komuttur. Ya belirli bir işlemi taahhüt edebiliriz ya da halihazırda yürütülen işlemi gerçekleştirebiliriz.
Sözdizimi
COMMIT komutu için iki farklı sözdizimi vardır.
Aşağıda, geçerli işlemi yürütmek için commit komutunun genel sözdizimi verilmiştir.
COMMIT [ WORK ]
Aşağıda, belirli bir işlemi gerçekleştirmek için commit komutunun genel sözdizimi verilmiştir.
COMMIT TRANSACTION transactionName
örnek 1
Bu örnekte, aşağıdaki komutu kullanarak mevcut işlemi gerçekleştirelim.
COMMIT
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Committed successfully
Örnek 2
Bu örnekte, adlı işlemi gerçekleştireceğiz tx_test aşağıdaki komutu kullanarak.
COMMIT TRANSACTION tx_test;
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Committed successfully
Grant, bir tabloya, kullanıcıya veya role hakları vermek için kullanılan SQL dilbilgisinden gelen bir komuttur. Bu komutu yürütmek için yönetici hakları gereklidir. Bu komut, bu bağlantıda açık bir işlem gerçekleştirir.
Bu bölümde, Grant komutunun farklı senaryolarını tartışacağız.
Hakkı Ver
Hakkı Ver, bir tabloya, kullanıcıya veya role yönetici hakları sağlayan bir komuttur.
Sözdizimi
Grant komutunun genel sözdizimi aşağıdadır.
GRANT { SELECT | INSERT | UPDATE | DELETE | ALL } [,...] ON
{ { SCHEMA schemaName } | { tableName [,...] } }
TO { PUBLIC | userName | roleName }
Misal
Bu örnekte, aşağıdaki komutu kullanarak test tablosunu salt okunur olarak vereceğiz.
GRANT SELECT ON TEST TO READONLY
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Grant successfully
Herhangi Bir Şemayı Değiştirin
Grant Alter Any Schema, ilgili kullanıcıya şema değiştirme hakları verme komutudur.
Syntax
Following is the generic syntax of the Grant Alter Any Schema command.
GRANT ALTER ANY SCHEMA TO userName
Example
In this example, we will grant altering privileges of a schema to a user named test_user. Make sure that test_user exists. Following is the query to grant altering privileges.
GRANT ALTER ANY SCHEMA TO test_user;
The above query produces the following output.
Granted successfully to test_user
SAVEPOINT is a command used to temporarily save the transaction. It is better to maintain savepoints in your transaction as it is helpful to roll back the transaction to the respective Savepoint whenever necessary.
Syntax
Following is the generic syntax of the Savepoint command.
SAVEPOINT savepointName
Example
In this example, we will create a Savepoint named Half_Done using the following command.
SAVEPOINT Half_Done;
The above command produces the following output.
Savepoint created
ROLLBACK is a command from the SQL grammar used to roll back the transaction to a Savepoint or to the previous transaction. By using this command, we can either roll back to the specific Savepoint or we can roll back to the previous executed transaction.
Syntax
There are two different syntaxes for ROLLABCK command.
Following is the generic syntax for the rollback command.
ROLLBACK [ TO SAVEPOINT savepointName ]
Following is the generic syntax of the Rollback command to the specific transaction.
ROLLBACK TRANSACTION transactionName
Example 1
In this example, we will roll back the current transaction to a Savepoint named sp1_test using the following command.
ROLLBACK sp1_test;
The above command produces the following output.
Rollback successfully
Example 2
In the following example, we will roll back the complete transaction named tx_test using the given command.
ROLLBACK TRANSACTION tx_test;
The above command produces the following output.
Rollback successfully
H2 is a JAVA database. We can interact with this database by using JDBC. In this chapter, we will see how to create a JDBC connection with H2 database and the CRUD operations with the H2 database.
Generally, there are five steps to create a JDBC connection.
Step 1 − Registering the JDBC database driver.
Class.forName ("org.h2.Driver");
Step 2 − Opening the connection.
Connection conn = DriverManager.getConnection ("jdbc:h2:~/test", "sa","");
Step 3 − Creating a statement.
Statement st = conn.createStatement();
Step 4 − Executing a statement and receiving Resultset.
Stmt.executeUpdate("sql statement");
Step 5 − Closing a connection.
conn.close();
Before moving on to create a full program, we need to add h2-1.4.192.jar file to CLASSPATH. We can get this jar from the folder C:\Program Files (x86)\H2\bin.
Create Table
In this example, we will write a program for create table. Consider a table named Registration having the following fields.
S.No | Column Name | Data Type | NOT NULL | Primary Key |
---|---|---|---|---|
1 | ID | Number | Yes | Yes |
2 | First | Varchar(255) | No | No |
3 | Last | Varchar(255) | No | No |
4 | Age | Number | No | No |
Following is an example program named H2jdbcCreateDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcCreateDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
//STEP 2: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//STEP 3: Execute a query
System.out.println("Creating table in given database...");
stmt = conn.createStatement();
String sql = "CREATE TABLE REGISTRATION " +
"(id INTEGER not NULL, " +
" first VARCHAR(255), " +
" last VARCHAR(255), " +
" age INTEGER, " +
" PRIMARY KEY ( id ))";
stmt.executeUpdate(sql);
System.out.println("Created table in given database...");
// STEP 4: Clean-up environment
stmt.close();
conn.close();
} catch(SQLException se) {
//Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
//Handle errors for Class.forName
e.printStackTrace();
} finally {
//finally block used to close resources
try{
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se){
se.printStackTrace();
} //end finally try
} //end try
System.out.println("Goodbye!");
}
}
Save the above program into H2jdbcCreateDemo.java. Compile and execute the above program by executing the following commands in the command prompt.
\>javac H2jdbcCreateDemo.java
\>java H2jdbcCreateDemo
The above command produces the following output.
Connecting to database...
Creating table in given database...
Created table in given database...
Goodbye!
After this execution, we can check the table created using the H2 SQL interface.
Insert Records
In this example, we will write a program for inserting records. Let us insert the following records into the table Registration.
ID | First | Last | Age |
---|---|---|---|
100 | Zara | Ali | 18 |
101 | Mahnaz | Fatma | 25 |
102 | Zaid | Khan | 30 |
103 | Sumit | Mital | 28 |
Following is an example program named H2jdbcInsertDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcInsertDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to a selected database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
System.out.println("Connected database successfully...");
// STEP 3: Execute a query
stmt = conn.createStatement();
String sql = "INSERT INTO Registration " + "VALUES (100, 'Zara', 'Ali', 18)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Registration " + "VALUES (101, 'Mahnaz', 'Fatma', 25)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Registration " + "VALUES (102, 'Zaid', 'Khan', 30)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Registration " + "VALUES(103, 'Sumit', 'Mittal', 28)";
stmt.executeUpdate(sql);
System.out.println("Inserted records into the table...");
// STEP 4: Clean-up environment
stmt.close();
conn.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Save the above program into H2jdbcInsertDemo.java. Compile and execute the above program by executing the following commands in the command prompt.
\>javac H2jdbcInsertDemo.java
\>java H2jdbcInsertDemo
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Connecting to a selected database...
Connected database successfully...
Inserted records into the table...
Goodbye!
Kaydı Oku
Bu örnekte, kayıtları okumak için bir program yazacağız. Tablodaki tüm kayıtları okumaya çalışalımRegistration.
Aşağıda adlı örnek bir program yer almaktadır H2jdbcRecordDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcReadDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// STEP 3: Execute a query
System.out.println("Connected database successfully...");
stmt = conn.createStatement();
String sql = "SELECT id, first, last, age FROM Registration";
ResultSet rs = stmt.executeQuery(sql);
// STEP 4: Extract data from result set
while(rs.next()) {
// Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
// Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
// STEP 5: Clean-up environment
rs.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Yukarıdaki programı H2jdbcReadDemo.java içine kaydedin. Komut isteminde aşağıdaki komutları uygulayarak yukarıdaki programı derleyin ve yürütün.
\>javac H2jdbcReadDemo.java
\>java H2jdbcReadDemo
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Connecting to a selected database...
Connected database successfully...
ID: 100, Age: 18, First: Zara, Last: Ali
ID: 101, Age: 25, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Goodbye!
Kayıtları Güncelle
Bu örnekte, kayıtları güncellemek için bir program yazacağız. Tablodaki tüm kayıtları okumaya çalışalımRegistration.
Aşağıda adlı örnek bir program yer almaktadır H2jdbcUpdateDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcUpdateDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to a database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// STEP 3: Execute a query
System.out.println("Connected database successfully...");
stmt = conn.createStatement();
String sql = "UPDATE Registration " + "SET age = 30 WHERE id in (100, 101)";
stmt.executeUpdate(sql);
// Now you can extract all the records
// to see the updated records
sql = "SELECT id, first, last, age FROM Registration";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
// Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
// Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
rs.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Yukarıdaki programı H2jdbcUpdateDemo.java içine kaydedin. Komut isteminde aşağıdaki komutları uygulayarak yukarıdaki programı derleyin ve yürütün.
\>javac H2jdbcUpdateDemo.java
\>java H2jdbcUpdateDemo
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Connecting to a selected database...
Connected database successfully...
ID: 100, Age: 30, First: Zara, Last: Ali
ID: 101, Age: 30, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Goodbye!
Kayıtları Sil
Bu örnekte kayıtları silmek için bir program yazacağız. Tablodaki tüm kayıtları okumaya çalışalımRegistration.
Aşağıda adlı örnek bir program yer almaktadır H2jdbcDeleteDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcDeleteDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// STEP 3: Execute a query
System.out.println("Creating table in given database...");
stmt = conn.createStatement();
String sql = "DELETE FROM Registration " + "WHERE id = 101";
stmt.executeUpdate(sql);
// Now you can extract all the records
// to see the remaining records
sql = "SELECT id, first, last, age FROM Registration";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
// Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
// Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
rs.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Yukarıdaki programı H2jdbcDeleteDemo.java içine kaydedin. Komut isteminde aşağıdaki komutları uygulayarak yukarıdaki programı derleyin ve yürütün.
\>javac H2jdbcDeleteDemo.java
\>java H2jdbcDeleteDemo
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Connecting to a selected database...
Connected database successfully...
ID: 100, Age: 30, First: Zara, Last: Ali
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Goodbye!