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