Apache Derby - Hướng dẫn nhanh

Apache Derby là một Rphấn chấn Database Msự suy yếu System hoàn toàn dựa trên (được viết / triển khai bằng) ngôn ngữ lập trình Java. Nó là một cơ sở dữ liệu mã nguồn mở được phát triển bởi Apache Software Foundation.

Oracle đã phát hành phiên bản tương đương của Apache Derby với tên gọi JavaDB.

Đặc điểm của Apache Derby

Sau đây là các tính năng đáng chú ý của cơ sở dữ liệu Derby:

  • Platform independent - Derby sử dụng định dạng cơ sở dữ liệu trên đĩa, nơi các cơ sở dữ liệu trong đó được lưu trữ trong một tệp trong đĩa trong thư mục có cùng tên với cơ sở dữ liệu.

  • No modifying data - Do đó, bạn có thể di chuyển cơ sở dữ liệu derby sang các máy khác mà không cần sửa đổi dữ liệu.

  • Transactional support - Derby cung cấp hỗ trợ hoàn chỉnh cho các giao dịch đảm bảo tính toàn vẹn của dữ liệu.

  • Including databases - Bạn có thể bao gồm cơ sở dữ liệu trước khi xây dựng / hiện có vào các ứng dụng derby hiện tại của bạn.

  • Less space - Cơ sở dữ liệu Derby có một dấu ấn nhỏ, tức là nó chiếm ít không gian hơn và dễ sử dụng và triển khai nó.

  • Embed with Java Application- Derby cung cấp một công cụ cơ sở dữ liệu nhúng có thể được nhúng vào các ứng dụng Java và nó sẽ được chạy trong cùng một JVM với ứng dụng. Đơn giản chỉ cần tải trình điều khiển khởi động cơ sở dữ liệu và nó dừng với các ứng dụng.

Hạn chế của Apache Derby

Sau đây là những hạn chế của Apache Derby -

  • Derby không hỗ trợ chỉ mục cho các kiểu dữ liệu như BLOB và LONGVARCHAR.

  • Nếu Derby không có đủ dung lượng đĩa, nó sẽ tắt ngay lập tức.

Lưu trữ dữ liệu

Trong khi lưu trữ dữ liệu, Apache Derby tuân theo một khái niệm được gọi là conglomerate. Trong đó, dữ liệu của một bảng sẽ được lưu trữ trong một tệp riêng biệt. Theo cách tương tự, mỗi chỉ mục của bảng cũng được lưu trữ trong một tệp riêng biệt. Do đó, sẽ có một tệp riêng cho mọi bảng hoặc chỉ mục trong cơ sở dữ liệu.

Thư viện / thành phần Apache Derby

Phân phối Apache Derby cung cấp các thành phần khác nhau. Trong thư mục lib của bản phân phối apache mà bạn đã tải xuống, bạn có thể quan sát các tệp jar đại diện cho các thành phần khác nhau.

Tệp Jar Thành phần Sự miêu tả
derby.jar Công cụ cơ sở dữ liệu và trình điều khiển JDBC

Công cụ cơ sở dữ liệu của Apache Derby là một công cụ cơ sở dữ liệu quan hệ nhúng hỗ trợ JDBC và API SQL.

Điều này cũng hoạt động như Trình điều khiển nhúng, sử dụng mà bạn có thể giao tiếp với Derby bằng các ứng dụng Java.

derbynet.jar derbyrun.jar Máy chủ mạng

Network Sever của Apache Derby cung cấp chức năng máy chủ khách hàng, nơi các máy khách có thể kết nối với máy chủ Derby thông qua mạng.

derbyclient.jar Trình điều khiển JDBC của máy khách mạng
derbytools.jar Công cụ dòng lệnh Tệp jar này chứa các công cụ như sysinfo, ijdblook.
derbyoptionaltools.jar Tiện ích dòng lệnh tùy chọn (công cụ)

Tệp jar này cung cấp các công cụ tùy chọn: công cụ tùy chọn databaseMetaData, công cụ tùy chọn ForeignViews, công cụ tùy chọn luceneSupport, công cụ tùy chọn rawDBReader, công cụ tùy chọn simpleJson, v.v.

derbyLocale_XX.jar Jar tệp để bản địa hóa thư

Ngoài các tệp jar được đề cập ở trên, bạn có thể thấy một số derbyLocale_XX.jar (es, fr, hu, it, ja, v.v.). Sử dụng những thứ này, bạn có thể bản địa hóa các thông điệp của Apache Derby.

Bạn có thể triển khai apache derby ở hai chế độ, cụ thể là chế độ nhúng và chế độ máy chủ.

Chế độ nhúng

Bạn có thể chạy derby ở chế độ nhúng bằng ứng dụng Java (sử dụng trình điều khiển nhúng). Nếu bạn triển khai Derby ở chế độ nhúng, công cụ cơ sở dữ liệu sẽ chạy trong cùng một JVM với ứng dụng Java. Nó bắt đầu và dừng với ứng dụng. Bạn chỉ có thể truy cập cơ sở dữ liệu với ứng dụng này.

Chế độ máy chủ

Ở chế độ máy chủ, derby sẽ được chạy trong JVM của một máy chủ ứng dụng, nơi bạn có thể gửi yêu cầu đến máy chủ để truy cập nó. Không giống như ở chế độ nhúng, nhiều ứng dụng (java) có thể gửi yêu cầu đến máy chủ và truy cập cơ sở dữ liệu.

Chương sau giải thích cách tải xuống và cài đặt Apache Derby.

Tải xuống Apache Derby

Ghé thăm trang chủ của trang chủ Apache Derby https://db.apache.org/derby/. Nhấp vào tab Tải xuống.

Chọn và nhấp vào liên kết của phiên bản Apache Derby mới nhất.

Khi nhấp vào liên kết đã chọn, bạn sẽ được chuyển hướng đến Distributionstrang của trận derby apache. Nếu bạn quan sát ở đây, derby cung cấp các bản phân phối cụ thể là db-derby-bin, db-derbylib.zip, db-derby-lib-debug.zip và db-derby-src.zip.

Tải về db-derby-binthư mục. Sao chép nội dung của nó vào một thư mục riêng biệt mà bạn muốn cài đặt Apache Derby. (ví dụ, nóiC:\Derby)

Bây giờ, để làm việc với Derby,

  • Đảm bảo rằng bạn đã đặt JAVA_HOME bằng cách chuyển vị trí của thư mục bin của thư mục Cài đặt Java và bao gồm JAVA_HOME/bin trong biến PATH.

  • Tạo một biến môi trường mới, DERBY_HOME với giá trị C: \ Derby.

  • Thư mục bin của bản phân phối db-derby-bin (chúng tôi đã đổi thành C: \ Derby \ bin) chứa tất cả các tệp jar cần thiết.

Như đã thảo luận, Apache Derby có thể được cài đặt / triển khai theo hai cách như sau:

  • Embedded mode- Trong phần này, bạn cần truy cập cơ sở dữ liệu bằng trình điều khiển Embedded Derby JDBC. Bạn có thể bắt đầu và dừng trận derby thông qua ứng dụng Java. Cả cơ sở dữ liệu và ứng dụng của bạn sẽ chạy trên cùng một JVM.

  • Network Server mode- Trong chế độ này, bạn có thể truy cập Derby theo kiểu máy chủ khách hàng điển hình, nơi Derby được nhúng vào hệ thống máy chủ. Sau đó, các máy khách chạy trong JVM khác nhau (của Máy chủ) sẽ gửi các yêu cầu đến máy chủ và máy chủ phản hồi lại các yêu cầu đó.

Máy khách có thể là một JVM khác trong cùng một máy hệ thống của máy chủ hoặc một ứng dụng Java từ một hệ thống từ xa.

Cài đặt Derby ở chế độ nhúng

Để cài đặt Apache Derby ở chế độ nhúng, hãy bao gồm tệp jar derby.jar trong CLASSPATH của bạn.

Hoặc, bạn có thể đặt classpath cho các tệp jar được yêu cầu bằng cách chạy setEmbeddedCPchỉ huy. Duyệt quabin thư mục của Apache Derby và chạy tệp này như hình dưới đây -

C:\Users\MYUSER>cd %DERBY_HOME%/bin
C:\Derby\bin>setEmbeddedCP.bat
C:\Derby\bin>SET DERBY_HOME=C:\Derby
C:\Derby\bin>set
CLASSPATH=C:\Derby\lib\derby.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib/derby
optionaltools.jar;C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\*;

Sau khi thiết lập Apache Derby, để truy cập nó, hãy chạy các chương trình Java bằng trình điều khiển nhúng.

xác minh

Bạn có thể xác minh thiết lập bằng cách sử dụng ij công cụ như hình dưới đây -

C:\Derby\bin>ij
ij version 10.14
ij> connect 'jdbc:derby:SampleDB;create=true';
ij>

Cài đặt Derby ở Chế độ Máy chủ Mạng

Để cài đặt Apache Derby ở chế độ máy chủ mạng, bạn cần bao gồm derbynet.jarderbytools.jar tệp vào CLASSPATH.

Hoặc, bạn có thể đặt đường dẫn lớp cho các tệp jar bắt buộc bằng cách chạy setNetworkServerCPchỉ huy. Duyệt quabin thư mục của Apache Derby và chạy tệp này như hình dưới đây -

C:\Users\MYUSER>cd %DERBY_HOME%/bin
C:\Derby\bin>setNetworkServerCP.bat
C:\Derby\bin>SET DERBY_INSTALL=C:\Derby
C:\Derby\bin>set
CLASSPATH=C:\Derby\lib\derbynet.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib/de
rbyoptionaltools.jar;C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\*;

Bắt đầu Derby ở Chế độ máy chủ

Bạn có thể khởi động Máy chủ Mạng bằng cách chạy lệnh startNetworkServer. Duyệt quabin thư mục của Apache Derby và chạy lệnh này như hình dưới đây:

C:\Derby\bin>startNetworkServer
Fri Jan 04 11:20:30 IST 2019 : Security manager installed using the Basic
server security policy.
Fri Jan 04 11:20:30 IST 2019 : Apache Derby Network Server - 10.14.2.0 -
(1828579) started and ready to accept connections on port 1527

Hoặc, bạn có thể khởi động máy chủ bằng derbyrun.jar như hình dưới đây -

