Apache Derby - คู่มือฉบับย่อ

Apache Derby เป็นไฟล์ Rร่าเริง Database Mการจัดการ System ซึ่งขึ้นอยู่กับ (เขียน / ใช้งานใน) ภาษาโปรแกรม Java เป็นฐานข้อมูลโอเพ่นซอร์สที่พัฒนาโดย Apache Software Foundation

Oracle เปิดตัว Apache Derby ที่เทียบเท่ากับชื่อ JavaDB

คุณสมบัติของ Apache Derby

ต่อไปนี้เป็นคุณสมบัติเด่นของฐานข้อมูล Derby -

  • Platform independent - Derby ใช้รูปแบบฐานข้อมูลบนแผ่นดิสก์ซึ่งฐานข้อมูลในนั้นจะถูกเก็บไว้ในไฟล์ในแผ่นดิสก์ภายในไดเร็กทอรีที่มีชื่อเดียวกับฐานข้อมูล

  • No modifying data - ด้วยเหตุนี้คุณจึงสามารถย้ายฐานข้อมูลดาร์บี้ไปยังเครื่องอื่นได้โดยไม่ต้องแก้ไขข้อมูล

  • Transactional support - Derby ให้การสนับสนุนอย่างสมบูรณ์สำหรับธุรกรรมเพื่อให้มั่นใจว่าข้อมูลมีความสมบูรณ์

  • Including databases - คุณสามารถรวมฐานข้อมูลที่สร้างไว้ล่วงหน้า / ที่มีอยู่ลงในแอปพลิเคชันดาร์บี้ปัจจุบันของคุณ

  • Less space - ฐานข้อมูล Derby มีขนาดเล็กกล่าวคือใช้พื้นที่น้อยและใช้งานง่ายและปรับใช้

  • Embed with Java Application- Derby มีเอ็นจิ้นฐานข้อมูลแบบฝังซึ่งสามารถฝังลงในแอปพลิเคชัน Java และจะทำงานใน JVM เดียวกันกับแอปพลิเคชัน เพียงแค่โหลดไดรเวอร์จะเริ่มต้นฐานข้อมูลและหยุดลงพร้อมกับแอปพลิเคชัน

ข้อ จำกัด ของ Apache Derby

ต่อไปนี้เป็นข้อ จำกัด ของ Apache Derby -

  • Derby ไม่สนับสนุนดัชนีสำหรับประเภทข้อมูลเช่น BLOB และ LONGVARCHAR

  • หาก Derby มีพื้นที่ดิสก์ไม่เพียงพอมันจะปิดตัวลงทันที

การจัดเก็บข้อมูล

ในขณะที่จัดเก็บข้อมูล Apache Derby ทำตามแนวคิดที่เรียกว่า conglomerate. ในกรณีนี้ข้อมูลของตารางจะถูกเก็บไว้ในไฟล์แยกต่างหาก ในทำนองเดียวกันดัชนีแต่ละตารางจะถูกเก็บไว้ในไฟล์แยกกัน ดังนั้นจะมีไฟล์แยกต่างหากสำหรับทุกตารางหรือดัชนีในฐานข้อมูล

Apache Derby Library / Components

การกระจาย Apache Derby ให้ส่วนประกอบต่างๆ ในโฟลเดอร์ lib ของการแจกจ่าย apache ที่คุณดาวน์โหลดคุณสามารถสังเกตไฟล์ jar ที่แสดงส่วนประกอบต่างๆ

ไฟล์ jar ส่วนประกอบ คำอธิบาย
ดาร์บี้ โปรแกรมควบคุม Database Engine และ JDBC

เอ็นจิ้นฐานข้อมูลของ Apache Derby เป็นเอ็นจิ้นฐานข้อมูลเชิงสัมพันธ์แบบฝังซึ่งรองรับ JDBC และ SQL API

นอกจากนี้ยังทำหน้าที่เป็นไดรเวอร์ในตัวซึ่งคุณสามารถสื่อสารกับ Derby โดยใช้แอปพลิเคชัน Java

Derbynet.jar derbyrun.jar เซิร์ฟเวอร์เครือข่าย

Network Sever ของ Apache Derby มีฟังก์ชันเซิร์ฟเวอร์ไคลเอ็นต์ซึ่งไคลเอนต์สามารถเชื่อมต่อกับเซิร์ฟเวอร์ Derby ผ่านเครือข่าย

derbyclient.jar ไดรเวอร์ JDBC ไคลเอ็นต์เครือข่าย
Derbytools.jar เครื่องมือบรรทัดคำสั่ง ไฟล์ jar นี้มีเครื่องมือเช่น sysinfo, ijและ dblook.
Derbyoptionaltools.jar ยูทิลิตี้บรรทัดคำสั่งเสริม (เครื่องมือ)

ไฟล์ jar นี้มีเครื่องมือเสริม: เครื่องมือทางเลือก databaseMetaData, เครื่องมือเสริม ForeignViews, เครื่องมือเสริม luceneSupport, เครื่องมือเสริม rawDBReader, เครื่องมือเสริม simpleJson และอื่น ๆ

DerbyLocale_XX.jar ไฟล์ Jar เพื่อแปลข้อความ

นอกเหนือจากไฟล์ jar ที่กล่าวถึงข้างต้นแล้วคุณยังสามารถดู derbyLocale_XX.jar ได้หลายรายการ (es, fr, hu, it, ja, ฯลฯ ) ด้วยการใช้สิ่งเหล่านี้คุณสามารถแปลข้อความของ Apache Derby

คุณสามารถปรับใช้ apache derby ในสองโหมดคือโหมดฝังตัวและโหมดเซิร์ฟเวอร์

โหมดฝังตัว

คุณสามารถรันดาร์บี้ในโหมดฝังตัวโดยใช้แอปพลิเคชัน Java (โดยใช้ไดรเวอร์แบบฝัง) หากคุณปรับใช้ Derby ในโหมดฝังตัวเอ็นจินฐานข้อมูลจะรันใน JVM เดียวกันกับแอ็พพลิเคชัน Java เริ่มต้นและหยุดด้วยแอปพลิเคชัน คุณสามารถเข้าถึงฐานข้อมูลได้ด้วยแอปพลิเคชันนี้เท่านั้น

โหมดเซิร์ฟเวอร์

ในโหมดเซิร์ฟเวอร์ดาร์บี้จะถูกรันใน JVM ของแอ็พพลิเคชันเซิร์ฟเวอร์ซึ่งคุณสามารถส่งคำร้องขอไปยังเซิร์ฟเวอร์เพื่อเข้าถึงได้ ไม่เหมือนในโหมดฝังตัวแอปพลิเคชันหลายตัว (java) สามารถส่งคำขอไปยังเซิร์ฟเวอร์และเข้าถึงฐานข้อมูลได้

บทต่อไปนี้อธิบายวิธีการดาวน์โหลดและติดตั้ง Apache Derby

กำลังดาวน์โหลด Apache Derby

ไปที่โฮมเพจของโฮมเพจ Apache Derby https://db.apache.org/derby/. คลิกแท็บดาวน์โหลด

เลือกและคลิกที่ลิงค์ของ Apache Derby เวอร์ชันล่าสุด

เมื่อคลิกลิงก์ที่เลือกคุณจะถูกเปลี่ยนเส้นทางไปยังไฟล์ Distributionsหน้า apache ดาร์บี้ หากคุณสังเกตที่นี่ดาร์บี้จะให้การแจกแจงเช่น db-derby-bin, db-derbylib.zip, db-derby-lib-debug.zip และ db-derby-src.zip

