Baza danych H2 - szybki przewodnik
H2 to lekka baza danych Java typu open source. Może być osadzony w aplikacjach Java lub działać w trybie klient-serwer. Głównie bazę danych H2 można skonfigurować tak, aby działała jako baza danych zapisanych w pamięci, co oznacza, że dane nie będą przechowywane na dysku. Ze względu na wbudowaną bazę danych nie jest używana do rozwoju produkcyjnego, ale głównie do programowania i testowania.
Ta baza danych może być używana w trybie wbudowanym lub w trybie serwera. Poniżej przedstawiono główne cechy bazy danych H2 -
- Niezwykle szybki, open source, JDBC API
- Dostępne w trybach wbudowanych i serwerowych; bazy danych w pamięci
- Aplikacja konsoli oparta na przeglądarce
- Mały rozmiar - około 1,5 MB pliku jar
Funkcje bazy danych H2
Główne cechy bazy danych H2 są następujące -
Jest to niezwykle szybki silnik bazy danych.
H2 jest open source i napisany w Javie.
Obsługuje standardowe API SQL i JDBC. Może również korzystać ze sterownika ODBC PostgreSQL.
Posiada tryb wbudowany i tryb serwera.
Obsługuje H2 clustering i multi-version concurrency.
Ma silne funkcje bezpieczeństwa.
Dodatkowe funkcje
Oto kilka dodatkowych funkcji bazy danych H2 -
H2 to bazy danych i tabele oparte na dyskach lub w pamięci, obsługa bazy danych tylko do odczytu, tabele tymczasowe.
H2 zapewnia obsługę transakcji (odczyt zatwierdzony), 2-fazowe zatwierdzanie wielu połączeń, blokowanie na poziomie tabeli.
H2 to optymalizator oparty na kosztach, wykorzystujący algorytm genetyczny do złożonych zapytań, z zerowym podawaniem.
H2 zawiera obsługę przewijalnych i aktualizowalnych zestawów wyników, duży zestaw wyników, zewnętrzne sortowanie wyników, funkcje mogą zwracać zestaw wyników.
H2 obsługuje szyfrowaną bazę danych (AES), szyfrowanie hasła SHA-256, funkcje szyfrowania i SSL.
Komponenty w bazie danych H2
Aby korzystać z H2 Database, musisz mieć następujące komponenty -
- Przeglądarka internetowa
- Serwer konsoli H2
Jest to aplikacja typu klient / serwer, więc do jej uruchomienia wymagany jest zarówno serwer, jak i klient (przeglądarka).
H2 to baza danych napisana w Javie. Możemy łatwo osadzić tę bazę danych w naszej aplikacji za pomocą JDBC. Możemy to uruchomić na wielu różnych platformach lub dowolnej wersji Java Runtime Environment. Jednak przed zainstalowaniem bazy danych w systemie powinna być zainstalowana Java.
Sprawdź instalację oprogramowania Java
Jeśli JDK jest zainstalowany w systemie, wypróbuj następującą komendę, aby sprawdzić wersję Java.
java –version
Jeśli JDk zostanie pomyślnie zainstalowany w systemie, otrzymamy następujący wynik.
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)
Jeśli JDK nie jest zainstalowany w systemie, odwiedź poniższe łącze, aby zainstalować JDK .
Zainstaluj bazę danych H2
Możemy uruchomić tę bazę danych na wielu różnych platformach. W tym rozdziale dowiemy się o instalacji bazy danych H2 w systemie Windows.
Poniżej przedstawiono kroki instalacji H2 Database w systemie operacyjnym Windows.
Krok 1: Pobierz plik instalacyjny H2
Pobierz najnowszą wersję H2 Database z podanego linku. W tym linku otrzymasz najnowszą wersję bazy danych H2 w dwóch typach. Jeden to typ Instalatora Windows (czyli plik .exe), a drugi to plik ZIP niezależny od platformy dla innych systemów operacyjnych.
Kliknij instalator Windows w celu pobrania bazy danych H2 obsługiwanej przez system Windows po pobraniu pliku .exe. W tym przypadku korzystamy z bazy danych H2 w wersji 1.4.192.
Krok 2: Zainstaluj bazę danych H2
Po pobraniu otrzymujemy plik instalacyjny H2 Windows (tj. H2-setup-yyyy-mm-dd.exe) w katalogu Downloads. Aby rozpocząć proces instalacji H2 Database, kliknij dwukrotnie plik instalacyjny.
Poniższy ekran jest pierwszym krokiem w procesie instalacji. Podaj ścieżkę, w której chcemy zainstalować serwer bazy danych H2, jak pokazano na poniższym zrzucie ekranu.
Jak widać na powyższym zrzucie ekranu, domyślnie zajmie to C:\ProgramFiles (x86)\H2jako folder docelowy. Kliknij dalej, aby przejść do następnego kroku. Pojawi się następujący ekran.
Na powyższym zrzucie ekranu kliknij przycisk Instaluj, aby rozpocząć proces instalacji. Po instalacji otrzymujemy następujący zrzut ekranu.
Kliknij Zakończ, aby zakończyć proces instalacji.
Krok 3: Zweryfikuj instalację bazy danych H2
Po instalacji zweryfikujmy instalację bazy danych w systemie. Kliknij Windows → wpisz H2 Console → Kliknij ikonę konsoli H2. Połącz się z adresem URLhttp://localhost:8082. W momencie połączenia baza danych H2 poprosi o rejestrację bazy danych, jak pokazano na poniższym zrzucie ekranu.
Wypełnij wszystkie szczegóły w powyższym oknie dialogowym, takie jak zapisane ustawienia, nazwa ustawień, klasa sterownika, adres URL JDBC, nazwa użytkownika i hasło. W adresie URL JDBC określ lokalizację bazy danych i nazwę bazy danych. Nazwa użytkownika i Hasło to pola nazwy użytkownika i hasła bazy danych. Kliknij Połącz.
Pojawi się strona powitalna bazy danych, jak pokazano na poniższym zrzucie ekranu.
Polecenie Select służy do pobierania danych rekordów z tabeli lub wielu tabel. Jeśli projektujemy zapytanie wybierające, to zwraca dane w postaci tabeli wynikowej o nazwieresult sets.
Składnia
Podstawowa składnia instrukcji SELECT jest następująca -
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 ]
Aby pobrać wszystkie dostępne pola, użyj następującej składni.
SELECT * FROM table_name;
Przykład
Rozważ tabelę CUSTOMER zawierającą następujące rekordy -
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Aby uzyskać tabelę klientów wraz z podanymi danymi, wykonaj następujące zapytania.
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);
Poniższe polecenie jest przykładem, które pobrałoby pola ID, Nazwisko i Wynagrodzenie klientów dostępne w tabeli CUSTOMER.
SELECT ID, NAME, SALARY FROM CUSTOMERS;
Powyższe polecenie daje następujący wynik.
+----+----------+----------+
| 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 |
+----+----------+----------+
Użyj następującego zapytania, aby pobrać wszystkie pola tabeli CUSTOMERS.
SQL> SELECT * FROM CUSTOMERS;
Powyższe zapytanie daje następujący wynik -
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Instrukcja SQL INSERT służy do dodawania nowych wierszy danych do tabeli w bazie danych.
Składnia
Poniżej przedstawiono podstawową składnię instrukcji INSERT INTO.
INSERT INTO tableName
{ [ ( columnName [,...] ) ]
{ VALUES
{ ( { DEFAULT | expression } [,...] ) } [,...] | [ DIRECT ] [ SORTED ] select } } |
{ SET { columnName = { DEFAULT | expression } } [,...] }
Używając tej instrukcji INSERT, możemy wstawić nowy rekord lub nowe wiersze do tabeli. W przypadku korzystania z klauzuli DIRECT wyniki są bezpośrednio przenoszone do tabeli docelowej bez żadnego kroku pośredniego. Jednak dodając wartości dla wszystkich kolumn tabeli, upewnij się, że kolejność wartości jest taka sama, jak kolejność kolumn w tabeli.
Przykład
Weźmy przykład i spróbujmy wstawić następujące rekordy do tabeli Customer.
ID | Nazwa | Wiek | Adres | Wynagrodzenie |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000 |
2 | Khilan | 25 | Delhi | 1500 |
3 | Kaushik | 23 | Kota | 2000 |
4 | Chaitail | 25 | Bombaj | 6500 |
5 | Hardik | 27 | Bhopal | 8500 |
6 | Komal | 22 | poseł | 4500 |
7 | Muffy | 24 | Indore | 10000 |
Możemy pobrać wszystkie podane rekordy do tabeli klientów, wykonując następujące polecenia.
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);
Zapytanie UPDATE służy do aktualizowania lub modyfikowania istniejących rekordów w tabeli. Możemy użyć klauzuli WHERE z zapytaniem UPDATE, aby zaktualizować wybrane wiersze, w przeciwnym razie wpłynie to na wszystkie wiersze.
Składnia
Poniżej znajduje się podstawowa składnia zapytania UPDATE.
UPDATE tableName [ [ AS ] newTableAlias ] SET
{ { columnName = { DEFAULT | expression } } [,...] } |
{ ( columnName [,...] ) = ( select ) }
[ WHERE expression ] [ ORDER BY order [,...] ] [ LIMIT expression ]
W tej składni UPDATE możemy łączyć więcej niż jeden warunek za pomocą klauzul AND lub OR.
Przykład
Rozważmy tabelę CUSTOMER zawierającą następujące rekordy.
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Jeśli chcesz uzyskać tabelę klientów wraz z podanymi danymi, wykonaj następujące zapytania.
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);
Poniższe polecenie jest przykładem, które zaktualizuje ADRES dla klienta o identyfikatorze 6 -
UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;
Teraz tabela CUSTOMERS będzie miała następujące rekordy. Możemy sprawdzić rekordy tabeli klientów, wykonując następujące zapytanie.
SELECT * FROM CUSTOMERS;
Powyższe zapytanie daje następujący wynik.
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Aby zmodyfikować wszystkie wartości kolumn ADDRESS i SALARY w tabeli CUSTOMERS, nie musimy używać klauzuli WHERE. Zapytanie UPDATE wyglądałoby następująco -
UPDATE CUSTOMERS SET ADDRESS = 'Pune', SALARY = 1000.00;
Teraz tabela CUSTOMERS będzie miała następujące rekordy. Możemy sprawdzić rekordy tabeli klientów, wykonując następujące zapytanie.
SELECT * FROM CUSTOMERS;
Powyższe zapytanie daje następujący wynik -
+----+----------+-----+---------+---------+
| 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 |
+----+----------+-----+---------+---------+
Kwerenda SQL DELETE służy do usuwania istniejących rekordów z tabeli. Możemy użyć klauzuli WHERE z zapytaniem DELETE, aby usunąć wybrane rekordy, w przeciwnym razie wszystkie rekordy zostaną usunięte.
Składnia
Poniżej znajduje się ogólna składnia zapytania polecenia usuwania.
DELETE [ TOP term ] FROM tableName [ WHERE expression ] [ LIMIT term ]
Powyższa składnia usuwa wiersze z tabeli. Jeśli określono TOP lub LIMIT, usuwana jest co najwyżej określona liczba wierszy (bez limitu, jeśli wartość jest pusta lub mniejsza od zera).
Przykład
Rozważmy tabelę CUSTOMER zawierającą następujące rekordy.
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Poniższe polecenie usunie dane klienta, którego identyfikator to 6.
DELETE FROM CUSTOMERS WHERE ID = 6;
Po wykonaniu powyższego polecenia sprawdź tabelę Customer, wykonując następujące polecenie.
SELECT * FROM CUSTOMERS;
Powyższe polecenie daje następujące dane wyjściowe -
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Jeśli chcemy USUNĄĆ wszystkie rekordy z tabeli CUSTOMERS, nie używamy klauzuli WHERE. Zapytanie DELETE wyglądałoby następująco.
DELETE FROM CUSTOMER;
Po wykonaniu powyższego polecenia żadne rekordy nie będą dostępne w tabeli Klient.
BACKUP to polecenie używane do tworzenia kopii zapasowych bazy danych w oddzielnym pliku .zip. Obiekty nie są blokowane, a podczas wykonywania kopii zapasowej dziennik transakcji jest również kopiowany. Do wykonania tego polecenia wymagane są uprawnienia administratora.
Składnia
Poniżej przedstawiono ogólną składnię polecenia Kopia zapasowa.
BACKUP TO fileNameString;
Przykład
W tym przykładzie weźmy kopię zapasową bieżącej bazy danych do backup.zipplik. Użyj następującego polecenia do tego samego.
BACKUP TO 'backup.zip';
Wykonując powyższe polecenie, otrzymasz plik backup.zip w lokalnym systemie plików.
CALL to polecenie SQL należące do serwera bazy danych H2. To polecenie służy do obliczania prostego wyrażenia. Zwraca wynik danego wyrażenia w pojedynczym polu kolumny. Kiedy zwraca tablicę wyników, każdy element tablicy jest wyświetlany jako wartość kolumny.
Składnia
Poniżej przedstawiono ogólną składnię polecenia CALL.
CALL expression;
W tej składni możemy użyć wyrażenia arytmetycznego.
Przykład
Weźmy przykład i wykonaj wyrażenie arytmetyczne (15 * 25) za pomocą polecenia call.
CALL 15*25;
Powyższe polecenie daje następujący wynik.
375 |
---|
375 |
Polecenie EXPLAIN wyświetla plan wykonania instrukcji. Kiedy wykonujemy instrukcję za pomocą polecenia EXPLAIN ANALYZE, plan zapytania będzie zawierał rzeczywistą liczbę skanowania wierszy dla każdej tabeli.
Składnia
Poniżej znajduje się ogólna składnia polecenia EXPLAIN.
EXPLAIN { [ PLAN FOR ] | ANALYZE } { select | insert | update | delete | merge}
Wraz z tą składnią możemy używać wybierania, wstawiania, usuwania i scalania.
Przykład
W tym przykładzie wyjaśniono szczegóły planu kwerend klienta o identyfikatorze 1.
EXPLAIN SELECT * FROM CUSTOMER WHERE ID = 1;
Powyższe polecenie daje następujące dane wyjściowe -
Polecenie MERGE służy do aktualizacji istniejących wierszy i wstawiania nowych wierszy do tabeli. Kolumna klucza podstawowego odgrywa ważną rolę podczas korzystania z tego polecenia; służy do znalezienia wiersza.
Składnia
Poniżej przedstawiono ogólną składnię polecenia MERGE.
MERGE INTO tableName [ ( columnName [,...] ) ]
[ KEY ( columnName [,...] ) ]
{ VALUES { ( { DEFAULT | expression } [,...] ) } [,...] | select }
W powyższej składni klauzula KEY służy do określenia nazwy kolumny klucza podstawowego. Wraz z klauzulą VALUES możemy użyć wartości pierwotnych do wstawienia lub możemy pobrać i zapisać inne wartości tabeli w tej tabeli za pomocą polecenia select.
Przykład
W tym przykładzie spróbujmy dodać nowy rekord do tabeli Klienci. Poniżej znajdują się szczegóły nowego rekordu w tabeli.
Nazwa kolumny | Wartość |
---|---|
ID | 8 |
NAZWA | Lokesh |
WIEK | 32 |
ADRES | Hyderabad |
WYNAGRODZENIE | 2500 |
Korzystając z następującego zapytania wstawmy podany rekord do zapytania bazy danych H2.
MERGE INTO CUSTOMER KEY (ID) VALUES (8, 'Lokesh', 32, 'Hyderabad', 2500);
Powyższe zapytanie daje następujące dane wyjściowe.
Update count: 1
Zweryfikujmy rekordy tabeli Customer, wykonując następujące zapytanie.
SELECT * FROM CUSTOMER;
Powyższe zapytanie daje następujące dane wyjściowe.
ID | Nazwa | Wiek | Adres | Wynagrodzenie |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000 |
2 | Khilan | 25 | Delhi | 1500 |
3 | Kaushik | 23 | Kota | 2000 |
4 | Chaitali | 25 | Bombaj | 6500 |
5 | Hardik | 27 | Bhopal | 8500 |
6 | Komal | 22 | poseł | 4500 |
7 | Muffy | 24 | Indore | 10000 |
8 | Lokesh | 32 | Hyderabad | 2500 |
Teraz spróbujmy zaktualizować rekord przy użyciu rozszerzenia MergeKomenda. Poniżej znajdują się szczegóły rekordu, który ma zostać zaktualizowany.
Nazwa kolumny | Wartość |
---|---|
ID | 8 |
NAZWA | Loki |
WIEK | 32 |
ADRES | Hyderabad |
WYNAGRODZENIE | 3000 |
Użyj następującego zapytania, aby wstawić dany rekord do zapytania bazy danych H2.
MERGE INTO CUSTOMER KEY (ID) VALUES (8, 'Loki', 32, 'Hyderabad', 3000);
Powyższe zapytanie daje następujące dane wyjściowe.
Update count: 1
Zweryfikujmy rekordy tabeli Customer, wykonując następujące zapytanie.
SELECT * FROM CUSTOMER;
Powyższe zapytanie daje następujące dane wyjściowe -
ID | Nazwa | Wiek | Adres | Wynagrodzenie |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000 |
2 | Khilan | 25 | Delhi | 1500 |
3 | Kaushik | 23 | Kota | 2000 |
4 | Chaitali | 25 | Bombaj | 6500 |
5 | Hardik | 27 | Bhopal | 8500 |
6 | Komal | 22 | poseł | 4500 |
7 | Muffy | 24 | Indore | 10000 |
8 | Loki | 32 | Hyderabad | 3000 |
POKAŻ to polecenie używane do wyświetlania listy schematów, tabel lub kolumn tabeli.
Składnia
Poniżej znajduje się ogólna składnia polecenia SHOW.
SHOW { SCHEMAS | TABLES [ FROM schemaName ] |
COLUMNS FROM tableName [ FROM schemaName ] }
Przykład
Poniższego polecenia można użyć, aby uzyskać listę tabel w bieżącej bazie danych.
SHOW TABLES;
Powyższe polecenie daje następujący wynik.
NAZWA TABELI | TABLE_SCHEMA |
---|---|
KLIENT | PUBLICZNY |
EMP | PUBLICZNY |
CREATE to ogólne polecenie SQL używane do tworzenia tabel, schematów, sekwencji, widoków i użytkowników na serwerze H2 Database.
Utwórz tabelę
Utwórz tabelę to polecenie używane do tworzenia tabeli zdefiniowanej przez użytkownika w bieżącej bazie danych.
Składnia
Poniżej przedstawiono ogólną składnię polecenia Utwórz tabelę.
CREATE [ CACHED | MEMORY ] [ TEMP | [ GLOBAL | LOCAL ] TEMPORARY ]
TABLE [ IF NOT EXISTS ] name
[ ( { columnDefinition | constraint } [,...] ) ]
[ ENGINE tableEngineName [ WITH tableEngineParamName [,...] ] ]
[ NOT PERSISTENT ] [ TRANSACTIONAL ]
[ AS select ]
Używając ogólnej składni polecenia Utwórz tabelę, możemy tworzyć różne typy tabel, takie jak tabele buforowane, tabele pamięci i tabele tymczasowe. Poniżej znajduje się lista opisująca różne klauzule z podanej składni.
CACHED- Tabele w pamięci podręcznej są domyślnym typem zwykłych tabel. Oznacza to, że liczba wierszy nie jest ograniczona przez pamięć główną.
MEMORY- Tabele pamięci są domyślnym typem tabel tymczasowych. Oznacza to, że tabele pamięci nie powinny być zbyt duże, a dane indeksowe są przechowywane w pamięci głównej.
TEMPORARY- Tabele tymczasowe są usuwane podczas zamykania lub otwierania bazy danych. Zasadniczo tabele tymczasowe są dwojakiego rodzaju -
Typ GLOBALNY - dostępny dla wszystkich połączeń.
Typ LOKALNY - dostępny dla bieżącego połączenia.
Domyślnym typem tabel tymczasowych jest typ globalny. Indeksy tabel tymczasowych są przechowywane w pamięci głównej, chyba że tabela tymczasowa jest tworzona za pomocą polecenia CREATE CACHED TABLE.
ENGINE - Opcja ENGINE jest wymagana tylko wtedy, gdy używane są niestandardowe implementacje tabel.
NOT PERSISTENT - Jest to modyfikator, który zachowuje pełne dane tabeli w pamięci, a wszystkie wiersze są tracone po zamknięciu bazy danych.
TRANSACTIONAL - Jest to słowo kluczowe, które zatwierdza otwartą transakcję, a to polecenie obsługuje tylko tabele tymczasowe.
Przykład
W tym przykładzie stwórzmy tabelę o nazwie tutorials_tbl, używając następujących danych.
Sr.No | Nazwa kolumny | Typ danych |
---|---|---|
1 | ID | Int |
2 | Tytuł | Varchar Maszyny (50) |
3 | Autor | Varchar Maszyny (20) |
4 | Termin składania | Data |
Poniższe zapytanie służy do tworzenia tabeli tutorials_tbl wraz z podanymi danymi kolumny.
CREATE TABLE tutorials_tbl (
id INT NOT NULL,
title VARCHAR(50) NOT NULL,
author VARCHAR(20) NOT NULL,
submission_date DATE
);
Powyższe zapytanie daje następujące dane wyjściowe.
(0) rows effected
Utwórz schemat
Utwórz schemat to komenda służąca do tworzenia schematu zależnego od użytkownika w ramach określonej autoryzacji (w ramach aktualnie zarejestrowanego użytkownika).
Składnia
Poniżej przedstawiono ogólną składnię polecenia Utwórz schemat.
CREATE SCHEMA [ IF NOT EXISTS ] name [ AUTHORIZATION ownerUserName ]
W powyższej składni ogólnej AUTHORIZATION jest słowem kluczowym używanym do podania odpowiedniej nazwy użytkownika. To polecenie jest opcjonalne, co oznacza, że jeśli nie podamy nazwy użytkownika, będzie ono uwzględniać bieżącego użytkownika. Użytkownik wykonujący polecenie musi mieć uprawnienia administratora, a także właściciel.
To polecenie zatwierdza otwartą transakcję w tym połączeniu.
Przykład
W tym przykładzie stwórzmy schemat o nazwie test_schema w ramach użytkownika SA, używając następującego polecenia.
CREATE SCHEMA test_schema AUTHORIZATION sa;
Powyższe polecenie daje następujący wynik.
(0) rows effected
Utwórz sekwencję
Sekwencja jest pojęciem używanym do generowania liczby poprzez śledzenie sekwencji dla id lub dowolnych losowych wartości kolumn.
Składnia
Poniżej znajduje się ogólna składnia polecenia tworzenia sekwencji.
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 ]
Ta ogólna składnia służy do tworzenia sekwencji. Typ danych sekwencji toBIGINT. W tej sekwencji wartości nigdy nie są ponownie używane, nawet jeśli transakcja jest wycofywana.
Przykład
W tym przykładzie stwórzmy sekwencję o nazwie SEQ_ID, używając następującego zapytania.
CREATE SEQUENCE SEQ_ID;
Powyższe zapytanie daje następujące dane wyjściowe.
(0) rows effected
ALTER to polecenie używane do zmiany struktury tabeli przez dodanie różnych klauzul do alterKomenda. Bazując na scenariuszu, musimy dodać odpowiednią klauzulę do polecenia alter. W tym rozdziale omówimy różne scenariusze działania polecenia alter.
Zmień tabelę Dodaj
Alter Table Add to polecenie używane do dodawania nowej kolumny do tabeli wraz z odpowiednim typem danych. To polecenie zatwierdza transakcję w tym połączeniu.
Składnia
Poniżej przedstawiono ogólną składnię polecenia Alter Table Add.
ALTER TABLE [ IF EXISTS ] tableName ADD [ COLUMN ]
{ [ IF NOT EXISTS ] columnDefinition [ { BEFORE | AFTER } columnName ]
| ( { columnDefinition } [,...] ) }
Przykład
W tym przykładzie dodamy nową kolumnę start_date na stół tutorials_tbl. Typ danych dla data_początkowa to Data. Poniżej znajduje się zapytanie o dodanie nowej kolumny.
ALTER TABLE tutorials_tbl ADD start_date DATE;
Powyższe zapytanie daje następujące dane wyjściowe.
(6) rows effected
Zmień tabelę Dodaj wiązanie
Alter table add constraint to polecenie używane do dodawania różnych ograniczeń do tabeli, takich jak klucz podstawowy, klucz obcy, not null itp.
Wymagane indeksy są tworzone automatycznie, jeśli jeszcze nie istnieją. Nie można wyłączyć sprawdzania ograniczenia unikalności. To polecenie zatwierdza otwartą transakcję w tym połączeniu.
Składnia
Poniżej przedstawiono ogólną składnię polecenia Alter table add constraint.
ALTER TABLE [ IF EXISTS ] tableName ADD constraint [ CHECK | NOCHECK ]
Przykład
W tym przykładzie dodajmy ograniczenie klucza podstawowego (tutorials_tbl_pk) do identyfikatora kolumny tabeli tutorials_tbl, używając następującego zapytania.
ALTER TABLE tutorials_tbl ADD CONSTRAINT tutorials_tbl_pk PRIMARYKEY(id);
Powyższe zapytanie daje następujące dane wyjściowe.
(6) row (s) effected
Zmień wiązanie zmiany nazwy tabeli
To polecenie służy do zmiany nazwy ograniczenia określonej tabeli relacji. To polecenie zatwierdza otwartą transakcję w tym połączeniu.
Składnia
Poniżej przedstawiono ogólną składnię polecenia Zmień ograniczenie zmiany nazwy tabeli.
ALTER TABLE [ IF EXISTS ] tableName RENAME oldConstraintName TO newConstraintName
Korzystając z tej składni, upewnij się, że stara nazwa ograniczenia powinna istnieć w odpowiedniej kolumnie.
Przykład
W tym przykładzie zmienimy nazwę ograniczenia klucza podstawowego tabeli tutorials_tbl od tutorials_tbl_pk do tutorials_tbl_pk_constraint. Poniżej znajduje się zapytanie, aby to zrobić.
ALTER TABLE tutorials_tbl RENAME CONSTRAINT
tutorials_tbl_pk TO tutorials_tbl_pk_constraint;
Powyższe zapytanie daje następujące dane wyjściowe.
(1) row (s) effected
Zmień tabelę Zmień kolumnę
To polecenie służy do zmiany struktury i właściwości kolumny określonej tabeli. Zmiana właściwości oznacza zmianę typu danych kolumny, zmianę nazwy kolumny, zmianę wartości tożsamości lub zmianę selektywności.
Składnia
Poniżej znajduje się ogólna składnia polecenia Alter Table Alter Column.
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 } }
W powyższej składni -
RESTART - komenda zmienia następną wartość w kolumnie autoinkrementacji.
SELECTIVITY- komenda ustawia selektywność (1-100) dla kolumny. Na podstawie wartości selektywności możemy zobrazować wartość kolumny.
SET DEFAULT - zmienia domyślną wartość kolumny.
SET NULL - ustawia kolumnę na NULL.
SET NOT NULL - ustawia kolumnę na opcję NOT NULL.
Przykład
W tym przykładzie zmienimy nazwę kolumny tabeli tutorials_tbl od Title do Tutorial_Title używając następującego zapytania.
ALTER TABLE tutorials_tbl ALTER COLUMN title RENAME TO tutorial_title;
Powyższe zapytanie daje następujące dane wyjściowe.
(0) row(s) effected
W podobny sposób możemy wykonać różne scenariusze poleceniem ALTER.
DROP to polecenie zaczerpnięte z ogólnej gramatyki SQL. To polecenie służy do usuwania komponentu bazy danych i jej struktury z pamięci. Istnieją różne scenariusze z poleceniem Upuść, które omówimy w tym rozdziale.
Drop Table
Drop Table to polecenie, które usuwa odpowiednią tabelę i jej strukturę.
Składnia
Poniżej znajduje się ogólna składnia polecenia Drop Table.
DROP TABLE [ IF EXISTS ] tableName [,...] [ RESTRICT | CASCADE ]
Polecenie nie powiedzie się, jeśli używamy RESTRICT i istnieje tabela mająca zależne widoki. Wszystkie widoki zależne są usuwane, gdy używamy słowa kluczowego CASCADE.
Przykład
W tym przykładzie usuniemy tabelę o nazwie test za pomocą następującego zapytania.
DROP TABLE test;
Powyższe zapytanie daje następujące dane wyjściowe.
(6) row (s) effected
Porzuć schemat
Drop Schema to polecenie, które usuwa odpowiedni schemat z serwera bazy danych. Nie będzie działać z obecnego schematu.
Składnia
DROP SCHEMA [ IF EXISTS ] schemaName
Przykład
W tym przykładzie porzucimy schemat o nazwie test_schema używając następującego zapytania.
DROP SCHEMA TEST_SCHEMA;
Powyższe zapytanie daje następujące dane wyjściowe.
(0) row(s) effected
Drop Sequence
Drop Sequence to polecenie używane do usuwania sekwencji ze struktury tabeli.
Składnia
Poniżej przedstawiono ogólną składnię polecenia Drop Sequence.
DROP SEQUENCE [ IF EXISTS ] sequenceName
To polecenie zatwierdza otwartą transakcję w tym połączeniu.
Przykład
W tym przykładzie porzucimy sekwencję o nazwie sequence_id. Oto polecenie.
DROP SEQUENCE sequence_id;
Powyższe polecenie daje następujący wynik.
(0) row (s) effected
Upuść widok
Drop View to polecenie służące do usuwania istniejącego widoku. Wszystkie widoki zależne są również usuwane, jeśli używana jest klauzula CASCADE.
Składnia
Poniżej znajduje się ogólna składnia polecenia Drop View.
DROP VIEW [ IF EXISTS ] viewName [ RESTRICT | CASCADE ]
Przykład
W tym przykładzie usuniemy widok o nazwie sample_view używając następującego zapytania.
DROP VIEW sample_view;
Powyższe zapytanie daje następujące dane wyjściowe.
(0) row (s) effected
TRUNCATE to polecenie używane do usuwania danych z tabeli. W przeciwieństwie do DELETE FROM bez klauzuli WHERE tego polecenia nie można wycofać. To polecenie zatwierdza otwartą transakcję w tym połączeniu.
Składnia
Poniżej znajduje się ogólna składnia polecenia obcinania.
TRUNCATE TABLE tableName
Przykład
W tym przykładzie skrócimy tabelę o nazwie test używając następującego zapytania.
TRUNCATE TABLE test;
Powyższe zapytanie daje następujące dane wyjściowe.
(6) row (s) effected
COMMIT to polecenie z gramatyki SQL użyte do zatwierdzenia transakcji. Możemy zatwierdzić konkretną transakcję lub zatwierdzić aktualnie wykonaną transakcję.
Składnia
Istnieją dwie różne składnie polecenia COMMIT.
Poniżej znajduje się ogólna składnia polecenia commit do zatwierdzenia bieżącej transakcji.
COMMIT [ WORK ]
Poniżej znajduje się ogólna składnia komendy commit do zatwierdzenia konkretnej transakcji.
COMMIT TRANSACTION transactionName
Przykład 1
W tym przykładzie zatwierdźmy bieżącą transakcję za pomocą następującego polecenia.
COMMIT
Powyższe polecenie daje następujący wynik.
Committed successfully
Przykład 2
W tym przykładzie zatwierdzimy transakcję o nazwie tx_test za pomocą następującego polecenia.
COMMIT TRANSACTION tx_test;
Powyższe polecenie daje następujący wynik.
Committed successfully
Grant to polecenie wywodzące się z gramatyki SQL używanej do nadawania praw do tabeli, użytkownikowi lub roli. Do wykonania tego polecenia wymagane są uprawnienia administratora. To polecenie zatwierdza otwartą transakcję w tym połączeniu.
W tym rozdziale omówimy różne scenariusze polecenia Grant.
Przyznaj prawo
Udziel prawa to polecenie zapewniające uprawnienia administratora do tabeli, użytkownika lub roli.
Składnia
Poniżej znajduje się ogólna składnia polecenia Grant.
GRANT { SELECT | INSERT | UPDATE | DELETE | ALL } [,...] ON
{ { SCHEMA schemaName } | { tableName [,...] } }
TO { PUBLIC | userName | roleName }
Przykład
W tym przykładzie przyznamy tabelę testową jako tylko do odczytu za pomocą następującego polecenia.
GRANT SELECT ON TEST TO READONLY
Powyższe polecenie daje następujący wynik.
Grant successfully
Przyznaj zmianę dowolnego schematu
Grant Alter Any Schema to polecenie przyznania praw do zmiany schematu danemu użytkownikowi.
Składnia
Poniżej przedstawiono ogólną składnię polecenia Grant Alter Any Schema.
GRANT ALTER ANY SCHEMA TO userName
Przykład
W tym przykładzie nadamy użytkownikowi o nazwie uprawnienia do zmiany schematu test_user. Upewnij się, że istnieje test_user. Poniżej znajduje się zapytanie o przyznanie uprawnień do zmiany.
GRANT ALTER ANY SCHEMA TO test_user;
Powyższe zapytanie daje następujące dane wyjściowe.
Granted successfully to test_user
SAVEPOINT to komenda używana do tymczasowego zapisania transakcji. Lepiej jest zachować punkty zapisu w transakcji, ponieważ w razie potrzeby pomocne jest cofnięcie transakcji do odpowiedniego punktu zapisu.
Składnia
Poniżej przedstawiono ogólną składnię polecenia Zapisz punkt.
SAVEPOINT savepointName
Przykład
W tym przykładzie utworzymy punkt zapisu o nazwie Half_Done za pomocą następującego polecenia.
SAVEPOINT Half_Done;
Powyższe polecenie daje następujący wynik.
Savepoint created
ROLLBACK to polecenie z gramatyki SQL używane do cofania transakcji do punktu zapisu lub do poprzedniej transakcji. Używając tego polecenia, możemy albo cofnąć się do konkretnego Punktu Zapisu, albo cofnąć się do poprzednio wykonanej transakcji.
Składnia
Istnieją dwie różne składnie komendy ROLLABCK.
Poniżej przedstawiono ogólną składnię polecenia wycofywania zmian.
ROLLBACK [ TO SAVEPOINT savepointName ]
Poniżej przedstawiono ogólną składnię polecenia wycofania zmian do określonej transakcji.
ROLLBACK TRANSACTION transactionName
Przykład 1
W tym przykładzie cofniemy bieżącą transakcję do punktu zapisu o nazwie sp1_test za pomocą następującego polecenia.
ROLLBACK sp1_test;
Powyższe polecenie daje następujący wynik.
Rollback successfully
Przykład 2
W poniższym przykładzie wycofamy całą transakcję o nazwie tx_test używając podanego polecenia.
ROLLBACK TRANSACTION tx_test;
Powyższe polecenie daje następujący wynik.
Rollback successfully
H2 to baza danych JAVA. Możemy współdziałać z tą bazą danych za pomocą JDBC. W tym rozdziale zobaczymy, jak utworzyć połączenie JDBC z bazą danych H2 oraz operacje CRUD z bazą danych H2.
Generalnie istnieje pięć kroków tworzenia połączenia JDBC.
Step 1 - Rejestracja sterownika bazy danych JDBC.
Class.forName ("org.h2.Driver");
Step 2 - Otwieranie połączenia.
Connection conn = DriverManager.getConnection ("jdbc:h2:~/test", "sa","");
Step 3 - Tworzenie oświadczenia.
Statement st = conn.createStatement();
Step 4 - Wykonywanie instrukcji i odbieranie zestawu wyników.
Stmt.executeUpdate("sql statement");
Step 5 - Zamykanie połączenia.
conn.close();
Zanim przejdziemy do stworzenia pełnego programu, musimy dodać h2-1.4.192.jar filedo CLASSPATH. Możemy to dostaćjar z folderu C:\Program Files (x86)\H2\bin.
Utwórz tabelę
W tym przykładzie napiszemy program do tworzenia tabeli. Rozważ tabelę o nazwieRegistration posiadające następujące pola.
S.Nr | Nazwa kolumny | Typ danych | NIE JEST ZEREM | Klucz podstawowy |
---|---|---|---|---|
1 | ID | Numer | tak | tak |
2 | Pierwszy | Varchar (255) | Nie | Nie |
3 | Ostatni, ubiegły, zeszły | Varchar (255) | Nie | Nie |
4 | Wiek | Numer | Nie | Nie |
Poniżej znajduje się przykładowy program o nazwie 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!");
}
}
Zapisz powyższy program w H2jdbcCreateDemo.java. Skompiluj i uruchom powyższy program, wykonując następujące polecenia w wierszu polecenia.
\>javac H2jdbcCreateDemo.java
\>java H2jdbcCreateDemo
Powyższe polecenie daje następujący wynik.
Connecting to database...
Creating table in given database...
Created table in given database...
Goodbye!
Po tym wykonaniu możemy sprawdzić tabelę utworzoną za pomocą interfejsu H2 SQL.
Wstaw rekordy
W tym przykładzie napiszemy program do wstawiania rekordów. Wstawmy następujące rekordy do tabeli Rejestracja.
ID | Pierwszy | Ostatni, ubiegły, zeszły | Wiek |
---|---|---|---|
100 | Zara | Ali | 18 |
101 | Mahnaz | Fatma | 25 |
102 | Zaid | Chan | 30 |
103 | Sumit | Mital | 28 |
Poniżej znajduje się przykładowy program o nazwie 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!");
}
}
Zapisz powyższy program w H2jdbcInsertDemo.java. Skompiluj i uruchom powyższy program, wykonując następujące polecenia w wierszu polecenia.
\>javac H2jdbcInsertDemo.java
\>java H2jdbcInsertDemo
Powyższe polecenie daje następujący wynik.
Connecting to a selected database...
Connected database successfully...
Inserted records into the table...
Goodbye!
Przeczytaj rekord
W tym przykładzie napiszemy program do odczytu rekordów. Spróbujmy odczytać wszystkie rekordy z tabeliRegistration.
Poniżej znajduje się przykładowy program o nazwie 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!");
}
}
Zapisz powyższy program w H2jdbcReadDemo.java. Skompiluj i uruchom powyższy program, wykonując następujące polecenia w wierszu polecenia.
\>javac H2jdbcReadDemo.java
\>java H2jdbcReadDemo
Powyższe polecenie daje następujący wynik.
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!
Zaktualizuj rekordy
W tym przykładzie napiszemy program do aktualizacji rekordów. Spróbujmy odczytać wszystkie rekordy z tabeliRegistration.
Poniżej znajduje się przykładowy program o nazwie 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!");
}
}
Zapisz powyższy program w H2jdbcUpdateDemo.java. Skompiluj i uruchom powyższy program, wykonując następujące polecenia w wierszu polecenia.
\>javac H2jdbcUpdateDemo.java
\>java H2jdbcUpdateDemo
Powyższe polecenie daje następujący wynik.
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!
Usuń rekordy
W tym przykładzie napiszemy program do usuwania rekordów. Spróbujmy odczytać wszystkie rekordy z tabeliRegistration.
Poniżej znajduje się przykładowy program o nazwie 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!");
}
}
Zapisz powyższy program w H2jdbcDeleteDemo.java. Skompiluj i uruchom powyższy program, wykonując następujące polecenia w wierszu polecenia.
\>javac H2jdbcDeleteDemo.java
\>java H2jdbcDeleteDemo
Powyższe polecenie daje następujący wynik.
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!