C:\Users\MYUSER>cd %DERBY_HOME%/lib
C:\Derby\lib>java -jar derbyrun.jar server start
Fri Jan 04 11:27:20 IST 2019: Security manager installed using the Basic server
security policy.
Fri Jan 04 11:27:21 IST 2019: Apache Derby Network Server - 10.14.2.0 -
(1828579) started and ready to accept connections on port 1527

Máy khách mạng

Trong ứng dụng khách, hãy thêm các tệp jar derbyclient.jarderbytools.jarvào CLASSPATH. Hoặc, chạysetNetworkClientCP lệnh như hình dưới đây -

C:\Users\MYUSER>cd %DERBY_HOME%/bin
C:\Derby\bin>setNetworkClientCP
C:\Derby\bin>SET DERBY_HOME=C:\Derby
C:\Derby\bin>set
CLASSPATH=C:\Derby\lib\derbyclient.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib
/derbyoptionaltools.jar;C:\Derby\lib\derby.jar;C:\Derby\lib\derbytools.jar;C:\D
erby/lib/derbyoptionaltools.jar;C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\*;

Sau đó từ máy khách này, bạn có thể gửi yêu cầu đến máy chủ.

xác minh

Bạn có thể xác minh thiết lập bằng cách sử dụng ij công cụ như hình dưới đây -

C:\Derby\bin>ij
ij version 10.14
ij> connect 'jdbc:derby://localhost:1527/SampleDB;create=true';
ij>

Môi trường Eclipse Apache Derby

Trong khi làm việc với Eclipse, bạn cần đặt đường dẫn xây dựng cho tất cả các tệp jar cần thiết.

Bước 1: Tạo dự án và thiết lập đường dẫn xây dựng

Mở nhật thực và tạo một dự án mẫu. Nhấp chuột phải vào dự án và chọn tùy chọnBuild Path -> Configure Build Đường dẫn như hình bên dưới -

bên trong Java Build Path khung trong Libraries nhấp vào Add External JARs.

Và chọn yêu cầu jar các tệp trong thư mục lib của thư mục cài đặt Derby và nhấp vào Apply and Close.

Apache Derby cung cấp cho bạn các công cụ như sysinfo, ij và, dblook.

công cụ sysinfo

Sử dụng công cụ này, bạn có thể nhận được thông tin về môi trường Java và Derby.

Duyệt qua thư mục bin của thư mục cài đặt Derby và thực hiện lệnh sysinfo như hình dưới đây -

C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>sysinfo

Khi thực thi, nó cung cấp cho bạn thông tin hệ thống về java và derby như được cung cấp bên dưới:

------------------ Java Information ------------------
Java Version: 1.8.0_101
Java Vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_101\jre
Java classpath: C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\derby.jar;C:\Derby\lib\derbyclient.jar;C:\Derby\lib\derb
yLocale_cs.jar;C:\Derby\lib\derbyLocale_de_DE.jar;C:\Derby\lib\derbyLocale_es.j
ar;C:\Derby\lib\derbyLocale_fr.jar;C:\Derby\lib\derbyLocale_hu.jar;C:\Derby\lib
\derbyLocale_it.jar;C:\Derby\lib\derbyLocale_ja_JP.jar;C:\Derby\lib\derbyLocale
_ko_KR.jar;C:\Derby\lib\derbyLocale_pl.jar;C:\Derby\lib\derbyLocale_pt_BR.jar;C
:\Derby\lib\derbyLocale_ru.jar;C:\Derby\lib\derbyLocale_zh_CN.jar;C:\Derby\lib\
derbyLocale_zh_TW.jar;C:\Derby\lib\derbynet.jar;C:\Derby\lib\derbyoptionaltools
.jar;C:\Derby\lib\derbyrun.jar;C:\Derby\lib\derbytools.jar;;C:\Derby/lib/derby.
jar;C:\Derby/lib/derbynet.jar;C:\Derby/lib/derbyclient.jar;C:\Derby/lib/derbyto
ols.jar;C:\Derby/lib/derbyoptionaltools.jar
OS name: Windows 10
OS architecture: amd64
OS version: 10.0
Java user name: Tutorialspoint
Java user home: C:\Users\Tutorialspoint
Java user dir: C:\Derby\bin
java.specification.name: Java Platform API Specification
java.specification.version: 1.8
java.runtime.version: 1.8.0_101-b13
--------- Derby Information --------
[C:\Derby\lib\derby.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbytools.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbynet.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbyclient.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbyoptionaltools.jar] 10.14.2.0 - (1828579)
------------------------------------------------------
----------------- Locale Information -----------------
Current Locale : [English/United States [en_US]]
Found support for locale: [cs]
 version: 10.14.2.0 - (1828579)
Found support for locale: [de_DE]
 version: 10.14.2.0 - (1828579)
Found support for locale: [es]
 version: 10.14.2.0 - (1828579)
Found support for locale: [fr]
 version: 10.14.2.0 - (1828579)
Found support for locale: [hu]
 version: 10.14.2.0 - (1828579)
Found support for locale: [it]
 version: 10.14.2.0 - (1828579)
Found support for locale: [ja_JP]
 version: 10.14.2.0 - (1828579)
Found support for locale: [ko_KR]
 version: 10.14.2.0 - (1828579)
Found support for locale: [pl]
 version: 10.14.2.0 - (1828579)
Found support for locale: [pt_BR]
 version: 10.14.2.0 - (1828579)
Found support for locale: [ru]
 version: 10.14.2.0 - (1828579)
Found support for locale: [zh_CN]
 version: 10.14.2.0 - (1828579)
Found support for locale: [zh_TW]
 version: 10.14.2.0 - (1828579)
------------------------------------------------------
------------------------------------------------------

ijtool

Sử dụng công cụ này, bạn có thể chạy các tập lệnh và truy vấn của apache Derby.

Duyệt qua thư mục bin của thư mục cài đặt Derby và thực hiện lệnh ij như hình dưới đây -

C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>ij

Điều này sẽ cung cấp cho bạn ij shell nơi bạn có thể thực hiện lệnh derby và các tập lệnh, như được hiển thị bên dưới:

ij version 10.14
ij>

Sử dụng help , bạn có thể nhận được danh sách các lệnh được hỗ trợ bởi trình bao này.

C:\Derby\bin>cd %DERBY_HOME%/bin
C:\Derby\bin>ij
ij version 10.14
ij> help;
Supported commands include:
 PROTOCOL 'JDBC protocol' [ AS ident ];
 -- sets a default or named protocol
 DRIVER 'class for driver'; -- loads the named class
 CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ];
 -- connects to database URL
 -- and may assign identifier
 SET CONNECTION connectionName; -- switches to the specified connection
 SHOW CONNECTIONS; -- lists all connections
 AUTOCOMMIT [ ON | OFF ]; -- sets autocommit mode for the connection
 DISCONNECT [ CURRENT | connectionName | ALL ];
 -- drop current, named, or all connections;
-- the default is CURRENT
 SHOW SCHEMAS; -- lists all schemas in the current database
 SHOW [ TABLES | VIEWS | PROCEDURES | FUNCTIONS | SYNONYMS ] { IN schema };
 -- lists tables, views, procedures, functions or
synonyms
 SHOW INDEXES { IN schema | FROM table };
 -- lists indexes in a schema, or for a table
 SHOW ROLES; -- lists all defined roles in the database,
sorted
 SHOW ENABLED_ROLES; -- lists the enabled roles for the current
 -- connection (to see current role use
 -- VALUES CURRENT_ROLE), sorted
 SHOW SETTABLE_ROLES; -- lists the roles which can be set for the
 -- current connection, sorted
 DESCRIBE name; -- lists columns in the named table
 COMMIT; -- commits the current transaction
 ROLLBACK; -- rolls back the current transaction
 PREPARE name AS 'SQL-J text'; -- prepares the SQL-J text
 EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;
 -- executes the statement with parameter
-- values from the USING result set row
 REMOVE name; -- removes the named previously prepared
statement
 RUN 'filename'; -- run commands from the named file
 ELAPSEDTIME [ ON | OFF ]; -- sets elapsed time mode for ij
 MAXIMUMDISPLAYWIDTH integerValue;
 -- sets the maximum display width for
-- each column to integerValue
 ASYNC name 'SQL-J text'; -- run the command in another thread
 WAIT FOR name; -- wait for result of ASYNC'd command
 HOLDFORCONNECTION; -- sets holdability for a connection to HOLD
 -- (i.e. ResultSet.HOLD_CURSORS_OVER_COMMIT)
 NOHOLDFORCONNECTION; -- sets holdability for a connection to NO HOLD
 -- (i.e. ResultSet.CLOSE_CURSORS_AT_COMMIT)
 GET [SCROLL INSENSITIVE] [WITH { HOLD | NOHOLD }] CURSOR name AS 'SQL-J
query';
 -- gets a cursor (JDBC result set) on the query
-- the default is a forward-only cursor with
holdability
 NEXT name; -- gets the next row from the named cursor
 FIRST name; -- gets the first row from the named scroll
cursor
 LAST name; -- gets the last row from the named scroll
cursor
 PREVIOUS name; -- gets the previous row from the named scroll
cursor
 ABSOLUTE integer name; -- positions the named scroll cursor at the
absolute row number
 -- (A negative number denotes position from the
last row.)
 RELATIVE integer name; -- positions the named scroll cursor relative to
the current row
 -- (integer is number of rows)
 AFTER LAST name; -- positions the named scroll cursor after the
last row
 BEFORE FIRST name; -- positions the named scroll cursor before the
first row
 GETCURRENTROWNUMBER name; -- returns the row number for the current
position of the named scroll cursor
 -- (0 is returned when the cursor is not
positioned on a row.)
 CLOSE name; -- closes the named cursor
 LOCALIZEDDISPLAY [ ON | OFF ];
 -- controls locale sensitive data representation
 EXIT; -- exits ij
 HELP; -- shows this message
Any unrecognized commands are treated as potential SQL-J commands and executed
directly.

dblooktool

Công cụ này được sử dụng để tạo Ngôn ngữ Định nghĩa Dữ liệu.

Duyệt qua thư mục bin của thư mục cài đặt Derby và thực thi dblook lệnh như hình dưới đây -

C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>dblook -d myURL

Ở đâu, myURL là URL kết nối của cơ sở dữ liệu mà bạn cần tạo DDL.

Chương này cung cấp cho bạn cú pháp của tất cả các câu lệnh Apache Derby SQL.