ดาวน์โหลดไฟล์ db-derby-binโฟลเดอร์ คัดลอกเนื้อหาไปยังโฟลเดอร์แยกต่างหากที่คุณต้องการติดตั้ง Apache Derby (ตัวอย่างเช่นพูดC:\Derby)

ตอนนี้เพื่อทำงานกับดาร์บี้

  • ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าไฟล์ JAVA_HOME โดยส่งผ่านตำแหน่งของโฟลเดอร์ bin ของโฟลเดอร์ Java Installation และรวมไฟล์ JAVA_HOME/bin ในตัวแปร PATH

  • สร้างตัวแปรสภาพแวดล้อมใหม่ DERBY_HOME ด้วยค่า C: \ Derby

  • โฟลเดอร์ bin ของการแจกแจง db-derby-bin (เราเปลี่ยนเป็น C: \ Derby \ bin) มีไฟล์ jar ที่จำเป็นทั้งหมด

ตามที่กล่าวไว้ Apache Derby สามารถติดตั้ง / ปรับใช้งานได้สองวิธีดังนี้ -

  • Embedded mode- ในการนี้คุณต้องเข้าถึงฐานข้อมูลโดยใช้ไดรเวอร์ Embedded Derby JDBC คุณสามารถเริ่มและหยุดดาร์บี้ผ่านแอปพลิเคชัน Java ทั้งฐานข้อมูลเอ็นจิ้นและแอปพลิเคชันของคุณจะทำงานบน JVM เดียวกัน

  • Network Server mode- ในโหมดนี้คุณสามารถเข้าถึง Derby ในรูปแบบไคลเอนต์เซิร์ฟเวอร์ทั่วไปโดย Derby ถูกฝังอยู่ในระบบเซิร์ฟเวอร์ จากนั้นเครื่องไคลเอนต์ที่ทำงานใน JVM ที่แตกต่างกัน (ของเซิร์ฟเวอร์) จะส่งคำขอไปยังเซิร์ฟเวอร์และเซิร์ฟเวอร์ตอบสนองต่อคำขอเหล่านั้น

ไคลเอนต์สามารถเป็น JVM อื่นในเครื่องระบบเดียวกันของเซิร์ฟเวอร์หรือแอ็พพลิเคชัน Java จากระบบรีโมต

การติดตั้ง Derby ในโหมดฝังตัว

ในการติดตั้ง Apache Derby ในโหมดฝังตัวให้รวมไฟล์ jar derby.jar ใน CLASSPATH ของคุณ

หรือคุณสามารถตั้งค่า classpath สำหรับไฟล์ jar ที่ต้องการได้โดยเรียกใช้ไฟล์ setEmbeddedCPคำสั่ง เรียกดูไฟล์bin ไดเร็กทอรีของ Apache Derby และเรียกใช้ไฟล์นี้ตามที่แสดงด้านล่าง -

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

หลังจากตั้งค่า Apache Derby หากต้องการเข้าถึงให้เรียกใช้โปรแกรม Java โดยใช้ไดรเวอร์แบบฝัง

การยืนยัน

คุณสามารถตรวจสอบการตั้งค่าโดยใช้ไฟล์ ij เครื่องมือดังแสดงด้านล่าง -

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

การติดตั้ง Derby ในโหมดเซิร์ฟเวอร์เครือข่าย

ในการติดตั้ง Apache Derby ในโหมดเซิร์ฟเวอร์เครือข่ายคุณต้องรวม derbynet.jar และ derbytools.jar ไฟล์ไปยัง CLASSPATH

หรือคุณสามารถตั้งค่าเส้นทางคลาสสำหรับไฟล์ jar ที่ต้องการได้โดยเรียกใช้ไฟล์ setNetworkServerCPคำสั่ง เรียกดูไฟล์bin ไดเร็กทอรีของ Apache Derby และเรียกใช้ไฟล์นี้ตามที่แสดงด้านล่าง -

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

เริ่ม Derby ในโหมดเซิร์ฟเวอร์

คุณสามารถเริ่ม Network Server ได้โดยรันคำสั่ง startNetworkServer. เรียกดูไฟล์bin ไดเร็กทอรีของ Apache Derby และรันคำสั่งนี้ตามที่แสดงด้านล่าง -

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

หรือคุณสามารถเริ่มเซิร์ฟเวอร์โดยใช้ไฟล์ derbyrun.jar ดังแสดงด้านล่าง -

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

ไคลเอนต์เครือข่าย

ในไคลเอนต์เพิ่มไฟล์ jar derbyclient.jar และ derbytools.jarไปยัง CLASSPATH หรือเรียกใช้ไฟล์setNetworkClientCP คำสั่งดังแสดงด้านล่าง -

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

จากไคลเอนต์นี้คุณสามารถส่งคำขอไปยังเซิร์ฟเวอร์ได้

การยืนยัน

คุณสามารถตรวจสอบการตั้งค่าโดยใช้ไฟล์ ij เครื่องมือดังแสดงด้านล่าง -

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

สภาพแวดล้อม Apache Derby Eclipse

ในขณะที่ทำงานกับ Eclipse คุณต้องตั้งค่าเส้นทางการสร้างสำหรับไฟล์ jar ที่ต้องการทั้งหมด

ขั้นตอนที่ 1: สร้างโครงการและกำหนดเส้นทางการสร้าง

เปิด eclipse และสร้างโครงการตัวอย่าง คลิกขวาที่โครงการและเลือกตัวเลือกBuild Path -> Configure Build เส้นทางดังภาพด้านล่าง -

ใน Java Build Path กรอบใน Libraries คลิกที่แท็บ Add External JARs.

และเลือกที่จำเป็น jar ไฟล์ในโฟลเดอร์ lib ของโฟลเดอร์การติดตั้ง Derby และคลิกที่ Apply and Close.

Apache Derby มีเครื่องมือต่างๆเช่น sysinfo, ij และ, dblook.

เครื่องมือ sysinfo

เมื่อใช้เครื่องมือนี้คุณจะได้รับข้อมูลเกี่ยวกับสภาพแวดล้อม Java และ Derby

เรียกดูโฟลเดอร์ bin ของไดเร็กทอรีการติดตั้ง Derby และดำเนินการคำสั่ง sysinfo ดังที่แสดงด้านล่าง -

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

ในการดำเนินการจะให้ข้อมูลระบบเกี่ยวกับ java และ Derby ตามที่ระบุด้านล่าง -

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

เมื่อใช้เครื่องมือนี้คุณสามารถเรียกใช้สคริปต์และแบบสอบถามของ apache Derby

เรียกดูโฟลเดอร์ bin ของไดเร็กทอรีการติดตั้ง Derby และดำเนินการคำสั่ง ij ดังที่แสดงด้านล่าง -

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

สิ่งนี้จะทำให้คุณ ij shell ซึ่งคุณสามารถรันคำสั่งและสคริปต์ดาร์บี้ดังที่แสดงด้านล่าง -

ij version 10.14
ij>

การใช้ help คำสั่งคุณจะได้รับรายการคำสั่งที่เชลล์นี้รองรับ

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

เครื่องมือนี้ใช้ในการสร้าง Data Definition Language

เรียกดูโฟลเดอร์ bin ของไดเร็กทอรีการติดตั้ง Derby และเรียกใช้ไฟล์ dblook คำสั่งดังแสดงด้านล่าง -

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

