Cơ sở dữ liệu H2 - Hướng dẫn nhanh
H2 là một cơ sở dữ liệu Java nhẹ mã nguồn mở. Nó có thể được nhúng trong các ứng dụng Java hoặc chạy ở chế độ máy khách-máy chủ. Về cơ bản, cơ sở dữ liệu H2 có thể được cấu hình để chạy dưới dạng cơ sở dữ liệu bộ nhớ, có nghĩa là dữ liệu sẽ không tồn tại trên đĩa. Do cơ sở dữ liệu nhúng nên nó không được sử dụng để phát triển sản xuất mà chủ yếu được sử dụng để phát triển và thử nghiệm.
Cơ sở dữ liệu này có thể được sử dụng trong chế độ nhúng hoặc trong chế độ máy chủ. Sau đây là các tính năng chính của cơ sở dữ liệu H2:
- Mã nguồn mở cực nhanh, JDBC API
- Có sẵn trong các chế độ nhúng và máy chủ; cơ sở dữ liệu trong bộ nhớ
- Ứng dụng bảng điều khiển dựa trên trình duyệt
- Dấu chân nhỏ - Kích thước tệp jar khoảng 1,5 MB
Các tính năng của cơ sở dữ liệu H2
Các tính năng chính của H2 Database như sau:
Nó là một công cụ cơ sở dữ liệu cực kỳ nhanh.
H2 là mã nguồn mở và được viết bằng Java.
Nó hỗ trợ SQL tiêu chuẩn và API JDBC. Nó cũng có thể sử dụng trình điều khiển ODBC PostgreSQL.
Nó có chế độ nhúng và máy chủ.
H2 hỗ trợ clustering và multi-version concurrency.
Nó có các tính năng bảo mật mạnh mẽ.
Tính năng bổ sung
Sau đây là một số tính năng bổ sung của Cơ sở dữ liệu H2 -
H2 là bảng và cơ sở dữ liệu dựa trên đĩa hoặc trong bộ nhớ, hỗ trợ cơ sở dữ liệu chỉ đọc, bảng tạm thời.
H2 cung cấp hỗ trợ giao dịch (đọc cam kết), nhiều kết nối cam kết 2 pha, khóa mức bảng.
H2 là một trình tối ưu hóa dựa trên chi phí, sử dụng một thuật toán di truyền cho các truy vấn phức tạp, quản lý không.
H2 chứa hỗ trợ tập kết quả có thể cuộn và có thể cập nhật, tập kết quả lớn, sắp xếp kết quả bên ngoài, các hàm có thể trả về tập kết quả.
H2 hỗ trợ cơ sở dữ liệu được mã hóa (AES), mã hóa mật khẩu SHA-256, các chức năng mã hóa và SSL.
Các thành phần trong cơ sở dữ liệu H2
Để sử dụng Cơ sở dữ liệu H2, bạn cần có các thành phần sau:
- Một trình duyệt web
- Máy chủ bảng điều khiển H2
Đây là một ứng dụng máy khách / máy chủ, vì vậy cần có cả máy chủ và máy khách (trình duyệt) để chạy nó.
H2 là một cơ sở dữ liệu được viết bằng Java. Chúng tôi có thể dễ dàng nhúng cơ sở dữ liệu này vào ứng dụng của mình bằng cách sử dụng JDBC. Chúng tôi có thể chạy điều này trên nhiều nền tảng khác nhau hoặc bất kỳ phiên bản nào của Java Runtime Environment. Tuy nhiên, trước khi cài đặt cơ sở dữ liệu, nên có Java được cài đặt trong hệ thống.
Xác minh cài đặt Java
Nếu JDK được cài đặt trong hệ thống, hãy thử lệnh sau để xác minh phiên bản Java.
java –version
Nếu JDk được cài đặt thành công trong hệ thống, thì chúng ta sẽ nhận được kết quả sau.
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)
Nếu JDK chưa được cài đặt trong hệ thống, hãy truy cập liên kết sau để Cài đặt JDK .
Cài đặt cơ sở dữ liệu H2
Chúng tôi có thể chạy cơ sở dữ liệu này trên nhiều nền tảng khác nhau. Trong chương này, chúng ta sẽ tìm hiểu về cài đặt H2 Database trên Windows.
Sau đây là các bước cài đặt H2 Database trên hệ điều hành Windows.
Bước 1: Tải xuống tệp thiết lập H2
Tải xuống phiên bản mới nhất của H2 Database từ liên kết đã cho. Trong liên kết này, bạn sẽ nhận được phiên bản mới nhất của cơ sở dữ liệu H2 với hai loại. Một là loại Windows Installer (đó là tệp .exe) và thứ hai là tệp zip Nền tảng-Độc lập cho các hệ điều hành khác.
Nhấp vào trình cài đặt Windows để tải xuống cơ sở dữ liệu H2 có thể hỗ trợ Windows sau khi tải xuống tệp .exe. Trong trường hợp này, chúng tôi đang sử dụng Cơ sở dữ liệu H2 với phiên bản 1.4.192.
Bước 2: Cài đặt cơ sở dữ liệu H2
Sau khi tải xuống, chúng tôi nhận được tệp trình cài đặt Windows H2 (tức là h2-setup-yyyy-mm-dd.exe) trong thư mục Tải xuống. Để bắt đầu quá trình cài đặt H2 Database, nhấp đúp vào tệp trình cài đặt.
Màn hình sau đây là bước đầu tiên trong quá trình cài đặt. Cung cấp một đường dẫn mà chúng tôi muốn cài đặt máy chủ cơ sở dữ liệu H2 như được hiển thị trong ảnh chụp màn hình sau.
Như đã thấy trong ảnh chụp màn hình ở trên, theo mặc định, nó sẽ C:\ProgramFiles (x86)\H2dưới dạng thư mục đích. Bấm tiếp theo để sang bước tiếp theo. Màn hình sau sẽ bật lên.
Trong ảnh chụp màn hình ở trên, nhấp vào nút Cài đặt để bắt đầu quá trình cài đặt. Sau khi cài đặt, chúng tôi nhận được ảnh chụp màn hình sau.
Nhấn Finish để hoàn tất quá trình cài đặt.
Bước 3: Xác minh cài đặt cơ sở dữ liệu H2
Sau khi cài đặt, hãy để chúng tôi xác minh cài đặt cơ sở dữ liệu trong hệ thống. Nhấp vào Windows → gõ H2 Console → Nhấp vào biểu tượng H2 console. Kết nối với URLhttp://localhost:8082. Tại thời điểm kết nối, cơ sở dữ liệu H2 sẽ yêu cầu đăng ký cơ sở dữ liệu như thể hiện trong ảnh chụp màn hình sau.
Điền tất cả các thông tin chi tiết vào hộp thoại trên như Cài đặt đã lưu, Tên cài đặt, Lớp trình điều khiển, URL JDBC, Tên người dùng và Mật khẩu. Trong URL JDBC, chỉ định cơ sở dữ liệu được đặt và tên cơ sở dữ liệu. Tên người dùng và Mật khẩu là các trường cho tên người dùng và mật khẩu của cơ sở dữ liệu. Nhấp vào Kết nối.
Trang chào mừng Cơ sở dữ liệu bật lên như được hiển thị trong ảnh chụp màn hình sau.
Lệnh Select được sử dụng để tìm nạp dữ liệu bản ghi từ một bảng hoặc nhiều bảng. Nếu chúng tôi thiết kế một truy vấn chọn, thì nó sẽ trả về dữ liệu ở dạng bảng kết quả được gọi làresult sets.
Cú pháp
Cú pháp cơ bản của câu lệnh SELECT như sau:
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 ]
Để tìm nạp tất cả các trường có sẵn, hãy sử dụng cú pháp sau.
SELECT * FROM table_name;
Thí dụ
Hãy xem xét bảng CUSTOMER có các bản ghi sau:
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Để có được bảng khách hàng cùng với dữ liệu đã cho, hãy thực hiện các truy vấn sau.
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);
Lệnh sau là một ví dụ, lệnh này sẽ lấy các trường ID, Tên và Lương của các khách hàng có sẵn trong bảng CUSTOMER.
SELECT ID, NAME, SALARY FROM CUSTOMERS;
Lệnh trên tạo ra kết quả sau.
+----+----------+----------+
| 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 |
+----+----------+----------+
Sử dụng truy vấn sau để tìm nạp tất cả các trường của bảng CUSTOMERS.
SQL> SELECT * FROM CUSTOMERS;
Truy vấn trên tạo ra kết quả sau:
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Câu lệnh SQL INSERT được sử dụng để thêm các hàng dữ liệu mới vào bảng trong cơ sở dữ liệu.
Cú pháp
Sau đây là cú pháp cơ bản của câu lệnh INSERT INTO.
INSERT INTO tableName
{ [ ( columnName [,...] ) ]
{ VALUES
{ ( { DEFAULT | expression } [,...] ) } [,...] | [ DIRECT ] [ SORTED ] select } } |
{ SET { columnName = { DEFAULT | expression } } [,...] }
Sử dụng câu lệnh INSERT này, chúng ta có thể chèn một bản ghi mới hoặc các hàng mới vào một bảng. Khi sử dụng mệnh đề TRỰC TIẾP, kết quả được ảnh hưởng trực tiếp đến bảng đích mà không cần bất kỳ bước trung gian nào. Tuy nhiên, trong khi thêm giá trị cho tất cả các cột của bảng, hãy đảm bảo thứ tự của các giá trị theo cùng thứ tự với các cột trong bảng.
Thí dụ
Hãy để chúng tôi lấy một ví dụ và cố gắng chèn các bản ghi đã cho sau vào bảng Khách hàng.
TÔI | Tên | Tuổi tác | Địa chỉ | Tiền lương |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000 |
2 | Khilan | 25 | Delhi | 1500 |
3 | Kaushik | 23 | Kota | 2000 |
4 | Chaitail | 25 | Mumbai | 6500 |
5 | Hardik | 27 | Bhopal | 8500 |
6 | Komal | 22 | MP | 4500 |
7 | Muffy | 24 | Indore | 10000 |
Chúng ta có thể lấy tất cả các bản ghi đã cho vào bảng khách hàng bằng cách thực hiện các lệnh sau.
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);
Truy vấn UPDATE được sử dụng để cập nhật hoặc sửa đổi các bản ghi hiện có trong bảng. Chúng ta có thể sử dụng mệnh đề WHERE với truy vấn UPDATE để cập nhật các hàng đã chọn, nếu không tất cả các hàng sẽ bị ảnh hưởng.
Cú pháp
Sau đây là cú pháp cơ bản của truy vấn UPDATE.
UPDATE tableName [ [ AS ] newTableAlias ] SET
{ { columnName = { DEFAULT | expression } } [,...] } |
{ ( columnName [,...] ) = ( select ) }
[ WHERE expression ] [ ORDER BY order [,...] ] [ LIMIT expression ]
Trong cú pháp CẬP NHẬT này, chúng ta có thể kết hợp nhiều hơn một điều kiện bằng cách sử dụng mệnh đề VÀ hoặc HOẶC.
Thí dụ
Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Nếu bạn muốn lấy bảng khách hàng cùng với dữ liệu đã cho, hãy thực hiện các truy vấn sau.
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);
Lệnh sau là một ví dụ, sẽ cập nhật ADDRESS cho khách hàng có ID là 6 -
UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;
Bây giờ, bảng CUSTOMERS sẽ có các bản ghi sau. Chúng tôi có thể kiểm tra bản ghi bảng khách hàng bằng cách thực hiện truy vấn sau.
SELECT * FROM CUSTOMERS;
Truy vấn trên tạo ra kết quả sau.
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Để sửa đổi tất cả các giá trị cột ĐỊA CHỈ và LƯƠNG trong bảng KHÁCH HÀNG, chúng ta không cần sử dụng mệnh đề WHERE. Truy vấn UPDATE sẽ như sau:
UPDATE CUSTOMERS SET ADDRESS = 'Pune', SALARY = 1000.00;
Bây giờ, bảng CUSTOMERS sẽ có các bản ghi sau. Chúng tôi có thể kiểm tra bản ghi bảng khách hàng bằng cách thực hiện truy vấn sau.
SELECT * FROM CUSTOMERS;
Truy vấn trên tạo ra kết quả sau:
+----+----------+-----+---------+---------+
| 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 |
+----+----------+-----+---------+---------+
Truy vấn SQL DELETE được sử dụng để xóa các bản ghi hiện có khỏi bảng. Chúng ta có thể sử dụng mệnh đề WHERE với truy vấn DELETE để xóa các bản ghi đã chọn, nếu không tất cả các bản ghi sẽ bị xóa.
Cú pháp
Sau đây là cú pháp truy vấn chung của lệnh xóa.
DELETE [ TOP term ] FROM tableName [ WHERE expression ] [ LIMIT term ]
Cú pháp trên xóa các hàng khỏi bảng. Nếu TOP hoặc LIMIT được chỉ định, thì tối đa số hàng được chỉ định sẽ bị xóa (không giới hạn nếu rỗng hoặc nhỏ hơn 0).
Thí dụ
Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Lệnh sau sẽ xóa thông tin chi tiết của khách hàng có ID là 6.
DELETE FROM CUSTOMERS WHERE ID = 6;
Sau khi thực hiện lệnh trên, hãy kiểm tra bảng Khách hàng bằng cách thực hiện lệnh sau.
SELECT * FROM CUSTOMERS;
Lệnh trên tạo ra kết quả sau:
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
Nếu chúng ta muốn XÓA tất cả các bản ghi khỏi bảng CUSTOMERS, chúng ta không sử dụng mệnh đề WHERE. Truy vấn DELETE sẽ như sau.
DELETE FROM CUSTOMER;
Sau khi thực hiện lệnh trên, sẽ không có bản ghi nào trong bảng Khách hàng.
BACKUP là lệnh được sử dụng để sao lưu cơ sở dữ liệu vào một tệp .zip riêng biệt. Các đối tượng không bị khóa và khi sao lưu, nhật ký giao dịch cũng được sao chép. Quyền quản trị được yêu cầu để thực hiện lệnh này.
Cú pháp
Sau đây là cú pháp chung của lệnh Backup.
BACKUP TO fileNameString;
Thí dụ
Trong ví dụ này, chúng ta hãy sao lưu cơ sở dữ liệu hiện tại vào backup.ziptập tin. Sử dụng lệnh sau cho tương tự.
BACKUP TO 'backup.zip';
Khi thực hiện lệnh trên, bạn sẽ nhận được tệp backup.zip trong hệ thống tệp cục bộ của mình.
CALL là một lệnh SQL thuộc về máy chủ cơ sở dữ liệu H2. Lệnh này được sử dụng để tính toán một biểu thức đơn giản. Nó trả về kết quả của biểu thức đã cho trong một trường cột. Khi nó trả về một mảng kết quả, thì mỗi phần tử trong mảng được hiển thị dưới dạng giá trị cột.
Cú pháp
Sau đây là cú pháp chung của lệnh CALL.
CALL expression;
Chúng ta có thể sử dụng biểu thức số học trong cú pháp này.
Thí dụ
Chúng ta hãy lấy một ví dụ và thực hiện một biểu thức số học (15 * 25) bằng lệnh gọi.
CALL 15*25;
Lệnh trên tạo ra kết quả sau.
375 |
---|
375 |
Lệnh EXPLAIN hiển thị kế hoạch thực thi cho một câu lệnh. Khi chúng ta thực hiện một câu lệnh bằng lệnh EXPLAIN ANALYZE, kế hoạch truy vấn sẽ bao gồm số lần quét hàng thực tế cho mỗi bảng.
Cú pháp
Sau đây là cú pháp chung của lệnh EXPLAIN.
EXPLAIN { [ PLAN FOR ] | ANALYZE } { select | insert | update | delete | merge}
Cùng với cú pháp này, chúng ta có thể sử dụng select, insert, delete và merge.
Thí dụ
Ví dụ này giải thích chi tiết kế hoạch truy vấn của khách hàng có ID 1.
EXPLAIN SELECT * FROM CUSTOMER WHERE ID = 1;
Lệnh trên tạo ra kết quả sau:
Lệnh MERGE được sử dụng để cập nhật các hàng hiện có và chèn các hàng mới vào bảng. Cột khóa chính đóng một vai trò quan trọng trong khi sử dụng lệnh này; nó được sử dụng để tìm hàng.
Cú pháp
Sau đây là cú pháp chung của lệnh MERGE.
MERGE INTO tableName [ ( columnName [,...] ) ]
[ KEY ( columnName [,...] ) ]
{ VALUES { ( { DEFAULT | expression } [,...] ) } [,...] | select }
Trong cú pháp trên, mệnh đề KEY được sử dụng để chỉ định tên cột khóa chính. Cùng với mệnh đề VALUES, chúng ta có thể sử dụng các giá trị nguyên thủy để chèn hoặc chúng ta có thể lấy và lưu trữ các giá trị bảng khác vào bảng này bằng lệnh select.
Thí dụ
Trong ví dụ này, chúng ta hãy thử thêm một bản ghi mới vào bảng Khách hàng. Sau đây là chi tiết của bản ghi mới trong bảng.
Tên cột dọc | Giá trị |
---|---|
TÔI | số 8 |
TÊN | Lokesh |
TUỔI TÁC | 32 |
ĐỊA CHỈ | Hyderabad |
TIỀN LƯƠNG | 2500 |
Sử dụng truy vấn sau, chúng ta hãy chèn bản ghi đã cho vào truy vấn cơ sở dữ liệu H2.
MERGE INTO CUSTOMER KEY (ID) VALUES (8, 'Lokesh', 32, 'Hyderabad', 2500);
Truy vấn trên tạo ra kết quả sau.
Update count: 1
Hãy để chúng tôi xác minh các bản ghi của bảng Khách hàng bằng cách thực hiện truy vấn sau.
SELECT * FROM CUSTOMER;
Truy vấn trên tạo ra kết quả sau.
TÔI | Tên | Tuổi tác | Địa chỉ | Tiền lương |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000 |
2 | Khilan | 25 | Delhi | 1500 |
3 | Kaushik | 23 | Kota | 2000 |
4 | Chaitali | 25 | Mumbai | 6500 |
5 | Hardik | 27 | Bhopal | 8500 |
6 | Komal | 22 | MP | 4500 |
7 | Muffy | 24 | Indore | 10000 |
số 8 | Lokesh | 32 | Hyderabad | 2500 |
Bây giờ chúng ta hãy thử cập nhật hồ sơ bằng cách sử dụng Mergechỉ huy. Sau đây là chi tiết của bản ghi sẽ được cập nhật.
Tên cột dọc | Giá trị |
---|---|
TÔI | số 8 |
TÊN | Loki |
TUỔI TÁC | 32 |
ĐỊA CHỈ | Hyderabad |
TIỀN LƯƠNG | 3000 |
Sử dụng truy vấn sau để chèn bản ghi đã cho vào truy vấn cơ sở dữ liệu H2.
MERGE INTO CUSTOMER KEY (ID) VALUES (8, 'Loki', 32, 'Hyderabad', 3000);
Truy vấn trên tạo ra kết quả sau.
Update count: 1
Hãy để chúng tôi xác minh các bản ghi của bảng Khách hàng bằng cách thực hiện truy vấn sau.
SELECT * FROM CUSTOMER;
Truy vấn trên tạo ra kết quả sau:
TÔI | Tên | Tuổi tác | Địa chỉ | Tiền lương |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000 |
2 | Khilan | 25 | Delhi | 1500 |
3 | Kaushik | 23 | Kota | 2000 |
4 | Chaitali | 25 | Mumbai | 6500 |
5 | Hardik | 27 | Bhopal | 8500 |
6 | Komal | 22 | MP | 4500 |
7 | Muffy | 24 | Indore | 10000 |
số 8 | Loki | 32 | Hyderabad | 3000 |
SHOW là lệnh dùng để hiển thị danh sách các Lược đồ, Bảng hoặc Cột của bảng.
Cú pháp
Sau đây là cú pháp chung của lệnh SHOW.
SHOW { SCHEMAS | TABLES [ FROM schemaName ] |
COLUMNS FROM tableName [ FROM schemaName ] }
Thí dụ
Lệnh sau có thể được sử dụng để lấy danh sách các bảng trong cơ sở dữ liệu hiện tại.
SHOW TABLES;
Lệnh trên tạo ra kết quả sau.
TABLE_NAME | TABLE_SCHEMA |
---|---|
KHÁCH HÀNG | CÔNG CỘNG |
EMP | CÔNG CỘNG |
CREATE là một lệnh SQL chung được sử dụng để tạo Bảng, Lược đồ, Chuỗi, Chế độ xem và Người dùng trong máy chủ Cơ sở dữ liệu H2.
Tạo bảng
Tạo Bảng là một lệnh được sử dụng để tạo một bảng do người dùng xác định trong cơ sở dữ liệu hiện tại.
Cú pháp
Sau đây là cú pháp chung cho lệnh Tạo Bảng.
CREATE [ CACHED | MEMORY ] [ TEMP | [ GLOBAL | LOCAL ] TEMPORARY ]
TABLE [ IF NOT EXISTS ] name
[ ( { columnDefinition | constraint } [,...] ) ]
[ ENGINE tableEngineName [ WITH tableEngineParamName [,...] ] ]
[ NOT PERSISTENT ] [ TRANSACTIONAL ]
[ AS select ]
Bằng cách sử dụng cú pháp chung của lệnh Create Table, chúng ta có thể tạo các loại bảng khác nhau như bảng được lưu trong bộ nhớ cache, bảng bộ nhớ và bảng tạm thời. Sau đây là danh sách để mô tả các mệnh đề khác nhau từ cú pháp đã cho.
CACHED- Các bảng được lưu trong bộ đệm là loại mặc định cho các bảng thông thường. Điều này có nghĩa là số hàng không bị giới hạn bởi bộ nhớ chính.
MEMORY- Các bảng bộ nhớ là kiểu mặc định cho các bảng tạm thời. Điều này có nghĩa là các bảng bộ nhớ không được quá lớn và dữ liệu chỉ mục được giữ trong bộ nhớ chính.
TEMPORARY- Bảng tạm thời bị xóa trong khi đóng hoặc mở cơ sở dữ liệu. Về cơ bản, bảng tạm thời có hai loại -
Loại TOÀN CẦU - Có thể truy cập bằng mọi kết nối.
Loại địa phương - Có thể truy cập bằng kết nối hiện tại.
Kiểu mặc định cho các bảng tạm thời là kiểu toàn cục. Chỉ mục của bảng tạm thời được giữ trong bộ nhớ chính, trừ khi bảng tạm thời được tạo bằng cách sử dụng CREATE CACHED TABLE.
ENGINE - Tùy chọn ENGINE chỉ được yêu cầu khi triển khai bảng tùy chỉnh được sử dụng.
NOT PERSISTENT - Nó là một công cụ sửa đổi để giữ dữ liệu bảng hoàn chỉnh trong bộ nhớ và tất cả các hàng bị mất khi đóng cơ sở dữ liệu.
TRANSACTIONAL - Nó là một từ khóa cam kết một giao dịch mở và lệnh này chỉ hỗ trợ các bảng tạm thời.
Thí dụ
Trong ví dụ này, chúng ta hãy tạo một bảng có tên tutorial_tbl bằng cách sử dụng dữ liệu nhất định sau.
Sr.No | Tên cột dọc | Loại dữ liệu |
---|---|---|
1 | TÔI | Int |
2 | Tiêu đề | Varchar (50) |
3 | Tác giả | Varchar (20) |
4 | Ngày nộp hồ sơ | Ngày |
Truy vấn sau được sử dụng để tạo bảng tutorials_tbl cùng với dữ liệu cột đã cho.
CREATE TABLE tutorials_tbl (
id INT NOT NULL,
title VARCHAR(50) NOT NULL,
author VARCHAR(20) NOT NULL,
submission_date DATE
);
Truy vấn trên tạo ra kết quả sau.
(0) rows effected
Tạo lược đồ
Create Schema là một lệnh được sử dụng để tạo một lược đồ phụ thuộc vào người dùng theo một ủy quyền cụ thể (với người dùng hiện đã đăng ký).
Cú pháp
Sau đây là cú pháp chung của lệnh Create Schema.
CREATE SCHEMA [ IF NOT EXISTS ] name [ AUTHORIZATION ownerUserName ]
Trong cú pháp chung ở trên, AUTHORIZATION là một từ khóa được sử dụng để cung cấp tên người dùng tương ứng. Lệnh này là tùy chọn có nghĩa là nếu chúng tôi không cung cấp tên người dùng, thì nó sẽ xem xét người dùng hiện tại. Người dùng thực thi lệnh phải có quyền quản trị, cũng như chủ sở hữu.
Lệnh này thực hiện một giao dịch mở trong kết nối này.
Thí dụ
Trong ví dụ này, chúng ta hãy tạo một lược đồ có tên test_schema dưới người dùng SA, sử dụng lệnh sau.
CREATE SCHEMA test_schema AUTHORIZATION sa;
Lệnh trên tạo ra kết quả sau.
(0) rows effected
Tạo trình tự
Sequence là khái niệm được sử dụng để tạo một số bằng cách theo sau một chuỗi cho id hoặc bất kỳ giá trị cột ngẫu nhiên nào.
Cú pháp
Sau đây là cú pháp chung của lệnh tạo chuỗi.
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 ]
Cú pháp chung này được sử dụng để tạo một chuỗi. Kiểu dữ liệu của một chuỗi làBIGINT. Trong trình tự này, các giá trị không bao giờ được sử dụng lại, ngay cả khi giao dịch được lùi lại.
Thí dụ
Trong ví dụ này, chúng ta hãy tạo một chuỗi có tên SEQ_ID, sử dụng truy vấn sau.
CREATE SEQUENCE SEQ_ID;
Truy vấn trên tạo ra kết quả sau.
(0) rows effected
ALTER là lệnh được sử dụng để thay đổi cấu trúc bảng bằng cách thêm các mệnh đề khác nhau vào alterchỉ huy. Dựa trên kịch bản, chúng ta cần thêm mệnh đề tương ứng vào lệnh thay đổi. Trong chương này, chúng ta sẽ thảo luận về các kịch bản khác nhau của lệnh thay đổi.
Thêm bảng thay thế
Alter Table Add là lệnh được sử dụng để thêm cột mới vào bảng cùng với kiểu dữ liệu tương ứng. Lệnh này thực hiện giao dịch trong kết nối này.
Cú pháp
Sau đây là cú pháp chung của lệnh Alter Table Add.
ALTER TABLE [ IF EXISTS ] tableName ADD [ COLUMN ]
{ [ IF NOT EXISTS ] columnDefinition [ { BEFORE | AFTER } columnName ]
| ( { columnDefinition } [,...] ) }
Thí dụ
Trong ví dụ này, chúng tôi sẽ thêm một cột mới start_date đến bàn tutorials_tbl. Kiểu dữ liệu cho start_date là Date. Sau đây là truy vấn để thêm một cột mới.
ALTER TABLE tutorials_tbl ADD start_date DATE;
Truy vấn trên tạo ra kết quả sau.
(6) rows effected
Thay đổi Bảng Thêm Ràng buộc
Ràng buộc thêm bảng thay thế là lệnh được sử dụng để thêm các ràng buộc khác nhau vào bảng như khóa chính, khóa ngoại, không phải null, v.v.
Các chỉ mục bắt buộc được tạo tự động nếu chúng chưa tồn tại. Không thể tắt kiểm tra ràng buộc duy nhất. Lệnh này thực hiện một giao dịch mở trong kết nối này.
Cú pháp
Sau đây là cú pháp chung của lệnh thêm ràng buộc bảng Alter.
ALTER TABLE [ IF EXISTS ] tableName ADD constraint [ CHECK | NOCHECK ]
Thí dụ
Trong ví dụ này, chúng ta hãy thêm một ràng buộc khóa chính (tutorials_tbl_pk) đến id cột của bảng tutorials_tbl, sử dụng truy vấn sau.
ALTER TABLE tutorials_tbl ADD CONSTRAINT tutorials_tbl_pk PRIMARYKEY(id);
Truy vấn trên tạo ra kết quả sau.
(6) row (s) effected
Ràng buộc Đổi tên bảng thay thế
Lệnh này được sử dụng để đổi tên tên ràng buộc của một bảng quan hệ cụ thể. Lệnh này thực hiện một giao dịch mở trong kết nối này.
Cú pháp
Sau đây là cú pháp chung của lệnh Alter Table Rename Constraint.
ALTER TABLE [ IF EXISTS ] tableName RENAME oldConstraintName TO newConstraintName
Trong khi sử dụng cú pháp này, hãy đảm bảo rằng tên ràng buộc cũ phải tồn tại với cột tương ứng.
Thí dụ
Trong ví dụ này, chúng tôi sẽ thay đổi tên ràng buộc khóa chính của bảng tutorials_tbl từ tutorials_tbl_pk đến tutorials_tbl_pk_constraint. Sau đây là truy vấn để làm như vậy.
ALTER TABLE tutorials_tbl RENAME CONSTRAINT
tutorials_tbl_pk TO tutorials_tbl_pk_constraint;
Truy vấn trên tạo ra kết quả sau.
(1) row (s) effected
Cột thay đổi bảng thay đổi
Lệnh này được sử dụng để thay đổi cấu trúc và thuộc tính của cột của một bảng cụ thể. Thay đổi thuộc tính có nghĩa là thay đổi kiểu dữ liệu của cột, đổi tên cột, thay đổi giá trị nhận dạng hoặc thay đổi tính chọn lọc.
Cú pháp
Sau đây là cú pháp chung của lệnh 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 } }
Trong cú pháp trên -
RESTART - lệnh thay đổi giá trị tiếp theo của cột tăng tự động.
SELECTIVITY- lệnh đặt độ chọn lọc (1-100) cho một cột. Dựa trên giá trị chọn lọc, chúng ta có thể hình dung giá trị của cột.
SET DEFAULT - thay đổi giá trị mặc định của một cột.
SET NULL - Đặt cột để cho phép NULL.
SET NOT NULL - đặt cột để cho phép NOT NULL.
Thí dụ
Trong ví dụ này, chúng tôi sẽ đổi tên cột của bảng tutorials_tbl từ Title đến Tutorial_Title sử dụng truy vấn sau.
ALTER TABLE tutorials_tbl ALTER COLUMN title RENAME TO tutorial_title;
Truy vấn trên tạo ra kết quả sau.
(0) row(s) effected
Theo cách tương tự, chúng ta có thể thực hiện các kịch bản khác nhau bằng lệnh ALTER.
DROP là một lệnh được lấy từ ngữ pháp SQL chung. Lệnh này được sử dụng để xóa một thành phần cơ sở dữ liệu và cấu trúc của nó khỏi bộ nhớ. Có các tình huống khác nhau với lệnh Drop mà chúng ta sẽ thảo luận trong chương này.
Bảng thả
Drop Table là lệnh xóa bảng tương ứng và cấu trúc của nó.
Cú pháp
Sau đây là cú pháp chung của lệnh Drop Table.
DROP TABLE [ IF EXISTS ] tableName [,...] [ RESTRICT | CASCADE ]
Lệnh sẽ không thành công nếu chúng ta đang sử dụng RESTRICT và tồn tại bảng có các khung nhìn phụ thuộc. Tất cả các lượt xem phụ thuộc sẽ bị loại bỏ khi chúng ta đang sử dụng từ khóa CASCADE.
Thí dụ
Trong ví dụ này, chúng tôi sẽ thả một bảng có tên là kiểm tra bằng cách sử dụng truy vấn sau.
DROP TABLE test;
Truy vấn trên tạo ra kết quả sau.
(6) row (s) effected
Lược đồ thả
Drop Schema là một lệnh thả một lược đồ tương ứng từ máy chủ cơ sở dữ liệu. Nó sẽ không hoạt động từ lược đồ hiện tại.
Cú pháp
DROP SCHEMA [ IF EXISTS ] schemaName
Thí dụ
Trong ví dụ này, chúng tôi sẽ thả một lược đồ có tên test_schema sử dụng truy vấn sau.
DROP SCHEMA TEST_SCHEMA;
Truy vấn trên tạo ra kết quả sau.
(0) row(s) effected
Thả trình tự
Drop Sequence là một lệnh được sử dụng để loại bỏ một chuỗi từ cấu trúc bảng.
Cú pháp
Sau đây là cú pháp chung của lệnh Drop Sequence.
DROP SEQUENCE [ IF EXISTS ] sequenceName
Lệnh này thực hiện một giao dịch mở trong kết nối này.
Thí dụ
Trong ví dụ này, chúng tôi sẽ thả một chuỗi có tên sequence_id. Sau đây là lệnh.
DROP SEQUENCE sequence_id;
Lệnh trên tạo ra kết quả sau.
(0) row (s) effected
Drop View
Drop View là một lệnh được sử dụng để thả chế độ xem hiện có. Tất cả các khung nhìn phụ thuộc cũng bị loại bỏ nếu sử dụng mệnh đề CASCADE.
Cú pháp
Sau đây là cú pháp chung của lệnh Drop View.
DROP VIEW [ IF EXISTS ] viewName [ RESTRICT | CASCADE ]
Thí dụ
Trong ví dụ này, chúng tôi sẽ thả một chế độ xem có tên sample_view sử dụng truy vấn sau.
DROP VIEW sample_view;
Truy vấn trên tạo ra kết quả sau.
(0) row (s) effected
TRUNCATE là lệnh dùng để xóa dữ liệu khỏi bảng. Không giống như DELETE FROM mà không có mệnh đề WHERE, lệnh này không thể được cuộn lại. Lệnh này thực hiện một giao dịch mở trong kết nối này.
Cú pháp
Sau đây là cú pháp chung của lệnh truncate.
TRUNCATE TABLE tableName
Thí dụ
Trong ví dụ này, chúng tôi sẽ cắt bớt một bảng có tên test sử dụng truy vấn sau.
TRUNCATE TABLE test;
Truy vấn trên tạo ra kết quả sau.
(6) row (s) effected
COMMIT là một lệnh từ ngữ pháp SQL được sử dụng để thực hiện giao dịch. Chúng tôi có thể cam kết giao dịch cụ thể hoặc chúng tôi có thể cam kết giao dịch hiện đang được thực hiện.
Cú pháp
Có hai cú pháp khác nhau cho lệnh COMMIT.
Sau đây là cú pháp chung cho lệnh cam kết để thực hiện giao dịch hiện tại.
COMMIT [ WORK ]
Sau đây là cú pháp chung cho lệnh cam kết để thực hiện giao dịch cụ thể.
COMMIT TRANSACTION transactionName
ví dụ 1
Trong ví dụ này, chúng ta hãy cam kết giao dịch hiện tại bằng lệnh sau.
COMMIT
Lệnh trên tạo ra kết quả sau.
Committed successfully
Ví dụ 2
Trong ví dụ này, chúng tôi sẽ cam kết giao dịch có tên tx_test bằng cách sử dụng lệnh sau.
COMMIT TRANSACTION tx_test;
Lệnh trên tạo ra kết quả sau.
Committed successfully
Grant là một lệnh đến từ ngữ pháp SQL được sử dụng để cấp quyền cho bảng, cho người dùng hoặc cho một vai trò. Quyền quản trị được yêu cầu để thực hiện lệnh này. Lệnh này thực hiện một giao dịch mở trong kết nối này.
Trong chương này, chúng ta sẽ thảo luận về các kịch bản khác nhau của lệnh Grant.
Cấp quyền
Grant Right là lệnh cung cấp quyền quản trị cho bảng, cho người dùng hoặc cho một vai trò.
Cú pháp
Sau đây là cú pháp chung của lệnh Grant.
GRANT { SELECT | INSERT | UPDATE | DELETE | ALL } [,...] ON
{ { SCHEMA schemaName } | { tableName [,...] } }
TO { PUBLIC | userName | roleName }
Thí dụ
Trong ví dụ này, chúng tôi sẽ cấp bảng kiểm tra ở dạng chỉ đọc bằng lệnh sau.
GRANT SELECT ON TEST TO READONLY
Lệnh trên tạo ra kết quả sau.
Grant successfully
Grant Alter Bất kỳ Lược đồ nào
Grant Alter Any Schema là lệnh cấp quyền thay đổi giản đồ cho người dùng tương ứng.
Cú pháp
Sau đây là cú pháp chung của lệnh Grant Alter Any Schema.
GRANT ALTER ANY SCHEMA TO userName
Thí dụ
Trong ví dụ này, chúng tôi sẽ cấp các đặc quyền thay đổi lược đồ cho người dùng có tên test_user. Đảm bảo rằng test_user tồn tại. Sau đây là truy vấn để cấp các đặc quyền thay đổi.
GRANT ALTER ANY SCHEMA TO test_user;
Truy vấn trên tạo ra kết quả sau.
Granted successfully to test_user
SAVEPOINT là một lệnh được sử dụng để tạm thời lưu giao dịch. Tốt hơn là nên duy trì các điểm lưu trong giao dịch của bạn vì sẽ hữu ích khi quay lại giao dịch về Điểm lưu tương ứng bất cứ khi nào cần thiết.
Cú pháp
Sau đây là cú pháp chung của lệnh Savepoint.
SAVEPOINT savepointName
Thí dụ
Trong ví dụ này, chúng ta sẽ tạo một Savepoint có tên Half_Done bằng lệnh sau.
SAVEPOINT Half_Done;
Lệnh trên tạo ra kết quả sau.
Savepoint created
ROLLBACK là một lệnh từ ngữ pháp SQL được sử dụng để quay trở lại giao dịch đến Điểm lưu hoặc về giao dịch trước đó. Bằng cách sử dụng lệnh này, chúng ta có thể quay trở lại Savepoint cụ thể hoặc chúng ta có thể quay trở lại giao dịch đã thực hiện trước đó.
Cú pháp
Có hai cú pháp khác nhau cho lệnh ROLLABCK.
Sau đây là cú pháp chung cho lệnh rollback.
ROLLBACK [ TO SAVEPOINT savepointName ]
Sau đây là cú pháp chung của lệnh Rollback đối với giao dịch cụ thể.
ROLLBACK TRANSACTION transactionName
ví dụ 1
Trong ví dụ này, chúng tôi sẽ khôi phục giao dịch hiện tại đến một Điểm lưu có tên sp1_test bằng cách sử dụng lệnh sau.
ROLLBACK sp1_test;
Lệnh trên tạo ra kết quả sau.
Rollback successfully
Ví dụ 2
Trong ví dụ sau, chúng tôi sẽ khôi phục giao dịch hoàn chỉnh có tên tx_test bằng cách sử dụng lệnh đã cho.
ROLLBACK TRANSACTION tx_test;
Lệnh trên tạo ra kết quả sau.
Rollback successfully
H2 là một cơ sở dữ liệu JAVA. Chúng tôi có thể tương tác với cơ sở dữ liệu này bằng cách sử dụng JDBC. Trong chương này, chúng ta sẽ xem cách tạo kết nối JDBC với cơ sở dữ liệu H2 và các hoạt động CRUD với cơ sở dữ liệu H2.
Nói chung, có năm bước để tạo kết nối JDBC.
Step 1 - Đăng ký trình điều khiển cơ sở dữ liệu JDBC.
Class.forName ("org.h2.Driver");
Step 2 - Mở kết nối.
Connection conn = DriverManager.getConnection ("jdbc:h2:~/test", "sa","");
Step 3 - Tạo một tuyên bố.
Statement st = conn.createStatement();
Step 4 - Thực hiện một câu lệnh và nhận tập tin kết quả.
Stmt.executeUpdate("sql statement");
Step 5 - Đang đóng kết nối.
conn.close();
Trước khi chuyển sang tạo một chương trình đầy đủ, chúng ta cần thêm h2-1.4.192.jar filetới CLASSPATH. Chúng ta có thể lấy cái nàyjar từ thư mục C:\Program Files (x86)\H2\bin.
Tạo bảng
Trong ví dụ này, chúng ta sẽ viết một chương trình để tạo bảng. Hãy xem xét một bảng có tênRegistration có các trường sau đây.
S.Không | Tên cột dọc | Loại dữ liệu | CÓ GIÁ TRỊ | Khóa chính |
---|---|---|---|---|
1 | TÔI | Con số | Đúng | Đúng |
2 | Đầu tiên | Varchar (255) | Không | Không |
3 | Cuối cùng | Varchar (255) | Không | Không |
4 | Tuổi tác | Con số | Không | Không |
Sau đây là một chương trình ví dụ có tên 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!");
}
}
Lưu chương trình trên vào H2jdbcCreateDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcCreateDemo.java
\>java H2jdbcCreateDemo
Lệnh trên tạo ra kết quả sau.
Connecting to database...
Creating table in given database...
Created table in given database...
Goodbye!
Sau khi thực hiện, chúng ta có thể kiểm tra bảng được tạo bằng giao diện H2 SQL.
Chèn hồ sơ
Trong ví dụ này, chúng ta sẽ viết một chương trình để chèn các bản ghi. Hãy để chúng tôi chèn các bản ghi sau vào bảng Đăng ký.
TÔI | Đầu tiên | Cuối cùng | Tuổi tác |
---|---|---|---|
100 | Zara | Ali | 18 |
101 | Mahnaz | Fatma | 25 |
102 | Zaid | Khan | 30 |
103 | Sumit | Mital | 28 |
Sau đây là một chương trình ví dụ có tên 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!");
}
}
Lưu chương trình trên vào H2jdbcInsertDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcInsertDemo.java
\>java H2jdbcInsertDemo
Lệnh trên tạo ra kết quả sau.
Connecting to a selected database...
Connected database successfully...
Inserted records into the table...
Goodbye!
Đọc bản ghi
Trong ví dụ này, chúng ta sẽ viết một chương trình để đọc các bản ghi. Hãy để chúng tôi cố gắng đọc tất cả các bản ghi từ bảngRegistration.
Sau đây là một chương trình ví dụ có tên 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!");
}
}
Lưu chương trình trên vào H2jdbcReadDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcReadDemo.java
\>java H2jdbcReadDemo
Lệnh trên tạo ra kết quả sau.
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!
Cập nhật hồ sơ
Trong ví dụ này, chúng ta sẽ viết một chương trình để cập nhật các bản ghi. Hãy để chúng tôi cố gắng đọc tất cả các bản ghi từ bảngRegistration.
Sau đây là một chương trình ví dụ có tên 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!");
}
}
Lưu chương trình trên vào H2jdbcUpdateDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcUpdateDemo.java
\>java H2jdbcUpdateDemo
Lệnh trên tạo ra kết quả sau.
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!
Xóa bản ghi
Trong ví dụ này, chúng ta sẽ viết một chương trình để xóa các bản ghi. Hãy để chúng tôi cố gắng đọc tất cả các bản ghi từ bảngRegistration.
Sau đây là một chương trình ví dụ có tên 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!");
}
}
Lưu chương trình trên vào H2jdbcDeleteDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcDeleteDemo.java
\>java H2jdbcDeleteDemo
Lệnh trên tạo ra kết quả sau.
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!