Tất cả các câu lệnh đều bắt đầu bằng bất kỳ từ khóa nào như SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW và tất cả các câu kết thúc bằng dấu chấm phẩy (;).

Các câu lệnh SQL của Apache Derby là trường hợp nhạy cảm bao gồm cả tên bảng.

TẠO Tuyên bố

CREATE TABLE table_name (
   column_name1 column_data_type1 constraint (optional),
   column_name2 column_data_type2 constraint (optional),
   column_name3 column_data_type3 constraint (optional)
);

DROP BẢNG

DROP TABLE table_name;

Tuyên bố INSERT

INSERT INTO table_name VALUES (column_name1, column_name2, ...);

Câu lệnh SELECT

SELECT column_name, column_name, ... FROM table_name;

CẬP NHẬT Tuyên bố

UPDATE table_name
   SET column_name = value, column_name = value, ...
   WHERE conditions;

Tuyên bố DELETE

DELETE FROM table_name WHERE condition;

Tuyên bố MÔ TẢ

Describe table_name

Câu lệnh SQL TRUNCATE TABLE

TRUNCATE TABLE table_name;

Tuyên bố ALTER - Thêm cột

ALTER TABLE table_name ADD COLUMN column_name column_type;

Câu lệnh ALTER - Thêm ràng buộc

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

Tuyên bố ALTER - Cột giảm

ALTER TABLE table_name DROP COLUMN column_name;

Tuyên bố ALTER - Ràng buộc bỏ

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

Mệnh đề WHERE

SELECT * from table_name WHERE condition;
or,
DELETE from table_name WHERE condition;
or,
UPDATE table_name SET column_name = value WHERE condition;

Mệnh đề GROUP BY

SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;

ĐẶT HÀNG THEO Mệnh đề

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

Có mệnh đề

SELECT column1, column2 . . . from table_name GROUP BY column having
condition;

Tạo chỉ mục

CTREATE INDEX index_name on table_name (column_name);

Tạo chỉ mục DUY NHẤT

CREATE UNIQUE INDEX index_name on table_name (column_name);

Tạo chỉ mục COMPOSITE

CREATE INDEX index_name on table_name (column_name1, column_name2);

Hiển thị các chỉ mục

SHOW INDEXES FROM table_name;

Giảm chỉ số

DROP INDEX index_name;

Kiểu dữ liệu là một thuộc tính chỉ định kiểu dữ liệu của bất kỳ đối tượng nào. Mỗi cột, biến và biểu thức có một kiểu dữ liệu liên quan. Bạn có thể sử dụng các kiểu dữ liệu này trong khi tạo bảng của mình. Bạn có thể chọn kiểu dữ liệu cho cột bảng dựa trên yêu cầu của bạn.

Derby Server cung cấp một số danh mục kiểu dữ liệu để bạn sử dụng như được liệt kê bên dưới:

Kiểu dữ liệu số nguyên

Sau đây là danh sách các kiểu dữ liệu số nguyên:

LOẠI DỮ LIỆU KÍCH THƯỚC TỪ ĐẾN
SMALLINT 2 byte -32768 32767
INTEGER 4 byte -2.147.483.648 2.147.483.647
BIGINT 8 byte -9223372036854775808 9223372036854775808

Các kiểu dữ liệu số gần đúng

Sau đây là danh sách các kiểu dữ liệu số gần đúng:

LOẠI DỮ LIỆU KÍCH THƯỚC TỪ ĐẾN
THỰC TẾ 4 byte -3.40E + 38 3,40E + 38
CHÍNH XÁC ĐÔI 8 byte -1,79E + 308 1,79E + 308
PHAO NỔI -1,79E + 308 1,79E + 308

Các kiểu dữ liệu số chính xác

Sau đây là danh sách các kiểu dữ liệu số chính xác:

LOẠI DỮ LIỆU TỪ ĐẾN
QUYẾT ĐỊNH -10 ^ 38 +1 10 ^ 38 -1
SỐ -10 ^ 38 +1 10 ^ 38 -1

Câu lệnh CREATE TABLE được sử dụng để tạo một bảng mới trong cơ sở dữ liệu Derby.

Cú pháp

Sau đây là cú pháp của câu lệnh CREATE.

CREATE TABLE table_name (
   column_name1 column_data_type1 constraint (optional),
   column_name2 column_data_type2 constraint (optional),
   column_name3 column_data_type3 constraint (optional)
);

Một cách khác để tạo bảng trong Apache Derby là bạn có thể chỉ định tên cột và kiểu dữ liệu bằng truy vấn. Cú pháp cho điều này được đưa ra dưới đây:

CREATE TABLE table_name AS SELECT * FROM desired_table WITH NO DATA;

Thí dụ

Câu lệnh SQL sau tạo một bảng có tên Student với bốn cột, trong đó id là khóa chính và nó được tạo tự động.

ij> CREATE TABLE Student (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Age INT NOT NULL,
   First_Name VARCHAR(255),
   last_name VARCHAR(255),
   PRIMARY KEY (Id)
);
> > > > > > > 0 rows inserted/updated/deleted

Lệnh DESCRIBE mô tả bảng cụ thể bằng cách liệt kê các cột và chi tiết của chúng, nếu bảng tồn tại. Bạn có thể sử dụng lệnh này để xác minh xem bảng có được tạo hay không.

ij> DESCRIBE Student;
COLUMN_NAME |TYPE_NAME |DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
AGE |INTEGER |0 |10 |10 |NULL |NULL |NO
FIRST_NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
LAST_NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
4 rows selected

Tạo bảng bằng chương trình JDBC

Phần này hướng dẫn bạn cách tạo bảng trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng làorg.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 / DATABASE_NAME; create = true; user = USER_NAME; passw ord = PASSWORD ".

Làm theo các bước dưới đây để tạo bảng trong Apache Derby -

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp, Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. CácConnectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement or, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() and, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery() phương thức cho kết quả trả về dữ liệu, v.v ... Sử dụng một trong hai phương thức này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ sau của JDBC trình bày cách tạo một bảng trong Apache Derby bằng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateTable {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();
 
      //Executing the query
      String query = "CREATE TABLE Employees( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
         stmt.execute(query);
         System.out.println("Table created");
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau

Table created

Câu lệnh DROP TABLE được sử dụng để xóa một bảng hiện có bao gồm tất cả các trình kích hoạt, ràng buộc, quyền của nó.

Cú pháp

Sau đây là Cú pháp của câu lệnh DROP TABLE.

ij> DROP TABLE table_name;

Thí dụ

Giả sử bạn có một bảng tên là Sinh viên trong cơ sở dữ liệu. Câu lệnh SQL sau đây xóa một bảng có tên là Sinh viên.

ij> DROP TABLE Student;
0 rows inserted/updated/deleted

Vì chúng ta đã xóa bảng nếu chúng ta cố gắng mô tả nó, chúng ta sẽ gặp lỗi như sau

ij> DESCRIBE Student;
IJ ERROR: No table exists with the name STUDENT

Drop Table bằng chương trình JDBC

Phần này hướng dẫn bạn cách thả một bảng trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527/DATABASE_NAME;create = true; user =USER_NAME; passw ord =PASSWORD"

Làm theo các bước dưới đây để thả một bàn trong Apache Derby

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. CácConnectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement hoặc là, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() and, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery() phương thức cho kết quả trả về dữ liệu, v.v ... Sử dụng một trong hai phương thức này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Sau đây ví dụ JDBC trình bày cách thả một bảng trong Apache Derby bằng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class DropTable {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Executing the query
      String query = "DROP TABLE Employees";
      stmt.execute(query);
      System.out.println("Table dropped");
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:

Table dropped

Apache Derby - Chèn dữ liệu

Truy vấn chèn sẽ chèn dữ liệu: new records, vào bảng.

Cú pháp

Sau đây là cú pháp cơ bản của câu lệnh INSERT:

ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...);

trong đó column1, column2 là các giá trị cột trong hàng sẽ được chèn.

Thí dụ

Câu lệnh SQL INSERT sau đây chèn một hàng mới trong bảng Sinh viên, nơi nó sẽ chèn các giá trị trong các cột id, age, first name và, last name.

SQL> INSERT INTO Student VALUES (101, 20, 'Zara', 'Ali');

Cú pháp 2

Hoặc, bạn có thể chèn hai cột cụ thể bằng cách đề cập đến tên cột, như được cung cấp bên dưới -

ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...) VALUES
(value1, value2, ...);

Note- Apache Derby tự động tính toán giá trị cho các cột được tạo. Ví dụ: không cần phải chuyển các giá trị cho cột id trong bảng sinh viên đã tạo trước đó trong hướng dẫn này. Trong trường hợp bảng của bạn đã tạo các cột, hãy sử dụngsyntax2.

Thí dụ

ij> INSERT INTO Student(Age, First_Name, Last_Name) VALUES (21, 'Sucharitha' , 'Tyagi');
1 row inserted/updated/deleted

Và, bạn cũng có thể chèn hai hàng bằng một câu lệnh như sau:

ij>INSERT INTO Student(Age, First_Name, Last_Name) VALUES (20, 'Amit',
'Bhattacharya'), (22, 'Rahul', 'Desai');
2 rows inserted/updated/deleted

Bạn có thể xác minh nội dung của bảng bằng lệnh SELECT (chúng ta sẽ thảo luận về lệnh này sau trong hướng dẫn này).

Cú pháp 3

Bạn có thể sử dụng một truy vấn khác trong câu lệnh chèn như:

INSERT INTO table_Name Query

Thí dụ

Giả sử, chúng ta có một bảng tên là First_Year trong cơ sở dữ liệu như hình dưới đây với các cột tương tự như trong bảng Sinh viên -

ID |AGE |FIRST_NAME |LAST_NAME
-----------------------------------------------------------------
1 |20 |Raju |Pendyala
2 |21 |Bhargav |Prayaga
3 |22 |Deepthi |Yerramilli

Bạn có thể chèn các giá trị trong bảng này vào bảng sinh viên bằng cú pháp trên dưới dạng:

ij> INSERT INTO Student (Age, First_Name, Last_Name)
 SELECT Age, First_Name, Last_Name FROM First_Year;
> 3 rows inserted/updated/deleted

Sau khi thực hiện tất cả các câu lệnh chèn ở trên, bảng Sinh viên sẽ như sau:

ID |AGE |FIRST_NAME |LAST_NAME
-------------------------------------------------------------
1 |21 |Sucharitha |Tyagi
2 |20 |Amit |Bhattacharya
3 |22 |Rahul |Desai
4 |20 |Raju |Pendyala
5 |21 |Bhargav |Prayaga
6 |22 |Deepthi |Yerramilli