ที่ไหน myURL คือ URL การเชื่อมต่อของฐานข้อมูลที่คุณต้องใช้ในการสร้าง DDL

บทนี้จะให้ไวยากรณ์ของคำสั่ง Apache Derby SQL ทั้งหมด

คำสั่งทั้งหมดเริ่มต้นด้วยคำสำคัญใด ๆ เช่น SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW และคำสั่งทั้งหมดลงท้ายด้วยอัฒภาค (;)

คำสั่ง SQL ของ Apache Derby เป็นตัวพิมพ์เล็กและใหญ่ซึ่งรวมถึงชื่อตาราง

สร้างคำชี้แจง

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 TABLE table_name;

คำสั่ง INSERT

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

เลือกคำสั่ง

SELECT column_name, column_name, ... FROM table_name;

อัปเดตคำชี้แจง

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

ลบคำสั่ง

DELETE FROM table_name WHERE condition;

คำชี้แจงรายละเอียด

Describe table_name

คำสั่งตาราง TRUNCATE TABLE

TRUNCATE TABLE table_name;

แก้ไขคำชี้แจง - การเพิ่มคอลัมน์

ALTER TABLE table_name ADD COLUMN column_name column_type;

ALTER Statement - การเพิ่มข้อ จำกัด

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

ปรับเปลี่ยนคำสั่ง - วางคอลัมน์

ALTER TABLE table_name DROP COLUMN column_name;

ALTER Statement - การลดข้อ จำกัด

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

WHERE ข้อ

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

จัดกลุ่มตามข้อ

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

สั่งซื้อตามข้อ

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

มีข้อ

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

การสร้างดัชนี

CTREATE INDEX index_name on table_name (column_name);

การสร้างดัชนี UNIQUE

CREATE UNIQUE INDEX index_name on table_name (column_name);

การสร้างดัชนี COMPOSITE

CREATE INDEX index_name on table_name (column_name1, column_name2);

การแสดงดัชนี

SHOW INDEXES FROM table_name;

ดัชนีการลดลง

DROP INDEX index_name;

Data Type เป็นแอตทริบิวต์ที่ระบุประเภทข้อมูลของออบเจ็กต์ใด ๆ แต่ละคอลัมน์ตัวแปรและนิพจน์มีชนิดข้อมูลที่เกี่ยวข้อง คุณสามารถใช้ชนิดข้อมูลเหล่านี้ขณะสร้างตารางของคุณ คุณสามารถเลือกประเภทข้อมูลสำหรับคอลัมน์ตารางตามความต้องการของคุณ

Derby Server มีประเภทข้อมูลหลายประเภทสำหรับการใช้งานของคุณตามรายการด้านล่าง -

ประเภทข้อมูลตัวเลขจำนวนเต็ม

ต่อไปนี้เป็นรายการประเภทข้อมูลตัวเลขจำนวนเต็ม -

ประเภทข้อมูล ขนาด จาก ถึง
SMALLINT 2 ไบต์ -32768 32767
จำนวนเต็ม 4 ไบต์ -2,147,483,648 2,147,483,647
ใหญ่ 8 ไบต์ -9223372036854775808 9223372036854775808

ประเภทข้อมูลตัวเลขโดยประมาณ

ต่อไปนี้เป็นรายการประเภทข้อมูลตัวเลขโดยประมาณ -

ประเภทข้อมูล ขนาด จาก ถึง
จริง 4 ไบต์ -3.40E + 38 3.40E + 38
ความแม่นยำสองเท่า 8 ไบต์ -1.79E + 308 1.79E + 308
ลอย -1.79E + 308 1.79E + 308

ประเภทข้อมูลตัวเลขที่แน่นอน

ต่อไปนี้เป็นรายการประเภทข้อมูลตัวเลขที่แน่นอน -

ประเภทข้อมูล จาก ถึง
ทศนิยม -10 ^ 38 +1 10 ^ 38 -1
NUMERIC -10 ^ 38 +1 10 ^ 38 -1

คำสั่ง CREATE TABLE ใช้สำหรับสร้างตารางใหม่ในฐานข้อมูล Derby

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง 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)
);

อีกวิธีในการสร้างตารางใน Apache Derby คือคุณสามารถระบุชื่อคอลัมน์และชนิดข้อมูลโดยใช้แบบสอบถาม ไวยากรณ์สำหรับสิ่งนี้ได้รับด้านล่าง -

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

ตัวอย่าง

คำสั่ง SQL ต่อไปนี้สร้างตารางชื่อ Student มีสี่คอลัมน์โดยที่ id เป็นคีย์หลักและสร้างขึ้นโดยอัตโนมัติ

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

คำสั่ง DESCRIBE อธิบายตารางที่ระบุโดยการแสดงรายการคอลัมน์และรายละเอียดหากมีตารางอยู่ คุณสามารถใช้คำสั่งนี้เพื่อตรวจสอบว่าตารางถูกสร้างขึ้นหรือไม่

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

สร้างตารางโดยใช้โปรแกรม JDBC

ส่วนนี้สอนวิธีสร้างตารางในฐานข้อมูล Apache Derby โดยใช้แอปพลิเคชัน JDBC

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือorg.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527 / DATABASE_NAME; create = true; user = USER_NAME; passw ord = PASSWORD "

ทำตามขั้นตอนด้านล่างเพื่อสร้างตารางใน Apache Derby -

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ในการสื่อสารกับฐานข้อมูลก่อนอื่นคุณต้องลงทะเบียนไดรเวอร์ forName() วิธีการเรียน Classยอมรับค่า String ที่แสดงชื่อคลาสจะโหลดเข้าสู่หน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล Connectionคลาสแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement or, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() and, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute()วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด executeUpdate()วิธีดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery() วิธีการผลลัพธ์ที่ส่งกลับข้อมูล ฯลฯ ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้สาธิตวิธีการสร้างตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้

Table created

คำสั่ง DROP TABLE ใช้เพื่อลบตารางที่มีอยู่ซึ่งรวมถึงทริกเกอร์ข้อ จำกัด สิทธิ์การอนุญาตทั้งหมด

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง DROP TABLE

ij> DROP TABLE table_name;

ตัวอย่าง

สมมติว่าคุณมีตารางชื่อ Student อยู่ในฐานข้อมูล คำสั่ง SQL ต่อไปนี้ลบตารางชื่อ Student

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

เนื่องจากเราได้ลบตารางออกไปหากเราพยายามอธิบายเราจะได้รับข้อผิดพลาดดังนี้

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

Drop Table โดยใช้โปรแกรม JDBC

ส่วนนี้จะสอนวิธีวางตารางในฐานข้อมูล Apache Derby โดยใช้แอปพลิเคชัน JDBC

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือ org.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527/DATABASE_NAME;สร้าง = true; ผู้ใช้ =USER_NAME; passw ord =PASSWORD"

ทำตามขั้นตอนด้านล่างเพื่อวางตารางใน Apache Derby

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ในการสื่อสารกับฐานข้อมูลก่อนอื่นคุณต้องลงทะเบียนไดรเวอร์ forName() วิธีการของคลาส Classยอมรับค่า String ที่แสดงชื่อคลาสจะโหลดเข้าสู่หน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล Connectionคลาสแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement หรือ, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() and, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute()วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด executeUpdate()วิธีการดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery() วิธีการผลลัพธ์ที่ส่งกลับข้อมูล ฯลฯ ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้สาธิตวิธีการดร็อปตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้ -