Chèn dữ liệu bằng chương trình JDBC

Phần này hướng dẫn bạn cách chèn dữ liệu vào bảng trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"

Làm theo các bước dưới đây để chèn dữ liệu vào bảng trong Apache Derby -

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp, Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. CácConnectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement or, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() và, prepareCall()tương ứng. Tạo bất kỳ đối tượng nào trong số này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute() để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả.

Các executeUpdate()phương thức thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery() phương thức cho kết quả trả về dữ liệu, v.v ... Sử dụng một trong hai phương thức này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ sau JDBC trình bày cách chèn dữ liệu vào bảng trong Apache Derby bằng cách sử dụng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertData {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:SampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      //Executing the query
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      stmt.execute(query);
      System.out.println("Values inserted");
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:

Values inserted

Apache Derby - Truy xuất dữ liệu

Câu lệnh SELECT được sử dụng để lấy dữ liệu từ bảng. Điều này trả về dữ liệu dưới dạng một bảng được gọi là tập kết quả.

Cú pháp

Sau đây là cú pháp của câu lệnh SELECT:

ij> SELECT column_name, column_name, ... FROM table_name;
Or,
Ij>SELECT * from table_name

Thí dụ

Giả sử chúng ta có một bảng có tên Nhân viên trong cơ sở dữ liệu như hình dưới đây:

ij> CREATE TABLE Employees (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   PRIMARY KEY (Id)
);
> > > > > > > 0 rows inserted/updated/deleted

Và, đã chèn bốn bản ghi trong đó như hình dưới đây -

ij> INSERT INTO Employees (Name, Salary, Location) VALUES
 ('Amit', 30000, 'Hyderabad'),
 ('Kalyan', 40000, 'Vishakhapatnam'),
 ('Renuka', 50000, 'Delhi'),
 ('Archana', 15000, 'Mumbai');
> > > > 4 rows inserted/updated/deleted

Câu lệnh SQL sau đây truy xuất tên, tuổi và chi tiết lương của tất cả nhân viên trong bảng;

ij> SELECT Id, Name, Salary FROM Employees;

Đầu ra của truy vấn này là:

ID |NAME |SALARY
------------------------------------------------------------------------
1 |Amit |30000
2 |Kalyan |40000
3 |Renuka |50000
4 |Archana |15000
4 rows selected

Nếu bạn muốn lấy tất cả các bản ghi của bảng này cùng một lúc, hãy sử dụng * thay vì tên của các cột.

ij> select * from Employees;

Điều này sẽ tạo ra kết quả sau:

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
4 rows selected

Lấy dữ liệu bằng chương trình JDBC

Phần này hướng dẫn bạn cách Lấy dữ liệu từ bảng trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 /DATABASE_NAME; create = true; user =USER_NAME; passw ord =PASSWORD"

Làm theo các bước dưới đây để Lấy dữ liệu từ bảng trong Apache Derby -

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. CácConnectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement hoặc là, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() và, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery() phương thức cho kết quả trả về dữ liệu, v.v ... Sử dụng một trong hai phương thức này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ JDBC sau đây trình bày cách Lấy dữ liệu từ một bảng trong Apache Derby bằng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

Các executeQuery() phương thức trả về một ResultSetđối tượng giữ kết quả của câu lệnh. Ban đầu con trỏ thiết lập kết quả sẽ ở bản ghi đầu tiên, bạn có thể in nội dung của đối tượng ResultSet bằng cách sử dụngnext()getXXX() các phương pháp.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class RetrieveData {
   public static void main(String args[]) throws SQLException,
      ClassNotFoundException {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      4Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT Id, Name, Salary FROM Employees";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println(" ");
      }
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau

Id: 1
Name: Amit
Salary: 30000

Id: 2
Name: Kalyan
Salary: 43000

Id: 3
Name: Renuka
Salary: 50000

Id: 4
Name: Archana
Salary: 15000

Id: 5
Name: Trupthi
Salary: 45000

Id: 6
Name: Suchatra
Salary: 33000

Id: 7
Name: Rahul
Salary: 39000

Apache Derby - Cập nhật dữ liệu

Câu lệnh UPDATE được sử dụng để cập nhật dữ liệu trong bảng. Apache Derby cung cấp hai loại cập nhật (cú pháp) cụ thể làsearched cập nhật và positioned cập nhật.

Câu lệnh UPDATE được tìm kiếm cập nhật tất cả các cột được chỉ định của bảng.

Cú pháp

Sau đây là cú pháp của truy vấn UPDATE:

ij> UPDATE table_name
 SET column_name = value, column_name = value, ...
 WHERE conditions;

Mệnh đề WHERE có thể sử dụng các toán tử so sánh như =,! =, <,>, <=, Và> =, cũng như các toán tử BETWEEN và LIKE.

Thí dụ

Giả sử bạn có một bảng Employee trong cơ sở dữ liệu với 4 bản ghi như hình dưới đây:

ID |NAME |SALARY |LOCATION
----------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai

Câu lệnh SQL UPDATE sau đây cập nhật vị trí và mức lương của một nhân viên có tên là Kaylan.

ij> UPDATE Employees SET Location = 'Chennai', Salary = 43000 WHERE Name =
'Kalyan';
1 rows inserted/updated/deleted

Nếu bạn nhận được nội dung của bảng Nhân viên, bạn có thể quan sát các thay đổi được thực hiện bởi truy vấn CẬP NHẬT.

ij> select * from Employees;
ID |NAME |SALARY |LOCATION
----------------------------------------------------------
1 |Amit |30000 |Hyderabad 
2 |Kalyan |43000 |Chennai
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
4 rows selected

Cập nhật dữ liệu bằng chương trình JDBC

Phần này giải thích cách cập nhật các bản ghi hiện có của bảng trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 /DATABASE_NAME; create = true; user =USER_NAME; passw ord =PASSWORD"

Làm theo các bước dưới đây để cập nhật các bản ghi hiện có của một bảng trong Apache Derby.

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. Lớp Kết nối đại diện cho kết nối vật lý với máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement or, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() và, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery()phương thức trả về dữ liệu. Sử dụng một trong hai phương pháp này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ sau của JDBC trình bày cách cập nhật các bản ghi hiện có của một bảng trong Apache Derby bằng cách sử dụng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class UpdateData {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "UPDATE Employees SET Location = 'Chennai', Salary = 43000 WHERE
         Name = 'Kalyan'";
      int num = stmt.executeUpdate(query);
      System.out.println("Number of records updated are: "+num);
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:

Number of records updated are: 1

Apache Derby - Xóa dữ liệu

Câu lệnh DELETE được sử dụng để xóa các hàng của bảng. Cũng giống như câu lệnh UPDATE, Apache Derby cung cấp hai kiểu Delete (cú pháp):searched xóa và positioned xóa bỏ.

Câu lệnh xóa được tìm kiếm sẽ xóa tất cả các cột được chỉ định của bảng.

Cú pháp

Cú pháp của câu lệnh DELETE như sau:

ij> DELETE FROM table_name WHERE condition;

Thí dụ

Giả sử chúng ta có một bảng tên là nhân viên với 5 bản ghi như hình dưới đây -

ID |NAME |SALARY |LOCATION
----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
5 |Trupti |45000 |Kochin
5 rows selected

Câu lệnh SQL DELETE sau đây xóa bản ghi có tên Trupti.

ij> DELETE FROM Employees WHERE Name = 'Trupti';
1 row inserted/updated/deleted

Nếu bạn nhận được nội dung của bảng Nhân viên, bạn chỉ có thể thấy bốn bản ghi như được hiển thị bên dưới:

ID |NAME |SALARY |LOCATION
----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai 
4 rows selected

Để xóa tất cả các bản ghi trong bảng, hãy thực hiện cùng một truy vấn mà không có mệnh đề where.

ij> DELETE FROM Employees;
4 rows inserted/updated/deleted

Bây giờ, nếu bạn cố gắng lấy nội dung của bảng Nhân viên, bạn sẽ nhận được một bảng trống như dưới đây:

ij> select * from employees;
ID |NAME |SALARY |LOCATION
--------------------------------------------------------
0 rows selected

Xóa dữ liệu bằng chương trình JDBC

Phần này giải thích cách xóa các bản ghi hiện có của một bảng trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD".

Làm theo các bước dưới đây để xóa các bản ghi hiện có của một bảng trong Apache Derby: / p>

Bước 1: Đăng ký tài xế

Trước tiên, bạn cần đăng ký trình điều khiển để giao tiếp với cơ sở dữ liệu. CácforName() phương pháp của lớp Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. CácConnectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement or, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() and, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery()kết quả phương thức trả về dữ liệu. Sử dụng một trong hai phương pháp này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ sau JDBC trình bày cách xóa các bản ghi hiện có của một bảng trong Apache Derby bằng cách sử dụng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DeleteData {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();
      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupthi', 45000, 'Kochin')";
      //Executing the query
      String query = "DELETE FROM Employees WHERE Name = 'Trupthi'";
      int num = stmt.executeUpdate(query);
      System.out.println("Number of records deleted are: "+num);
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:

Number of records deleted are: 1

Apache Derby - Where Khoản

Mệnh đề WHERE được sử dụng trong các câu lệnh SELECT, DELETE hoặc, UPDATE để chỉ định các hàng cần thực hiện thao tác. Thông thường, mệnh đề này được theo sau bởi một điều kiện hoặc biểu thức trả về giá trị Boolean, các hoạt động Chọn, xóa hoặc cập nhật chỉ được thực hiện trên các hàng thỏa mãn điều kiện đã cho.

ij> SELECT * from table_name WHERE condition;
or,
ij> DELETE from table_name WHERE condition;
or,
ij> UPDATE table_name SET column_name = value WHERE condition;

Mệnh đề WHERE có thể sử dụng các toán tử so sánh như =,! =, <,>, <=, Và> =, cũng như các toán tử BETWEEN và LIKE.

Thí dụ

Giả sử chúng ta có một bảng có tên Nhân viên trong cơ sở dữ liệu với 7 bản ghi như hình dưới đây:

ID |NAME |SALARY |LOCATION
-----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
5 |Trupthi |45000 |Kochin
6 |Suchatra |33000 |Pune
7 |Rahul |39000 |Lucknow

Câu lệnh SQL DELETE sau đây tìm nạp các bản ghi của những nhân viên có mức lương hơn 35000 -

ij> SELECT * FROM Employees WHERE Salary>35000;

Điều này sẽ tạo ra kết quả sau:

ID |NAME |SALARY |LOCATION 
---------------------------------------------------
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
5 |Trupthi |45000 |Kochin
7 |Rahul |39000 |Lucknow
4 rows selected

Tương tự, bạn cũng có thể xóa và cập nhật các bản ghi bằng cách sử dụng mệnh đề này.

Ví dụ sau cập nhật vị trí của những người có mức lương dưới 30000.

ij> UPDATE Employees SET Location = 'Vijayawada' WHERE Salary<35000;
3 rows inserted/updated/deleted

Nếu bạn xác minh nội dung của bảng, bạn có thể thấy bảng cập nhật như hình dưới đây -

ij> SELECT * FROM Employees;
ID |NAME |SALARY |LOCATION
------------------------------------------------------------------------------
1 |Amit |30000 |Vijayawada
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Vijayawada
5 |Trupthi |45000 |Kochin
6 |Suchatra |33000 |Vijayawada
7 |Rahul |39000 |Lucknow
7 rows selected

Ví dụ mệnh đề Where JDBC

Phần này hướng dẫn bạn cách sử dụng mệnh đề WHERE và thực hiện các thao tác CURD trên một bảng trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 /DATABASE_NAME; create = true; user =USER_NAME;passw ord =PASSWORD".

Làm theo các bước dưới đây để sử dụng mệnh đề WHERE và thực hiện các thao tác CURD trên bảng trong Apache Derby

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng phương pháp này

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. CácConnectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement hoặc là, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() and, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery()kết quả phương thức trả về dữ liệu. Sử dụng một trong hai phương pháp này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ JDBC sau đây trình bày cách sử dụng mệnh đề WHERE và thực hiện các thao tác CURD trên một bảng trong Apache Derby bằng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class WhereClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT * FROM Employees WHERE Salary>35000";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println("Location: "+rs.getString("Location"));
         System.out.println(" ");
      }
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:

Id: 2
Name: Kalyan
Salary: 43000
Location: Chennai

Id: 3
Name: Renuka
Salary: 50000
Location: Delhi

Id: 5
Name: Trupthi
Salary: 45000
Location: Kochin

Id: 7
Name: Rahul
Salary: 39000
Location: Lucknow

Apache Derby - Điều khoản GROUP BY

Mệnh đề GROUP BY được sử dụng với các câu lệnh SELECT. Nó được sử dụng để tạo thành các tập hợp con trong trường hợp dữ liệu giống hệt nhau. Thông thường, mệnh đề này được theo sau bởi mệnh đề ORDER BY và được đặt sau mệnh đề WHERE.

Cú pháp

Sau đây là cú pháp của mệnh đề GROUP BY:

ij>SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;

Thí dụ

Giả sử chúng ta có một bảng có tên Nhân viên trong cơ sở dữ liệu với các bản ghi sau:

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Rahul |39000 |Lucknow
3 |Renuka |50000 |Hyderabad
4 |Archana |15000 |Vishakhapatnam
5 |Kalyan |40000 |Hyderabad
6 |Trupthi |45000 |Vishakhapatnam
7 |Raghav |12000 |Lucknow
8 |Suchatra |33000 |Vishakhapatnam
9 |Rizwan |20000 |Lucknow

Câu lệnh SELECT sau đây với mệnh đề GROUP BY nhóm bảng dựa trên vị trí. Nó hiển thị tổng số tiền lương được trả cho nhân viên tại một địa điểm.

ij> SELECT Location, SUM(Salary) from Employees GROUP BY Location;

Điều này sẽ tạo ra kết quả sau:

LOCATION |2
-------------------------------------------------------
Hyderabad |120000
Lucknow |71000
Vishakhapatnam |93000
3 rows selected

Theo cách tương tự, truy vấn sau tìm số tiền trung bình được chi cho nhân viên dưới dạng tiền lương tại một địa điểm.

ij> SELECT Location, AVG(Salary) from Employees GROUP BY Location;

Điều này sẽ tạo ra kết quả sau:

LOCATION |2
-----------------------------------------------------
Hyderabad |40000
Lucknow |23666
Vishakhapatnam |31000
3 rows selected

Ví dụ về mệnh đề Group By JDBC

Phần này hướng dẫn bạn cách sử dụng mệnh đề Group By và thực hiện các thao tác CURD trên một bảng trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"

Làm theo các bước dưới đây để sử dụng mệnh đề Group By và thực hiện các thao tác CURD trên bảng trong Apache Derby

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. CácConnectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement hoặc là, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() and, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức được sử dụng để thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery()phương thức trả về dữ liệu. Sử dụng một trong hai phương pháp này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ sau JDBC trình bày cách sử dụng Group Byvà thực hiện các phép toán CURD trên bảng trong Apache Derby bằng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class GroupByClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      stmt.execute("CREATE TABLE EmployeesData( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))");
      stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) "
         + "VALUES ('Amit', 30000, 'Hyderabad'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Renuka', 50000, 'Hyderabad'), "
         + "('Archana', 15000, 'Vishakhapatnam'), "
         + "('Kalyan', 40000, 'Hyderabad'), "
         + "('Trupthi', 45000, 'Vishakhapatnam'), "
         + "('Raghav', 12000, 'Lucknow'), "
         + "('Suchatra', 33000, 'Vishakhapatnam'), "
         + "('Rizwan', 20000, 'Lucknow')");

      //Executing the query
      String query = "SELECT Location, SUM(Salary) from EmployeesData GROUP BY Location";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Location: "+rs.getString(1));
         System.out.println("Sum of salary: "+rs.getString(2));
         System.out.println(" ");
      }
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000

Apache Derby - Đặt hàng theo mệnh đề

Mệnh đề ORDER BY được sử dụng để sắp xếp nội dung của tập kết quả theo thứ tự sử dụng các từ khóa, ASC đại diện cho thứ tự tăng dần và DESC đại diện cho thứ tự giảm dần. Nếu bạn không đề cập đến một trong hai điều này, nội dung sẽ được sắp xếp theo thứ tự tăng dần theo mặc định.

Cú pháp

Sau đây là cú pháp của mệnh đề ORDER BY:

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

Thí dụ

Giả sử chúng ta có một bảng có tên Nhân viên trong cơ sở dữ liệu với các bản ghi sau:

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------------------
1 |Amit |30000 |Vijayawada
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Vijayawada
5 |Trupthi |45000 |Kochin
6 |Suchatra |33000 |Vijayawada
7 |Rahul |39000 |Lucknow

Truy vấn sau đây sắp xếp nội dung của bảng theo thứ tự tăng dần dựa trên tên của Nhân viên.

ij> SELECT * FROM Employees ORDER BY Name;

Điều này sẽ tạo ra kết quả sau:

ID |NAME |SALARY |LOCATION
---------------------------------------------------------------
1 |Amit |30000 |Hyderabad
4 |Archana |15000 |Mumbai
2 |Kalyan |40000 |Vishakhapatnam 
7 |Rahul |39000 |Lucknow
3 |Renuka |50000 |Delhi
6 |Suchatra |33000 |Pune
5 |Trupthi |45000 |Kochin
7 rows selected

Tương tự, truy vấn sau sắp xếp nội dung của bảng theo thứ tự giảm dần dựa trên mức lương của Nhân viên -

ij> SELECT * FROM Employees ORDER BY Salary DESC;

Điều này sẽ tạo ra kết quả sau:

ID |NAME |SALARY |LOCATION
---------------------------------------------------------------
3 |Renuka |50000 |Delhi
5 |Trupthi |45000 |Kochin
2 |Kalyan |40000 |Vishakhapatnam
7 |Rahul |39000 |Lucknow
6 |Suchatra |33000 |Pune
1 |Amit |30000 |Hyderabad
4 |Archana |15000 |Mumbai
7 rows selected

Sắp xếp dữ liệu bằng chương trình JDBC

Phần này hướng dẫn bạn cách sắp xếp nội dung của một bảng trong Derby bằng cách sử dụng JDBC. Bạn có thể sắp xếp các bản ghi theo thứ tự bằng cách sử dụng mệnh đề ORDER BY và các từ khóa ASC (biểu thị thứ tự tăng dần) và DSC (biểu thị thứ tự giảm dần).

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD".

Làm theo các bước dưới đây để sắp xếp các bản ghi của một bảng trong Apache Derby -

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp sẽ tải nó vào bộ nhớ, nó sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. Các Connectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọi getConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement hoặc là, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() and, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery()phương thức trả về dữ liệu. Sử dụng một trong hai phương pháp này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ sau JDBC trình bày cách sắp xếp các bản ghi của một bảng trong Apache Derby bằng cách sử dụng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SortData {
   public static void main(String args[]) throws SQLException, ClassNotFoundException {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:SampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT Location, SUM(Salary) " + "from Employees GROUP BY Location";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Salary: "+rs.getString(1));
         System.out.println("Location: "+rs.getString(2));
         System.out.println(" ");
      }
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:

Salary: Chennai
Location: 43000

Salary: Delhi
Location: 50000

Salary: Hyderabad
Location: 30000

Salary: Kochin
Location: 45000

Salary: Lucknow
Location: 39000

Salary: Mumbai
Location: 15000

Salary: Pune
Location: 33000

Apache Derby - Có điều khoản

Mệnh đề HAVING cho phép bạn chỉ định các điều kiện lọc kết quả nhóm nào xuất hiện trong kết quả.

Mệnh đề WHERE đặt điều kiện vào các cột đã chọn, trong khi mệnh đề HAVING đặt điều kiện cho các nhóm được tạo bởi mệnh đề GROUP BY.

Cú pháp

Sau đây là cú pháp của mệnh đề HAVING:

ij> SELECT column1, column2 . . . from table_name GROUP BY column having
condition;

Thí dụ

Giả sử, chúng ta có một bảng có tên Nhân viên trong cơ sở dữ liệu với 13 bản ghi như hình dưới đây:

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Rahul |39000 |Lucknow
3 |Kalyan |40000 |Vishakhapatnam
4 |Renuka |50000 |Hyderabad
5 |Archana |15000 |Vishakhapatnam
6 |Krishna |40000 |Hyderabad
7 |Trupthi |45000 |Vishakhapatnam
8 |Raghav |12000 |Lucknow
9 |Radha |50000 |Delhi
10 |Anirudh |15000 |Mumbai
11 |Tara |45000 |Kochin
12 |Sucharita |44000 |Kochin
13 |Rizwan |20000 |Lucknow