Table dropped

Apache Derby - ใส่ข้อมูล

แบบสอบถามแทรกแทรกข้อมูล: new recordsลงในตาราง

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง INSERT -

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

โดยที่ column1, column2 คือค่าคอลัมน์ในแถวที่จะแทรก

ตัวอย่าง

คำสั่ง SQL INSERT ต่อไปนี้จะแทรกแถวใหม่ในตาราง Student ซึ่งจะแทรกค่าในคอลัมน์ id, age, first name และ, last name.

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

ไวยากรณ์ 2

หรือคุณสามารถแทรกสองคอลัมน์โดยระบุชื่อคอลัมน์ตามที่ระบุด้านล่าง -

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

Note- Apache Derby จะคำนวณค่าสำหรับคอลัมน์ที่สร้างขึ้นโดยอัตโนมัติ ตัวอย่างเช่นไม่จำเป็นต้องส่งค่าสำหรับคอลัมน์ id ในตารางนักเรียนที่สร้างขึ้นก่อนหน้านี้ในบทช่วยสอนนี้ ในกรณีที่ตารางของคุณสร้างคอลัมน์ให้ใช้syntax2.

ตัวอย่าง

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

และคุณยังสามารถแทรกสองแถวโดยใช้คำสั่งเดียวดังนี้ -

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

คุณสามารถตรวจสอบเนื้อหาของตารางโดยใช้คำสั่ง SELECT (เราจะพูดถึงคำสั่งนี้ในบทช่วยสอนนี้ในภายหลัง)

ไวยากรณ์ 3

คุณสามารถใช้แบบสอบถามอื่นในคำสั่งแทรกเป็น -

INSERT INTO table_Name Query

ตัวอย่าง

สมมติว่าเรามีตารางชื่อ First_Year ในฐานข้อมูลดังที่แสดงด้านล่างโดยมีคอลัมน์ที่คล้ายกันในตารางนักเรียน -

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

คุณสามารถแทรกค่าในตารางนี้ไปยังตารางนักเรียนโดยใช้ไวยากรณ์ด้านบนเป็น -

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

หลังจากเรียกใช้คำสั่งแทรกข้างต้นทั้งหมดแล้วตาราง Student จะเป็นดังนี้ -

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

แทรกข้อมูลโดยใช้โปรแกรม JDBC

ส่วนนี้จะสอนวิธีแทรกข้อมูลลงในตารางในฐานข้อมูล Apache Derby โดยใช้แอปพลิเคชัน JDBC

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือ org.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527 /DATABASE_NAME;สร้าง = true; ผู้ใช้ =USER_NAME;passw ord =PASSWORD"

ทำตามขั้นตอนด้านล่างเพื่อแทรกข้อมูลลงในตารางใน Apache Derby -

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ในการสื่อสารกับฐานข้อมูลก่อนอื่นคุณต้องลงทะเบียนไดรเวอร์ forName() วิธีการเรียน Classยอมรับค่า String ที่แสดงชื่อคลาสจะโหลดเข้าสู่หน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล Connectionคลาสแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement or, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() และ, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute() วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด

executeUpdate()วิธีดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery() วิธีการผลลัพธ์ที่ส่งกลับข้อมูล ฯลฯ ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้สาธิตวิธีการแทรกข้อมูลลงในตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้ -

Values inserted

Apache Derby - ดึงข้อมูล

คำสั่ง SELECT ใช้เพื่อดึงข้อมูลจากตาราง ส่งคืนข้อมูลในรูปแบบของตารางที่เรียกว่าชุดผลลัพธ์

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง SELECT -

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

ตัวอย่าง

สมมติว่าเรามีตารางชื่อพนักงานในฐานข้อมูลดังแสดงด้านล่าง -

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

และแทรกสี่ระเบียนตามที่แสดงด้านล่าง -

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

คำสั่ง SQL ต่อไปนี้จะดึงรายละเอียดชื่ออายุและเงินเดือนของพนักงานทั้งหมดในตาราง

ij> SELECT Id, Name, Salary FROM Employees;

ผลลัพธ์ของแบบสอบถามนี้คือ -

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

ถ้าคุณต้องการรับระเบียนทั้งหมดของตารางนี้ในคราวเดียวให้ใช้ * แทนชื่อของคอลัมน์

ij> select * from Employees;

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -

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

ดึงข้อมูลโดยใช้โปรแกรม JDBC

ส่วนนี้จะสอนวิธีการดึงข้อมูลจากตารางในฐานข้อมูล Apache Derby โดยใช้แอปพลิเคชัน JDBC

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือ org.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527 /DATABASE_NAME; สร้าง = true; ผู้ใช้ =USER_NAME; passw ord =PASSWORD"

ทำตามขั้นตอนด้านล่างเพื่อดึงข้อมูลจากตารางใน Apache Derby -

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ในการสื่อสารกับฐานข้อมูลก่อนอื่นคุณต้องลงทะเบียนไดรเวอร์ forName() วิธีการของคลาส Classยอมรับค่า String ที่แสดงชื่อคลาสจะโหลดเข้าสู่หน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล Connectionคลาสแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement หรือ, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() และ, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute()วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด executeUpdate()วิธีดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery() วิธีการผลลัพธ์ที่ส่งกลับข้อมูล ฯลฯ ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้สาธิตวิธีการดึงข้อมูลจากตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

executeQuery() วิธีการคืนค่า a ResultSetวัตถุที่เก็บผลลัพธ์ของคำสั่ง ในขั้นต้นตัวชี้ชุดผลลัพธ์จะอยู่ที่ระเบียนแรกคุณสามารถพิมพ์เนื้อหาของวัตถุ ResultSet โดยใช้next() และ getXXX() วิธีการ

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้

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 - อัปเดตข้อมูล

คำสั่ง UPDATE ใช้เพื่ออัพเดตข้อมูลในตาราง Apache Derby มีการอัปเดต (ไวยากรณ์) สองประเภท ได้แก่searched อัปเดตและ positioned อัพเดต.

คำสั่ง UPDATE ที่ค้นหาจะอัปเดตคอลัมน์ที่ระบุทั้งหมดของตาราง

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของแบบสอบถาม UPDATE -

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

คำสั่ง WHERE สามารถใช้ตัวดำเนินการเปรียบเทียบเช่น =,! =, <,>, <= และ> = รวมทั้งตัวดำเนินการระหว่างและ LIKE

ตัวอย่าง

สมมติว่าคุณมีตารางพนักงานในฐานข้อมูลพร้อมด้วยระเบียน 4 รายการดังที่แสดงด้านล่าง -

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

คำสั่ง SQL UPDATE ต่อไปนี้จะอัปเดตตำแหน่งและเงินเดือนของพนักงานที่มีชื่อว่า Kaylan

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

หากคุณได้รับเนื้อหาของตารางพนักงานคุณสามารถสังเกตการเปลี่ยนแปลงที่ทำโดยแบบสอบถาม UPDATE

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

อัพเดตข้อมูลโดยใช้โปรแกรม JDBC

ส่วนนี้อธิบายวิธีการอัพเดตเร็กคอร์ดที่มีอยู่ของตารางในฐานข้อมูล Apache Derby โดยใช้แอพพลิเคชั่น JDBC

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือ org.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527 /DATABASE_NAME; สร้าง = true; ผู้ใช้ =USER_NAME; passw ord =PASSWORD"