Truy vấn sau đây hiển thị mức lương tối đa của nhân viên ở vị trí có ít nhất 3 nhân viên -

ij> SELECT Location, MAX(Salary) from Employees GROUP BY Location having
count(Location)>=3;

Điều này tạo ra kết quả sau:

LOCATION |2
------------------------------------------------------------
Hyderabad |50000
Lucknow |39000
Vishakhapatnam |45000
3 rows selected

Sắp xếp dữ liệu bằng chương trình JDBC

Phần này hướng dẫn bạn cách sử dụng Có mệnh đề trong cơ sở dữ liệu Apache Derby bằng ứng dụng JDBC.

Nếu bạn muốn yêu cầu máy chủ mạng Derby sử dụng máy khách mạng, hãy đảm bảo rằng máy chủ đang hoạt động. Tên lớp cho trình điều khiển máy khách mạng là org.apache.derby.jdbc.ClientDriver và URL là jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"

Làm theo các bước dưới đây để sắp xếp các bản ghi của một bảng trong Apache Derby

Bước 1: Đăng ký tài xế

Để giao tiếp với cơ sở dữ liệu, trước hết, bạn cần đăng ký trình điều khiển. CácforName() phương pháp của lớp Classchấp nhận một giá trị Chuỗi đại diện cho một tên lớp và tải nó vào bộ nhớ, bộ nhớ này sẽ tự động đăng ký nó. Đăng ký trình điều khiển bằng cách sử dụng phương pháp này.

Bước 2: Nhận kết nối

Nói chung, bước đầu tiên chúng ta làm để giao tiếp với cơ sở dữ liệu là kết nối với nó. CácConnectionlớp đại diện cho kết nối vật lý với một máy chủ cơ sở dữ liệu. Bạn có thể tạo một đối tượng kết nối bằng cách gọigetConnection() phương pháp của DriverManagerlớp học. Tạo kết nối bằng phương pháp này.

Bước 3: Tạo đối tượng câu lệnh

Bạn cần tạo một Statement hoặc là PreparedStatement or, CallableStatementđối tượng để gửi câu lệnh SQL đến cơ sở dữ liệu. Bạn có thể tạo chúng bằng các phương phápcreateStatement(), prepareStatement() and, prepareCall()tương ứng. Tạo một trong hai đối tượng này bằng phương pháp thích hợp.

Bước 4: Thực hiện truy vấn

Sau khi tạo một câu lệnh, bạn cần thực thi nó. CácStatement lớp cung cấp các phương thức khác nhau để thực hiện một truy vấn như execute()để thực hiện một câu lệnh trả về nhiều hơn một tập kết quả. CácexecuteUpdate()phương thức thực hiện các truy vấn như INSERT, UPDATE, DELETE. CácexecuteQuery()phương thức trả về dữ liệu. Sử dụng một trong hai phương pháp này và thực hiện câu lệnh đã tạo trước đó.

Thí dụ

Ví dụ JDBC sau đây trình bày cách sử dụng mệnh đề Group By và thực hiện các hoạt động CURD trên một bảng trong Apache Derby bằng cách sử dụng chương trình JDBC. Ở đây, chúng tôi đang kết nối với cơ sở dữ liệu có tên sampleDB (sẽ tạo nếu nó không tồn tại) bằng cách sử dụng trình điều khiển nhúng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class HavingClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      stmt.execute("CREATE TABLE EmployeesData( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))");
      stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) "
         + "VALUES ('Amit', 30000, 'Hyderabad'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Renuka', 50000, 'Hyderabad'), "
         + "('Archana', 15000, 'Vishakhapatnam'), "
         + "('Kalyan', 40000, 'Hyderabad'), "
         + "('Trupthi', 45000, 'Vishakhapatnam'), "
         + "('Raghav', 12000, 'Lucknow'), "
         + "('Suchatra', 33000, 'Vishakhapatnam'), "
         + "('Rizwan', 20000, 'Lucknow')");
      //Executing the query
      String query = "SELECT Location, MAX(Salary) "
         + "from EmployeesData GROUP BY Location having "
         + "count(Location)>=3";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println(rs.getString(1));
         System.out.println(rs.getString(2));
         System.out.println(" ");
      }
   }
}

Đầu ra

Khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:

Hyderabad
50000

Lucknow
39000

Vishakhapatnam
45000

Apache Derby - Tuyên bố bảng thay đổi

Câu lệnh ALTER TABLE, cho phép bạn thay đổi bảng hiện có. Sử dụng điều này, bạn có thể làm như sau:

  • Thêm một cột, thêm một ràng buộc

  • Thả một cột, bỏ một ràng buộc

  • Thay đổi khóa cấp độ hàng của bảng

Giả sử chúng ta đã tạo một bảng có tên Nhân viên như hình dưới đây -

ij> CREATE TABLE Employees (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   PRIMARY KEY (Id)
);

Và, đã chèn bốn bản ghi bằng cách sử dụng câu lệnh chèn dưới dạng:

ij> INSERT INTO Employees (Name, Salary, Location) VALUES
 ('Amit', 30000, 'Hyderabad'),
 ('Kalyan', 40000, 'Vishakhapatnam'),
 ('Renuka', 50000, 'Delhi'),
 ('Archana', 15000, 'Mumbai');

Thêm cột vào bảng

Sau đây là cú pháp để thêm một cột vào bảng bằng cách sử dụng câu lệnh ALTER.

ALTER TABLE table_name ADD COLUMN column_name column_type;

Thí dụ

Sử dụng câu lệnh ALTER, chúng tôi đang cố gắng thêm một cột mới có tên Age với kiểu số nguyên.

ALTER TABLE Employees ADD COLUMN Age INT;
0 rows inserted/updated/deleted

Thêm một cột khác có tên Phone_No với kiểu số nguyên.

ALTER TABLE Employees ADD COLUMN Phone_No BIGINT;
0 rows inserted/updated/deleted

Lệnh DESCRIBE mô tả bảng cụ thể bằng cách liệt kê các cột và chi tiết của chúng, nếu bảng tồn tại. Nếu bạn MÔ TẢ, bảng Nhân viên bạn có thể quan sát các cột mới được thêm vào như hình bên dưới:

ij> DESCRIBE Employees;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
SALARY |INTEGER |0 |10 |10 |NULL |NULL |NO
LOCATION |VARCHAR |NULL|NULL|255 |NULL |510 |YES
AGE |INTEGER |0 |10 |10 |NULL |NULL |YES
PHONE_NO |INTEGER |0 |10 |10 |NULL |NULL |YES
6 rows selected

Thêm một ràng buộc vào bảng

Sau đây là cú pháp để thêm một ràng buộc vào một cột của bảng bằng cách sử dụng câu lệnh ALTER.

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

Ở đâu constraint có thể KHÔNG ĐẦY ĐỦ, KHÔNG ĐẦY ĐỦ, CHÌA KHÓA CHÍNH, CHÌA KHÓA ĐỘC NHẤT, NGOẠI LỆ, KIỂM TRA.

Thí dụ

Sử dụng câu lệnh ALTER, chúng tôi đang cố gắng thêm ràng buộc UNIQUE vào cột Phone_No.

ij> ALTER TABLE Employees ADD CONSTRAINT New_Constraint UNIQUE(Phone_No);
0 rows inserted/updated/deleted

Khi bạn thêm ràng buộc DUY NHẤT vào một cột, nó không thể có cùng giá trị cho hai hàng, tức là số điện thoại phải là duy nhất cho mỗi nhân viên.

Nếu bạn cố gắng thêm hai cột có cùng một số điện thoại, bạn sẽ nhận được một ngoại lệ như hình dưới đây.

ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Amit', 30000, 'Hyderabad', 30, 9848022338);
1 row inserted/updated/deleted
ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Sumit', 35000, 'Chennai', 25, 9848022338);
ERROR 23505: The statement was aborted because it would have caused a duplicate
key value in a unique or primary key constraint or unique index identified by
'NEW_CONSTRAINT' defined on 'EMPLOYEES'.

Bỏ ràng buộc khỏi bảng

Sau đây là cú pháp để bỏ một ràng buộc của một cột:

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

Thí dụ

Truy vấn sau đây xóa tên ràng buộc New_Constraint trên cột Phone_No được tạo ở trên.

ij> ALTER TABLE Employees DROP CONSTRAINT New_Constraint;
0 rows inserted/updated/deleted

Vì chúng tôi đã loại bỏ ràng buộc DUY NHẤT trên cột Phone_No, bạn có thể thêm các cột có cùng số điện thoại.

ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Sumit', 35000, 'Chennai', 25, 9848022338);
1 row inserted/updated/deleted

Bạn có thể xác minh nội dung của bảng ij> chọn * từ Nhân viên như sau:

ID |NAME |SALARY |LOCATION |AGE |PHONE_NO
-------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad |30 |9848022338
2 |Sumit |35000 |Chennai |25 |9848022338
2 rows selected

Bỏ cột khỏi bảng

Sau đây là cú pháp để thả một cột của một cột.

ALTER TABLE table_name DROP COLUMN column_name;

Thí dụ

Truy vấn sau sẽ xóa cột có tên age of the employee -

ij> ALTER TABLE Employees DROP COLUMN Age;
0 rows inserted/updated/deleted

Nếu bạn mô tả bảng, bạn chỉ có thể thấy 4 cột.

ij> DESCRIBE Employees;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
SALARY |INTEGER |0 |10 |10 |NULL |NULL |NO
LOCATION |VARCHAR |NULL|NULL|255 |NULL |510 |YES
PHONE_NO |BIGINT |0 |10 |19 |NULL |NULL |YES

Bảng thay đổi bằng chương trình JDBC