ทำตามขั้นตอนด้านล่างเพื่ออัปเดตระเบียนที่มีอยู่ของตารางใน Apache Derby

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ในการสื่อสารกับฐานข้อมูลก่อนอื่นคุณต้องลงทะเบียนไดรเวอร์ forName() วิธีการของคลาส Classยอมรับค่า String ที่แสดงชื่อคลาสจะโหลดเข้าสู่หน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล คลาสการเชื่อมต่อแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement or, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() และ, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute()วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด executeUpdate()วิธีดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery()วิธีการส่งคืนข้อมูล ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการตามคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้สาธิตวิธีการอัพเดตเร็กคอร์ดที่มีอยู่ของตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้ -

Number of records updated are: 1

Apache Derby - ลบข้อมูล

คำสั่ง DELETE ใช้เพื่อลบแถวของตาราง เช่นเดียวกับคำสั่ง UPDATE Apache Derby ให้ลบ (ไวยากรณ์) สองประเภท:searched ลบและ positioned ลบ.

คำสั่งลบที่ค้นหาจะลบคอลัมน์ที่ระบุทั้งหมดของตาราง

ไวยากรณ์

ไวยากรณ์ของคำสั่ง DELETE มีดังนี้ -

ij> DELETE FROM table_name WHERE condition;

ตัวอย่าง

สมมติว่าเรามีตารางชื่อพนักงานที่มีประวัติ 5 รายการตามที่แสดงด้านล่าง -

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

คำสั่ง SQL DELETE ต่อไปนี้จะลบเร็กคอร์ดที่มีชื่อ Trupti

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

หากคุณได้รับเนื้อหาของตารางพนักงานคุณจะเห็นเพียงสี่ระเบียนดังที่แสดงด้านล่าง -

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

หากต้องการลบระเบียนทั้งหมดในตารางให้ดำเนินการสืบค้นเดียวกันโดยไม่ต้องอยู่ที่ส่วนคำสั่ง

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

ตอนนี้หากคุณพยายามรับเนื้อหาของตารางพนักงานคุณจะได้รับตารางว่างตามที่ระบุด้านล่าง -

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

ลบข้อมูลโดยใช้โปรแกรม JDBC

ส่วนนี้อธิบายวิธีการลบเร็กคอร์ดที่มีอยู่ของตารางในฐานข้อมูล Apache Derby โดยใช้แอปพลิเคชัน JDBC

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือ org.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527 /DATABASE_NAME;สร้าง = true; ผู้ใช้ =USER_NAME;passw ord =PASSWORD".

ทำตามขั้นตอนด้านล่างเพื่อลบบันทึกที่มีอยู่ของตารางใน Apache Derby: / p>

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ประการแรกคุณต้องลงทะเบียนไดรเวอร์เพื่อสื่อสารกับฐานข้อมูล forName() วิธีการของคลาส Classยอมรับค่า String ที่แสดงชื่อคลาสจะโหลดเข้าสู่หน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล Connectionคลาสแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement or, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() and, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute()วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด executeUpdate()วิธีดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery()ผลลัพธ์วิธีการที่ส่งกลับข้อมูล ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการตามคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้สาธิตวิธีการลบเร็กคอร์ดที่มีอยู่ของตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้ -

Number of records deleted are: 1

Apache Derby - โดยที่ Clause

ส่วนคำสั่ง WHERE ถูกใช้ในคำสั่ง SELECT, DELETE หรือ, UPDATE เพื่อระบุแถวที่ต้องดำเนินการ โดยปกติคำสั่งนี้ตามด้วยเงื่อนไขหรือนิพจน์ที่ส่งคืนค่าบูลีนการดำเนินการเลือกลบหรืออัพเดตจะดำเนินการเฉพาะในแถวที่ตรงตามเงื่อนไขที่กำหนด

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;

คำสั่ง WHERE สามารถใช้ตัวดำเนินการเปรียบเทียบเช่น =,! =, <,>, <= และ> = รวมทั้งตัวดำเนินการระหว่างและ LIKE

ตัวอย่าง

สมมติว่าเรามีตารางชื่อพนักงานในฐานข้อมูลโดยมีข้อมูล 7 รายการตามที่แสดงด้านล่าง -

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

คำสั่ง SQL DELETE ต่อไปนี้ดึงข้อมูลของพนักงานที่มีเงินเดือนมากกว่า 35000 -

ij> SELECT * FROM Employees WHERE Salary>35000;

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -

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

ในทำนองเดียวกันคุณสามารถลบและอัปเดตบันทึกโดยใช้ข้อนี้ได้

ตัวอย่างต่อไปนี้จะอัปเดตตำแหน่งของผู้ที่มีเงินเดือนน้อยกว่า 30000

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

หากคุณตรวจสอบเนื้อหาของตารางคุณสามารถดูตารางที่อัปเดตดังที่แสดงด้านล่าง -

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

โดยที่ประโยค JDBC ตัวอย่าง

ส่วนนี้จะสอนวิธีใช้ WHERE clause และดำเนินการ CURD บนตารางในฐานข้อมูล Apache Derby โดยใช้แอปพลิเคชัน JDBC

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือ org.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527 /DATABASE_NAME; สร้าง = true; ผู้ใช้ =USER_NAME;passw ord =PASSWORD".

ทำตามขั้นตอนด้านล่างเพื่อใช้คำสั่ง WHERE และดำเนินการ CURD บนตารางใน Apache Derby

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ในการสื่อสารกับฐานข้อมูลก่อนอื่นคุณต้องลงทะเบียนไดรเวอร์ forName() วิธีการของคลาส Classยอมรับค่า String ที่แสดงชื่อคลาสจะโหลดเข้าสู่หน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล Connectionคลาสแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement หรือ, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() and, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute()วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด executeUpdate()วิธีดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery()ผลลัพธ์วิธีการที่ส่งกลับข้อมูล ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการตามคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้แสดงให้เห็นถึงวิธีการใช้ WHERE clause และดำเนินการ CURD บนตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้ -

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 - กลุ่มตามข้อ

GROUP BY clause ใช้กับคำสั่ง SELECT ใช้เพื่อสร้างชุดย่อยในกรณีที่มีข้อมูลเหมือนกัน โดยปกติอนุประโยคนี้ตามด้วย ORDER BY clause และวางไว้หลัง WHERE clause

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของ GROUP BY clause -

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

ตัวอย่าง

สมมติว่าเรามีตารางชื่อพนักงานในฐานข้อมูลพร้อมบันทึกต่อไปนี้ -

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

คำสั่ง SELECT ต่อไปนี้กับ GROUP BY clause จะจัดกลุ่มตารางตามตำแหน่ง จะแสดงจำนวนเงินเดือนทั้งหมดที่มอบให้กับพนักงาน ณ สถานที่ตั้ง

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

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

ในทำนองเดียวกันแบบสอบถามต่อไปนี้จะพบจำนวนเงินเฉลี่ยที่พนักงานใช้เป็นเงินเดือนในสถานที่

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

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

จัดกลุ่มตามข้อตัวอย่าง JDBC

ส่วนนี้จะสอนวิธีใช้ Group By clause และดำเนินการ CURD บนตารางในฐานข้อมูล Apache Derby โดยใช้แอปพลิเคชัน JDBC

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือ org.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527 /DATABASE_NAME;สร้าง = true; ผู้ใช้ =USER_NAME;passw ord =PASSWORD"

ทำตามขั้นตอนด้านล่างเพื่อใช้ Group By clause และดำเนินการ CURD บนตารางใน Apache Derby

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ในการสื่อสารกับฐานข้อมูลก่อนอื่นคุณต้องลงทะเบียนไดรเวอร์ forName() วิธีการของคลาส Classยอมรับค่า String ที่แสดงชื่อคลาสจะโหลดเข้าสู่หน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล Connectionคลาสแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement หรือ, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() and, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute()วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด executeUpdate()วิธีการใช้เพื่อดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery()วิธีการส่งคืนข้อมูล ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการตามคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้สาธิตวิธีการใช้งาน Group Byประโยคและดำเนินการ CURD บนตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้ -

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000

Apache Derby - เรียงตามข้อ

คำสั่ง ORDER BY ใช้เพื่อจัดเรียงเนื้อหาของผลลัพธ์ที่ตั้งไว้ตามลำดับที่ใช้คำสำคัญ ASC แสดงลำดับจากน้อยไปหามากและ DESC ที่แสดงลำดับจากมากไปหาน้อย หากคุณไม่ได้กล่าวถึงสิ่งเหล่านี้เนื้อหาจะถูกจัดเรียงจากน้อยไปหามากตามค่าเริ่มต้น

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง ORDER BY -

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

ตัวอย่าง

สมมติว่าเรามีตารางชื่อพนักงานในฐานข้อมูลพร้อมบันทึกต่อไปนี้ -

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

แบบสอบถามต่อไปนี้จัดเรียงเนื้อหาของตารางตามลำดับจากน้อยไปหามากตามชื่อของพนักงาน

ij> SELECT * FROM Employees ORDER BY Name;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

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

ในทำนองเดียวกันแบบสอบถามต่อไปนี้จัดเรียงเนื้อหาของตารางตามลำดับจากมากไปหาน้อยตามเงินเดือนของพนักงาน -

ij> SELECT * FROM Employees ORDER BY Salary DESC;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

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

การจัดเรียงข้อมูลโดยใช้โปรแกรม JDBC

ส่วนนี้จะสอนวิธีการเรียงลำดับเนื้อหาของตารางใน Derby โดยใช้ JDBC คุณสามารถจัดเรียงระเบียนตามลำดับโดยใช้คำสั่ง ORDER BY และคำสำคัญ ASC (แสดงลำดับจากน้อยไปหามาก) และ DSC (แสดงถึงลำดับจากมากไปหาน้อย)

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือ org.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527 /DATABASE_NAME;สร้าง = true; ผู้ใช้ =USER_NAME;passw ord =PASSWORD".

ทำตามขั้นตอนด้านล่างเพื่อจัดเรียงระเบียนของตารางใน Apache Derby -

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ในการสื่อสารกับฐานข้อมูลก่อนอื่นคุณต้องลงทะเบียนไดรเวอร์ forName() วิธีการของคลาส Classยอมรับค่า String ที่แสดงชื่อคลาสจะโหลดเข้าสู่หน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล Connectionคลาสแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์ getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement หรือ, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() and, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute()วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด executeUpdate()วิธีดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery()วิธีการส่งคืนข้อมูล ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการตามคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้สาธิตวิธีการเรียงลำดับเร็กคอร์ดของตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้ -

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 - มี Clause

HAVING Clause ช่วยให้คุณสามารถระบุเงื่อนไขที่กรองผลลัพธ์ของกลุ่มที่จะปรากฏในผลลัพธ์

WHERE clause วางเงื่อนไขบนคอลัมน์ที่เลือกในขณะที่ HAVING clause วางเงื่อนไขบนกลุ่มที่สร้างโดย GROUP BY clause

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของ HAVING clause -

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

ตัวอย่าง

สมมติว่าเรามีตารางชื่อพนักงานในฐานข้อมูลโดยมี 13 ระเบียนดังที่แสดงด้านล่าง -

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

ข้อความค้นหาต่อไปนี้แสดงเงินเดือนสูงสุดของพนักงานในสถานที่ซึ่งมีพนักงานอย่างน้อย 3 คน -

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

สิ่งนี้สร้างผลลัพธ์ต่อไปนี้ -

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

การจัดเรียงข้อมูลโดยใช้โปรแกรม JDBC

ส่วนนี้สอนวิธีใช้การมีส่วนคำสั่งในฐานข้อมูล Apache Derby โดยใช้แอปพลิเคชัน JDBC

หากคุณต้องการขอเซิร์ฟเวอร์เครือข่าย Derby โดยใช้ไคลเอนต์เครือข่ายตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เปิดใช้งานแล้ว ชื่อคลาสสำหรับไดรเวอร์ไคลเอ็นต์เครือข่ายคือ org.apache.derby.jdbc.ClientDriver และ URL คือ jdbc: derby: // localhost: 1527 /DATABASE_NAME;สร้าง = true; ผู้ใช้ =USER_NAME;passw ord =PASSWORD"

ทำตามขั้นตอนด้านล่างเพื่อจัดเรียงระเบียนของตารางใน Apache Derby

ขั้นตอนที่ 1: ลงทะเบียนไดรเวอร์

ในการสื่อสารกับฐานข้อมูลก่อนอื่นคุณต้องลงทะเบียนไดรเวอร์ forName() วิธีการของคลาส Classยอมรับค่า String ที่แสดงถึงชื่อคลาสและโหลดลงในหน่วยความจำซึ่งจะลงทะเบียนโดยอัตโนมัติ ลงทะเบียนไดรเวอร์โดยใช้วิธีนี้

ขั้นตอนที่ 2: รับการเชื่อมต่อ

โดยทั่วไปขั้นตอนแรกที่เราทำเพื่อสื่อสารกับฐานข้อมูลคือการเชื่อมต่อกับฐานข้อมูล Connectionคลาสแสดงถึงการเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ฐานข้อมูล คุณสามารถสร้างวัตถุการเชื่อมต่อโดยเรียกใช้ไฟล์getConnection() วิธีการของ DriverManagerชั้นเรียน. สร้างการเชื่อมต่อโดยใช้วิธีนี้

ขั้นตอนที่ 3: สร้างวัตถุคำสั่ง

คุณต้องสร้างไฟล์ Statement หรือ PreparedStatement or, CallableStatementวัตถุที่จะส่งคำสั่ง SQL ไปยังฐานข้อมูล คุณสามารถสร้างสิ่งเหล่านี้โดยใช้วิธีการcreateStatement(), prepareStatement() and, prepareCall()ตามลำดับ สร้างวัตถุเหล่านี้โดยใช้วิธีการที่เหมาะสม

ขั้นตอนที่ 4: ดำเนินการค้นหา

หลังจากสร้างคำสั่งแล้วคุณต้องดำเนินการ Statement คลาสมีวิธีการต่างๆในการดำเนินการสืบค้นเช่นไฟล์ execute()วิธีดำเนินการคำสั่งที่ส่งคืนชุดผลลัพธ์มากกว่าหนึ่งชุด executeUpdate()วิธีดำเนินการค้นหาเช่น INSERT, UPDATE, DELETE executeQuery()วิธีการส่งคืนข้อมูล ใช้วิธีใดวิธีหนึ่งเหล่านี้และดำเนินการตามคำสั่งที่สร้างขึ้นก่อนหน้านี้