Sau đây là chương trình JDBC để thay đổi bảng bằng cách sử dụng truy vấn ALTER:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class AlterTableExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Executing the query
      String createQuery = "CREATE TABLE Employees( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";

      stmt.execute(createQuery);
      System.out.println("Table created");
      System.out.println(" ");

      //Executing the query
      String insertQuery = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupti', 45000, 'Kochin')";

      stmt.execute(insertQuery);
      System.out.println("Values inserted");
      System.out.println(" ");

      //Executing the query
      String selectQuery = "SELECT * FROM Employees";
      ResultSet rs = stmt.executeQuery(selectQuery);
      System.out.println("Contents of the table after inserting the table");
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println("Location: "+rs.getString("Location"));
      }
      System.out.println(" ");

      //Altering the table
      stmt.execute("ALTER TABLE Employees ADD COLUMN Age INT");
      stmt.execute("ALTER TABLE Employees ADD COLUMN Phone_No BigINT");
      stmt.execute("ALTER TABLE Employees " + "ADD CONSTRAINT New_Constraint UNIQUE(Phone_No)");

      stmt.execute("INSERT INTO Employees "
         + "(Name, Salary, Location, Age, Phone_No) "
         + "VALUES ('Amit', 30000, 'Hyderabad', 30, 9848022338)");
      ResultSet alterResult = stmt.executeQuery("Select * from Employees");
      System.out.println("Contents of the table after altering "
         + "the table and inserting values to it: ");
      while(alterResult.next()) {
         System.out.println("Id: "+alterResult.getString("Id"));
         System.out.println("Name: "+alterResult.getString("Name"));
         System.out.println("Salary: "+alterResult.getString("Salary"));
         System.out.println("Location: "+alterResult.getString("Location"));
         System.out.println("Age: "+alterResult.getString("Age"));
         System.out.println("Phone_No: "+alterResult.getString("Phone_No"));
      }
   }
}

Đầu ra

Khi thực hiện chương trình trên, kết quả sau sẽ được tạo:

Table created

Values inserted

Contents of the table after inserting the table
Id: 1
Name: Amit
Salary: 30000
Location: Hyderabad
Id: 2
Name: Kalyan
Salary: 40000
Location: Vishakhapatnam
Id: 3
Name: Renuka
Salary: 50000
Location: Delhi
Id: 4
Name: Archana
Salary: 15000
Location: Mumbai
Id: 5
Name: Trupti
Salary: 45000
Location: Kochin

Contents of the table after altering the table and inserting values to it:
Id: 1
Name: Amit
Salary: 30000
Location: Hyderabad
Age: null
Phone_No: null
Id: 2
Name: Kalyan
Salary: 40000
Location: Vishakhapatnam
Age: null
Phone_No: null
Id: 3
Name: Renuka
Salary: 50000
Location: Delhi
Age: null
Phone_No: null
Id: 4
Name: Archana
Salary: 15000
Location: Mumbai
Age: null
Phone_No: null
Id: 5
Name: Trupti
Salary: 45000
Location: Kochin
Age: null
Phone_No: null
Id: 6
Name: Amit
Salary: 30000
Location: Hyderabad
Age: 30
Phone_No: 9848022338

Apache Derby - Các chỉ số Derby

Chỉ mục trong bảng không là gì khác ngoài một con trỏ đến dữ liệu của nó. Chúng được sử dụng để tăng tốc độ truy xuất dữ liệu từ một bảng.

Nếu chúng ta sử dụng các chỉ mục, các câu lệnh INSERT và UPDATE sẽ được thực thi trong một giai đoạn chậm hơn. Trong khi SELECT và WHERE được thực thi với thời gian ngắn hơn.

Tạo chỉ mục

Câu lệnh CREATE INDEX được sử dụng để tạo Chỉ mục mới trong bảng trong cơ sở dữ liệu Derby.

Cú pháp

Sau đây là cú pháp của câu lệnh CREATE INDEX:

CTREATE INDEX index_name on table_name (column_name);

Thí dụ

Giả sử chúng ta đã tạo một bảng có tên Nhân viên trong Apache Derby như hình dưới đây.

CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);

Câu lệnh SQL sau tạo một chỉ mục trên cột có tên Lương trong bảng Nhân viên.

ij> CREATE INDEX example_index on Emp (Salary);
0 rows inserted/updated/deleted

Tạo chỉ mục DUY NHẤT

Trong Apache Derby, các chỉ mục DUY NHẤT được sử dụng để tích hợp dữ liệu. Khi bạn tạo chỉ mục DUY NHẤT trên một cột trong bảng, nó không cho phép các giá trị trùng lặp.

Cú pháp

Sau đây là cú pháp tạo một chỉ mục duy nhất.

CREATE UNIQUE INDEX index_name on table_name (column_name);

Thí dụ

Ví dụ sau tạo một chỉ mục DUY NHẤT trên cột Id của bảng Nhân viên.

ij> CREATE UNIQUE INDEX unique_index on Emp (Phone_Number);
0 rows inserted/updated/deleted

Khi bạn đã tạo một chỉ mục duy nhất trên một cột, bạn không thể nhập các giá trị tương tự cho cột đó trong một hàng khác. Tóm lại, một cột có chỉ mục UNIQE sẽ không cho phép các giá trị trùng lặp.

Chèn một hàng trong bảng Emp như hình dưới đây

ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Amit',
45000, 'Hyderabad', 9848022338);
1 row inserted/updated/deleted

Vì chúng tôi đã tạo một chỉ mục duy nhất trên cột Phone_No, nếu bạn nhập giá trị giống như trong bản ghi trước đó, nó sẽ hiển thị lỗi.

ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Sumit',
35000, 'Chennai', 9848022338);
ERROR 23505: The statement was aborted because it would have caused a duplicate
key value in a unique or primary key constraint or unique index identified by
'UNIQUE_INDEX' defined on 'EMP'.

Tạo chỉ mục COMPOSITE

Bạn có thể tạo một chỉ mục duy nhất trên hai hàng và nó được gọi là Chỉ mục tổng hợp.

Cú pháp

Sau đây là cú pháp của chỉ mục tổng hợp.

CREATE INDEX index_name on table_name (column_name1, column_name2);

Thí dụ

Chỉ mục sau tạo một chỉ mục tổng hợp trên các cột Tên và Vị trí.

ij> CREATE INDEX composite_index on Emp (Name, Location);
0 rows inserted/updated/deleted

Hiển thị các chỉ mục

Truy vấn SHOW INDEXES hiển thị danh sách các chỉ mục trên bảng.

Cú pháp

Sau đây là cú pháp của câu lệnh SHOW INDEXES:

SHOW INDEXES FROM table_name;

Thí dụ

Ví dụ sau, tôi hiển thị các chỉ mục trên bảng Nhân viên.

ij> SHOW INDEXES FROM Emp;

Điều này tạo ra kết quả sau.

ij> SHOW INDEXES FROM Emp;
TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES
----------------------------------------------------------------------------
EMP |PHONE_NUMBER |false |3 |A |NULL |NULL
EMP |NAME |true |3 |A |NULL |NULL
EMP |LOCATION |true |3 |A |NULL |NULL
EMP |SALARY |true |3 |A |NULL |NULL
4 rows selected

Giảm chỉ số

Câu lệnh Drop Index xóa / giảm chỉ mục đã cho trên một cột.

Cú pháp

Sau đây là cú pháp của câu lệnh DROP INDEX.

DROP INDEX index_name;

Thí dụ

Ví dụ sau loại bỏ một chỉ mục có tên composite_index và unique_index đã tạo ở trên.

ij> DROP INDEX composite_index;
0 rows inserted/updated/deleted
ij>Drop INDEX unique_index;
0 rows inserted/updated/deleted

Bây giờ, nếu bạn xác minh danh sách các chỉ mục, bạn có thể thấy chỉ mục trên một cột vì chúng tôi đã xóa phần còn lại.

ij> SHOW INDEXES FROM Emp;
TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES
----------------------------------------------------------------------------
EMP |SALARY |true |3 |A |NULL |NULL
1 row selected

Xử lý các chỉ mục bằng chương trình JDBC

Chương trình JDBC sau đây trình bày cách tạo chỉ mục thả trên một cột trong bảng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class IndexesExample {
   public static void main(String args[]) throws Exception {

      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:MYDATABASE;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating the Emp table
      String createQuery = "CREATE TABLE Emp( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "Phone_Number BIGINT )";
      stmt.execute(createQuery);
      System.out.println("Table created");
      System.out.println(" ");

      //Creating an Index on the column Salary
      stmt.execute("CREATE INDEX example_index on Emp (Salary)");
      System.out.println("Index example_index inserted");
      System.out.println(" ");

      //Creating an Unique index on the column Phone_Number
      stmt.execute("CREATE UNIQUE INDEX unique_index on Emp (Phone_Number)");
      System.out.println("Index unique_index inserted");
      System.out.println(" ");

      //Creating a Composite Index on the columns Name and Location
      stmt.execute("CREATE INDEX composite_index on Emp (Name, Location)");
      System.out.println("Index composite_index inserted");
      System.out.println(" ");

      //listing all the indexes
      System.out.println("Listing all the columns with indexes");

      //Dropping indexes
      System.out.println("Dropping indexes unique_index and, composite_index ");
      stmt.execute("Drop INDEX unique_index");
      stmt.execute("DROP INDEX composite_index");
   }
}

Đầu ra

Khi thực thi, điều này tạo ra kết quả sau

Table created
Index example_index inserted

Index unique_index inserted

Index composite_index inserted

Listing all the columns with indexes
Dropping indexes unique_index and, composite_index

Apache Derby - Thủ tục

Chương này hướng dẫn bạn cách tạo và bỏ các thủ tục trong Derby.

Tạo một thủ tục

Bạn có thể tạo một thủ tục bằng cách sử dụng câu lệnh CREATE PROCEDURE.

Cú pháp

Sau đây là cú pháp của câu lệnh CREATE PROCEDURE.

CREATE PROCEDURE procedure_name (parameter_type parameter_name1, parameter_type
parameter_name2 . . . .) parameter_style;

Thí dụ

Giả sử, chúng ta đã tạo một bảng trong trận Derby như hình dưới đây.

CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);

Và chèn các giá trị vào đó như sau:

INSERT INTO Employees(Name, Salary, Location) VALUES
('Amit', 30000, 'Hyderabad'),
('Kalyan', 40000, 'Vishakhapatnam'),
('Renuka', 50000, 'Delhi'),
('Archana', 15000, 'Mumbai'),
('Trupthi', 45000, 'Kochin')";

Ví dụ sau tạo một thủ tục có tên Update_Procedure chấp nhận các tham số JAVA.

ij> CREATE PROCEDURE Update_Procedure(IN id INTEGER, IN name VARCHAR(10))
PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME
'ProcedureExample.testProc';
> 0 rows inserted/updated/deleted