ตัวอย่าง

ตัวอย่าง JDBC ต่อไปนี้แสดงวิธีใช้ Group By clause และดำเนินการ CURD บนตารางใน Apache Derby โดยใช้โปรแกรม JDBC ที่นี่เรากำลังเชื่อมต่อกับฐานข้อมูลชื่อ sampleDB (จะสร้างถ้าไม่มี) โดยใช้ไดรเวอร์ที่ฝังไว้

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้ -

Hyderabad
50000

Lucknow
39000

Vishakhapatnam
45000

Apache Derby - แก้ไขคำชี้แจงตาราง

คำสั่ง ALTER TABLE ช่วยให้คุณสามารถแก้ไขตารางที่มีอยู่ได้ โดยใช้สิ่งนี้คุณสามารถทำสิ่งต่อไปนี้ -

  • เพิ่มคอลัมน์เพิ่มข้อ จำกัด

  • วางคอลัมน์วางข้อ จำกัด

  • เปลี่ยนการล็อกระดับแถวของตาราง

สมมติว่าเราได้สร้างตารางชื่อพนักงานดังที่แสดงด้านล่าง -

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

และแทรกสี่ระเบียนโดยใช้คำสั่งแทรกเป็น -

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

การเพิ่มคอลัมน์ลงในตาราง

ต่อไปนี้เป็นไวยากรณ์ในการเพิ่มคอลัมน์ลงในตารางโดยใช้คำสั่ง ALTER

ALTER TABLE table_name ADD COLUMN column_name column_type;

ตัวอย่าง

เมื่อใช้คำสั่ง ALTER เรากำลังพยายามเพิ่มคอลัมน์ใหม่ชื่อ Age ด้วยชนิดจำนวนเต็ม

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

เพิ่มคอลัมน์อื่นชื่อ Phone_No ด้วยชนิดจำนวนเต็ม

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

คำสั่ง DESCRIBE อธิบายตารางที่ระบุโดยการแสดงรายการคอลัมน์และรายละเอียดหากมีตารางอยู่ หากคุณอธิบายตารางพนักงานคุณสามารถสังเกตคอลัมน์ที่เพิ่มใหม่ดังที่แสดงด้านล่าง -

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

การเพิ่มข้อ จำกัด ในตาราง

ต่อไปนี้เป็นไวยากรณ์เพื่อเพิ่มข้อ จำกัด ให้กับคอลัมน์ของตารางโดยใช้คำสั่ง ALTER

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

ที่ไหน constraint ไม่สามารถเป็นโมฆะ, โมฆะ, คีย์หลัก, ไม่ซ้ำกัน, คีย์ต่างประเทศ, ตรวจสอบ

ตัวอย่าง

เมื่อใช้คำสั่ง ALTER เรากำลังพยายามเพิ่มข้อ จำกัด UNIQUE ไปที่คอลัมน์ Phone_No

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

เมื่อคุณเพิ่มข้อ จำกัด UNIQUE ลงในคอลัมน์ก็ไม่สามารถมีค่าเดียวกันสำหรับสองแถวกล่าวคือหมายเลขโทรศัพท์ควรไม่ซ้ำกันสำหรับพนักงานแต่ละคน

หากคุณพยายามเพิ่มสองคอลัมน์ด้วยหมายเลขโทรศัพท์เดียวกันคุณจะได้รับข้อยกเว้นดังที่แสดงด้านล่าง

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'.

การทิ้งข้อ จำกัด จากตาราง

ต่อไปนี้เป็นไวยากรณ์ที่จะลดข้อ จำกัด ของคอลัมน์ -

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

ตัวอย่าง

คำค้นหาต่อไปนี้จะลบชื่อข้อ จำกัด New_Constraint ในคอลัมน์ Phone_No ที่สร้างไว้ด้านบน

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

เนื่องจากเราได้ลบข้อ จำกัด UNIQUE ในคอลัมน์ Phone_No คุณจึงสามารถเพิ่มคอลัมน์ด้วยหมายเลขโทรศัพท์เดียวกันได้

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

คุณสามารถตรวจสอบเนื้อหาของตาราง ij> เลือก * จากพนักงานได้ดังนี้ -

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

การวางคอลัมน์จากตาราง

ต่อไปนี้เป็นไวยากรณ์สำหรับวางคอลัมน์ของคอลัมน์

ALTER TABLE table_name DROP COLUMN column_name;

ตัวอย่าง

คำค้นหาต่อไปนี้จะลบคอลัมน์ที่ชื่อ age of the employee -

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

หากคุณอธิบายตารางคุณจะเห็นเพียง 4 คอลัมน์

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

การแก้ไขตารางโดยใช้โปรแกรม JDBC

ต่อไปนี้เป็นโปรแกรม JDBC เพื่อปรับเปลี่ยนตารางโดยใช้ ALTER query -

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

เอาต์พุต

ในการรันโปรแกรมข้างต้นผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้น -

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 - ดัชนี Derby

ดัชนีในตารางเป็นเพียงตัวชี้ไปยังข้อมูล สิ่งเหล่านี้ใช้เพื่อเร่งความเร็วในการดึงข้อมูลจากตาราง

หากเราใช้ดัชนีคำสั่ง INSERT และ UPDATE จะดำเนินการในระยะที่ช้าลง ในขณะที่ SELECT และ WHERE ได้รับการดำเนินการในเวลาที่น้อยกว่า

การสร้างดัชนี

คำสั่ง CREATE INDEX ใช้สำหรับการสร้างดัชนีใหม่ในตารางในฐานข้อมูล Derby

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง CREATE INDEX -

CTREATE INDEX index_name on table_name (column_name);

ตัวอย่าง

สมมติว่าเราได้สร้างตารางชื่อพนักงานใน Apache Derby ดังภาพด้านล่าง

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

คำสั่ง SQL ต่อไปนี้สร้างดัชนีบนคอลัมน์ชื่อเงินเดือนในตารางพนักงาน

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

การสร้างดัชนี UNIQUE

ใน Apache Derby ดัชนี UNIQUE ใช้สำหรับการรวมข้อมูล เมื่อคุณสร้างดัชนี UNIQUE บนคอลัมน์ในตารางแล้วจะไม่อนุญาตให้มีค่าที่ซ้ำกัน

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของการสร้างดัชนีเฉพาะ

CREATE UNIQUE INDEX index_name on table_name (column_name);

ตัวอย่าง

ตัวอย่างต่อไปนี้สร้างดัชนี UNIQUE บนคอลัมน์ Id ของตารางพนักงาน

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

เมื่อคุณสร้างดัชนีเฉพาะในคอลัมน์แล้วคุณจะไม่สามารถป้อนค่าเดียวกันสำหรับคอลัมน์นั้นในแถวอื่นได้ ในระยะสั้นคอลัมน์ที่มีดัชนี UNIQE จะไม่อนุญาตให้มีค่าที่ซ้ำกัน

แทรกแถวในตาราง Emp ตามที่แสดงด้านล่าง

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

เนื่องจากเราได้สร้างดัชนีที่ไม่ซ้ำกันในคอลัมน์ Phone_No หากคุณป้อนค่าเดียวกันกับในบันทึกก่อนหน้านี้จะแสดงข้อผิดพลาด

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'.

การสร้างดัชนี COMPOSITE

คุณสามารถสร้างดัชนีเดียวในสองแถวและเรียกว่าดัชนีคอมโพสิต

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของดัชนีคอมโพสิต

CREATE INDEX index_name on table_name (column_name1, column_name2);

ตัวอย่าง

ดัชนีต่อไปนี้สร้างดัชนีผสมในคอลัมน์ชื่อและตำแหน่ง

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

การแสดงดัชนี

แบบสอบถาม SHOW INDEXES แสดงรายการดัชนีบนตาราง

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง SHOW INDEXES -

SHOW INDEXES FROM table_name;

ตัวอย่าง

ตัวอย่างต่อไปนี้ฉันแสดงดัชนีในตารางพนักงาน

ij> SHOW INDEXES FROM Emp;

สิ่งนี้ก่อให้เกิดผลลัพธ์ต่อไปนี้

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

ดัชนีการลดลง

คำสั่ง Drop Index จะลบ / ลดดัชนีที่กำหนดในคอลัมน์

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง DROP INDEX

DROP INDEX index_name;

ตัวอย่าง

ตัวอย่างต่อไปนี้ดร็อปดัชนีชื่อ composite_index และ unique_index ที่สร้างไว้ด้านบน

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

ตอนนี้หากคุณตรวจสอบรายการดัชนีคุณจะเห็นดัชนีในคอลัมน์เดียวเนื่องจากเราได้ลบส่วนที่เหลือ

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

การจัดการดัชนีโดยใช้โปรแกรม JDBC

ต่อไปนี้โปรแกรม JDBC สาธิตวิธีการสร้างดัชนีดร็อปบนคอลัมน์ในตาราง

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

เอาต์พุต

ในการดำเนินการสิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้

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 - ขั้นตอน

บทนี้จะสอนวิธีสร้างและวางขั้นตอนใน Derby

การสร้างขั้นตอน

คุณสามารถสร้างโพรซีเดอร์โดยใช้คำสั่ง CREATE PROCEDURE

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง CREATE PROCEDURE

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

ตัวอย่าง

สมมติว่าเราได้สร้างตารางใน Derby ดังที่แสดงด้านล่าง

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

และแทรกค่าไว้ดังนี้ -

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

ตัวอย่างต่อไปนี้สร้างโพรซีเดอร์ชื่อ Update_Procedure ซึ่งยอมรับพารามิเตอร์ 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

โดยที่คลาส ProcedureExample ดูเหมือน -

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

คุณสามารถตรวจสอบรายการขั้นตอนโดยใช้ SHOW PROCEDURES แบบสอบถาม

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&
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

คุณสามารถสังเกตขั้นตอนที่สร้างขึ้นใหม่ได้ที่นี่

การลดขั้นตอน

คุณสามารถวางขั้นตอนโดยใช้คำสั่ง DROP PROCEDURE

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง DROP PROCEDURE

DROP PROCEDURE procedure_name;

ตัวอย่าง

ตัวอย่างต่อไปนี้ลดขั้นตอนชื่อ Update_Procedure ที่สร้างไว้ด้านบน

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

Apache Derby - Schemas

สคีมาฐานข้อมูลคือโครงสร้างโครงกระดูกที่แสดงถึงมุมมองเชิงตรรกะของฐานข้อมูลทั้งหมด กำหนดวิธีการจัดระเบียบข้อมูลและความสัมพันธ์ระหว่างกันอย่างไร กำหนดข้อ จำกัด ทั้งหมดที่จะนำไปใช้กับข้อมูล

การสร้าง Schema

คุณสามารถสร้างสคีมาใน Apache Derby โดยใช้คำสั่ง CREATE SCHEMA

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง CREATE SCHEMA

CREATE SCHEMA schema_name AUTHORIZATION id

ตัวอย่าง

ตัวอย่างต่อไปนี้สร้าง schema ชื่อ my_schema ในฐานข้อมูล Derby

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

จากนั้นคุณสามารถสร้างตารางในสคีมานี้ดังที่แสดงด้านล่าง

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

คุณสามารถตรวจสอบรายการสกีมาได้โดยใช้แบบสอบถาม SHOW SCHEMAS ที่นี่คุณจะพบรายการสคีมาที่สร้างขึ้น

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

การทิ้งสคีมา

คุณสามารถวางสคีมาที่มีอยู่ได้โดยใช้คำสั่ง DROP SCHEMA

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง DROPS SCHEMA

DROP SCHEMA my_schema RESTRICT;

ตัวอย่าง

คุณสามารถลบสคีมาได้ก็ต่อเมื่อไม่มีวัตถุอยู่ในนั้น หากต้องการลบสคีมาให้ลบตารางทั้งหมดในนั้นและลบสคีมา

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

ตัวอย่างต่อไปนี้จะลดสคีมาที่สร้างไว้ด้านบน

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

ตัวอย่าง JDBC

ต่อไปนี้ตัวอย่าง JDBC สร้างและดร็อปสคีมาชื่อ 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");
   }
}

เอาต์พุต

ในการดำเนินการโปรแกรมข้างต้นจะสร้างตัวอย่างต่อไปนี้

Table created in schema
Schema dropped

Apache Derby - ทริกเกอร์

ในฐานข้อมูลทริกเกอร์คือคำสั่ง / รหัสที่ดำเนินการเมื่อใดก็ตามที่เกิดเหตุการณ์ เมื่อคุณสร้างทริกเกอร์ไปยังเหตุการณ์ใดเหตุการณ์หนึ่งบนตารางโค้ดที่ระบุในทริกเกอร์จะถูกเรียกใช้งานทุกครั้งที่เกิดเหตุการณ์ คุณสามารถสร้างทริกเกอร์หลายรายการในตารางเดียว

บทนี้สอนวิธีสร้างและวางทริกเกอร์โดยใช้ Apache Derby

การสร้างทริกเกอร์

คุณสามารถสร้างทริกเกอร์ใน Derby โดยใช้คำสั่ง CREATE TRIGGER

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของแบบสอบถาม 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

ตัวอย่าง

สมมติว่าเราได้สร้างตารางชื่อ Emp ใน Derby ดังที่แสดงด้านล่าง

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

และแทรก 5 แถวเข้าไป

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

หากเรามีตารางอื่นชื่อ BackUp และความตั้งใจของเราคือการจัดเก็บแถวที่ถูกลบจากตาราง Emp ในนี้

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

แบบสอบถามต่อไปนี้สร้างทริกเกอร์บนตารางแบบสอบถาม DELETE ที่ชื่อ Emp. จะเก็บแถวที่ถูกลบของEmp ไปที่ตารางสำรอง

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

ตอนนี้ลบแถวจากตาราง Emp เป็น -

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

หากคุณตรวจสอบตาราง BackUp คุณสามารถสังเกตแถวที่ถูกลบในตารางนั้นได้

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

2 rows selected

การลบทริกเกอร์

คุณสามารถลบทริกเกอร์ใน Derby โดยใช้คำสั่ง DROP TRIGGER

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของแบบสอบถาม DROP TRIGGER -

ij> Drop trigger tigger_name;

ตัวอย่าง

ตัวอย่างต่อไปนี้ลบทริกเกอร์ my_trigger ที่สร้างไว้ด้านบน -

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

ตัวอย่าง JDBC

ต่อไปนี้โปรแกรม JDBC จะสร้างและลบทริกเกอร์ใน 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(" ");
      }
   }
}

เอาต์พุต

ในการรันโปรแกรมข้างต้นผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้น -

Trigger created
2
Kalyan
40000
Vishakhapatnam
1
Amit
30000
Hyderabad