Trường hợp lớp ProcedureExample trông giống như:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class ProcedureExample {
   public static void testProc(int salary, String name) throws Exception {
      String connectionURL = "jdbc:derby:MYDATABASE;create=true";
      Connection conn = DriverManager.getConnection(connectionURL);
      String query = "UPDATE Employees SET SALARY = ? WHERE NAME = ?";
      PreparedStatement pstmt = conn.prepareStatement(query);
      pstmt.setInt(1, salary);
      pstmt.setString (2, name);
      pstmt.executeUpdate();
   }
}

Bạn có thể xác minh danh sách các thủ tục bằng cách sử dụng SHOW PROCEDURES truy vấn.

ij> SHOW PROCEDURES;
PROCEDURE_SCHEM |PROCEDURE_NAME |REMARKS
------------------------------------------------------------------------
APP |UPDATE_PROCEDURE |ProcedureExample.te&
SALES |EXAMPLE_ PROCEDURE |com.example.sales.c&
SQLJ |INSTALL_JAR |org.apache.derby.ca&
SQLJ |REMOVE_JAR |org.apache.derby.ca&
SQLJ |REPLACE_JAR |org.apache.derby.ca&
SYSCS_UTIL |SYSCS_BACKUP_DATABASE |org.apache.derby.ca&
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Tại đây bạn có thể quan sát thủ tục mới được tạo.

Bỏ qua một thủ tục

Bạn có thể bỏ một quy trình bằng cách sử dụng câu lệnh DROP PROCEDURE.

Cú pháp

Sau đây là cú pháp của câu lệnh DROP PROCEDURE.

DROP PROCEDURE procedure_name;

Thí dụ

Ví dụ sau loại bỏ một thủ tục có tên Update_Procedure được tạo ở trên.

ij> DROP PROCEDURE Update_Procedure;
> 0 rows inserted/updated/deleted

Apache Derby - Lược đồ

Lược đồ cơ sở dữ liệu là cấu trúc khung đại diện cho chế độ xem logic của toàn bộ cơ sở dữ liệu. Nó xác định cách dữ liệu được tổ chức và mối quan hệ giữa chúng được liên kết như thế nào. Nó hình thành tất cả các ràng buộc sẽ được áp dụng cho dữ liệu.

Tạo một lược đồ

Bạn có thể tạo một lược đồ trong Apache Derby bằng cách sử dụng câu lệnh CREATE SCHEMA.

Cú pháp

Sau đây là cú pháp của câu lệnh CREATE SCHEMA.

CREATE SCHEMA schema_name AUTHORIZATION id

Thí dụ

Ví dụ sau tạo một lược đồ có tên my_schema trong cơ sở dữ liệu Derby.

ij> CREATE SCHEMA AUTHORIZATION my_schema;
0 rows inserted/updated/deleted

Sau đó, bạn có thể tạo một bảng trong lược đồ này như hình dưới đây.

ij> CREATE TABLE my_schema.Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);
> > > > > 0 rows inserted/updated/deleted

Bạn có thể xác minh danh sách các lược đồ bằng cách sử dụng truy vấn SHOW SCHEMAS tại đây, bạn có thể tìm thấy danh sách các lược đồ đã tạo.

ij> show schemas;
TABLE_SCHEM
------------------------------
APP
MY_SCHEMA
NULLID
SQLJ
SYS
SYSCAT
SYSCS_DIAG
SYSCS_UTIL
SYSFUN
SYSIBM
SYSPROC
SYSSTAT
12 rows selected

Bỏ giản đồ

Bạn có thể loại bỏ một lược đồ hiện có bằng cách sử dụng câu lệnh DROP SCHEMA.

Cú pháp

Sau đây là cú pháp của câu lệnh DROPS SCHEMA.

DROP SCHEMA my_schema RESTRICT;

Thí dụ

Bạn chỉ có thể xóa một lược đồ nếu không có bất kỳ đối tượng nào trong đó. Để xóa lược đồ, hãy xóa tất cả các bảng trong đó và xóa lược đồ.

ij> DROP TABLE my_schema.Emp;
0 rows inserted/updated/deleted

Ví dụ sau loại bỏ lược đồ đã tạo ở trên.

ij> DROP SCHEMA my_schema RESTRICT;
0 rows inserted/updated/deleted

Ví dụ về JDBC

Ví dụ sau JDBC tạo và xóa một lược đồ có tên my_schema.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateSchemaExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      stmt.execute("CREATE SCHEMA AUTHORIZATION my_schema");
      //Executing the query
      String query = "CREATE TABLE my_schema.Employees( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      stmt.execute(query);
      System.out.println("Table created in schema");
      stmt.execute("DROP TABLE my_schema.Employees");
      stmt.execute("DROP SCHEMA my_schema RESTRICT");
      System.out.println("Schema dropped");
   }
}

Đầu ra

Khi thực thi, chương trình trên tạo ra ví dụ sau.

Table created in schema
Schema dropped

Apache Derby - Kích hoạt

Trong cơ sở dữ liệu, trình kích hoạt là các câu lệnh / mã được thực thi bất cứ khi nào một sự kiện xảy ra. Khi bạn tạo trình kích hoạt cho một sự kiện cụ thể trên bảng, mã được chỉ định trong trình kích hoạt sẽ được thực thi mỗi khi sự kiện xảy ra. Bạn có thể tạo nhiều trình kích hoạt trên một bảng.

Chương này hướng dẫn bạn cách tạo và thả các trình kích hoạt bằng Apache Derby.

Tạo trình kích hoạt

Bạn có thể tạo trình kích hoạt trong trận Derby bằng cách sử dụng câu lệnh CREATE TRIGGER.

Cú pháp

Sau đây là cú pháp của truy vấn CREATE TRIGGER.

CREATE TRIGGER trigger_name
{ NO CASCADE BEFORE | AFTER }
{INSERT [OR] | UPDATE [OR] | DELETE}[OF col_name]
ON table_name
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
Statement

Thí dụ

Giả sử, chúng ta đã tạo một bảng có tên Emp trong Derby như hình dưới đây.

CREATE TABLE Emp (
   Id INT NOT NULL,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255) );

Và đã chèn 5 hàng trong đó.

INSERT INTO Emp(Id, Name, Salary, Location) VALUES
(1, 'Amit', 30000, 'Hyderabad'), (2, 'Kalyan', 40000, 'Vishakhapatnam'),
(3,'Renuka', 50000, 'Delhi'), (4, 'Archana', 15000, 'Mumbai'), (5, 'Trupthi',
45000, 'Kochin');

Nếu chúng ta có một bảng khác có tên BackUp và mục đích của chúng tôi là lưu trữ các hàng đã xóa khỏi bảng Emp trong này.

CREATE TABLE BackUp (
   Id INT NOT NULL,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255)
);

Truy vấn sau tạo một trình kích hoạt trên bảng truy vấn DELETE có tên Emp. Nó lưu trữ các hàng đã xóa củaEmp vào bảng Sao lưu.

ij> CREATE TRIGGER my_trigger
AFTER DELETE ON Emp
REFERENCING OLD AS oldRow
FOR EACH ROW MODE DB2SQL
INSERT INTO BackUp
VALUES (oldRow.Id, oldRow.Name, oldRow.Salary, oldRow.Location);

Bây giờ, xóa một hàng khỏi bảng Emp dưới dạng -

ij> Delete From Emp where Name = 'Kalyan';
1 row inserted/updated/deleted
ij> Delete From Emp where Name = 'Amit';
1 row inserted/updated/deleted

Nếu bạn xác minh bảng BackUp, bạn có thể quan sát các hàng đã xóa trong đó.

ij> select * from BackUp;
ID |NAME |SALARY |LOCATION
-------------------------------------------------------------------------
2 |Kalyan |40000 |Vishakhapatnam
1 |Amit |30000 |Hyderabad

2 rows selected

Xóa trình kích hoạt

Bạn có thể xóa một trình kích hoạt trong Derby bằng cách sử dụng câu lệnh DROP TRIGGER.

Cú pháp

Sau đây là cú pháp của truy vấn DROP TRIGGER -

ij> Drop trigger tigger_name;

Thí dụ

Ví dụ sau đây xóa trình kích hoạt my_trigger được tạo ở trên -

ij> Drop trigger my_trigger;
0 rows inserted/updated/deleted

Ví dụ về JDBC

Sau chương trình JDBC tạo và xóa các trình kích hoạt trong Derby.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Triggers_Example {
   public static void main(String args[]) throws SQLException, ClassNotFoundException {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:TestDataBase;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating the Emp table
      stmt.execute("CREATE TABLE Emp ( "
         + "Id INT NOT NULL, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255))");

      //Insert values in to the EMp table
      String query = "INSERT INTO Emp(Id, Name, Salary, Location) VALUES \r\n"
         +"(1, 'Amit', 30000, 'Hyderabad'), "
         + "(2, 'Kalyan', 40000, 'Vishakhapatnam'), "
         + "(3,'Renuka', 50000, 'Delhi'), "
         + "(4, 'Archana', 15000, 'Mumbai'), "
         + "(5, 'Trupthi', 45000, 'Kochin')";
         stmt.execute(query);

      //Creating the BackUp table
      stmt.execute("CREATE TABLE BackUp ( "
         + "Id INT NOT NULL, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255))");

      //Creating a trigger
      String createTrigger = "CREATE TRIGGER my_trigger "
         + "AFTER DELETE ON Emp "
         + "REFERENCING OLD AS oldRow "
         + "FOR EACH ROW MODE DB2SQL "
         + "INSERT INTO BackUp "
         + "VALUES (oldRow.Id, oldRow.Name, oldRow.Salary, oldRow.Location)";
      stmt.execute(createTrigger);
      System.out.println("Trigger created");

      //Deleting records from Emp table
      stmt.executeUpdate("Delete From Emp where Name = 'Kalyan'");
      stmt.executeUpdate("Delete From Emp where Name = 'Amit'");
      //Getting the contents of BackUp table
      ResultSet rs = stmt.executeQuery("SELECT * from BackUp");
      while(rs.next()){
         System.out.println(rs.getInt("Id"));
         System.out.println(rs.getString("Name"));
         System.out.println(rs.getString("Salary"));
         System.out.println(rs.getString("Location"));
         System.out.println(" ");
      }
   }
}

Đầu ra

Khi thực hiện chương trình trên, kết quả sau được tạo:

Trigger created
2
Kalyan
40000
Vishakhapatnam
1
Amit
30000
Hyderabad