Cassandra - ลบข้อมูล
การลบ Dataf จากตาราง
คุณสามารถลบข้อมูลจากตารางโดยใช้คำสั่ง DELETE. ไวยากรณ์มีดังนี้ -
DELETE FROM <identifier> WHERE <condition>;
ตัวอย่าง
สมมติว่ามีตารางใน Cassandra เรียกว่า emp มีข้อมูลต่อไปนี้ -
emp_id | emp_name | emp_city | emp_phone | emp_sal |
---|---|---|---|---|
1 | แกะ | ไฮเดอราบาด | 9848022338 | 50000 |
2 | โรบิน | ไฮเดอราบาด | 9848022339 | 40000 |
3 | ราห์มาน | เจนไน | 9848022330 | 45000 |
คำสั่งต่อไปนี้ลบคอลัมน์ emp_sal ของแถวสุดท้าย -
cqlsh:tutorialspoint> DELETE emp_sal FROM emp WHERE emp_id=3;
การยืนยัน
ใช้คำสั่ง SELECT เพื่อตรวจสอบว่าข้อมูลถูกลบหรือไม่ หากคุณตรวจสอบตาราง emp โดยใช้ SELECT จะให้ผลลัพธ์ดังต่อไปนี้ -
cqlsh:tutorialspoint> select * from emp;
emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+-----------+----------+------------+---------
1 | Hyderabad | ram | 9848022338 | 50000
2 | Delhi | robin | 9848022339 | 50000
3 | Chennai | rahman | 9848022330 | null
(3 rows)
เนื่องจากเราได้ลบเงินเดือนของ Rahman คุณจะสังเกตเห็นค่าว่างแทนเงินเดือน
การลบทั้งแถว
คำสั่งต่อไปนี้จะลบทั้งแถวออกจากตาราง
cqlsh:tutorialspoint> DELETE FROM emp WHERE emp_id=3;
การยืนยัน
ใช้คำสั่ง SELECT เพื่อตรวจสอบว่าข้อมูลถูกลบหรือไม่ หากคุณตรวจสอบตาราง emp โดยใช้ SELECT จะให้ผลลัพธ์ดังต่อไปนี้ -
cqlsh:tutorialspoint> select * from emp;
emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+-----------+----------+------------+---------
1 | Hyderabad | ram | 9848022338 | 50000
2 | Delhi | robin | 9848022339 | 50000
(2 rows)
เนื่องจากเราได้ลบแถวสุดท้ายแล้วจึงเหลือเพียงสองแถวในตาราง
การลบข้อมูลโดยใช้ Java API
คุณสามารถลบข้อมูลในตารางโดยใช้เมธอด execute () ของคลาส Session ทำตามขั้นตอนด้านล่างเพื่อลบข้อมูลจากตารางโดยใช้ java API
ขั้นที่ 1: สร้างวัตถุคลัสเตอร์
สร้างอินสแตนซ์ของ Cluster.builder ชั้นเรียนของ com.datastax.driver.core แพ็คเกจตามที่แสดงด้านล่าง
//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();
เพิ่มจุดติดต่อ (ที่อยู่ IP ของโหนด) โดยใช้ addContactPoint() วิธีการของ Cluster.Builderวัตถุ. วิธีนี้ส่งกลับCluster.Builder.
//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
ใช้วัตถุตัวสร้างใหม่สร้างวัตถุคลัสเตอร์ ในการทำเช่นนั้นคุณมีวิธีการที่เรียกว่าbuild() ใน Cluster.Builderชั้นเรียน ใช้รหัสต่อไปนี้เพื่อสร้างวัตถุคลัสเตอร์
//Building a cluster
Cluster cluster = builder.build();
คุณสามารถสร้างวัตถุคลัสเตอร์โดยใช้รหัสบรรทัดเดียวดังที่แสดงด้านล่าง
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
ขั้นตอนที่ 2: สร้างวัตถุเซสชัน
สร้างอินสแตนซ์ของวัตถุเซสชันโดยใช้เมธอด connect () ของคลาสคลัสเตอร์ดังที่แสดงด้านล่าง
Session session = cluster.connect();
วิธีนี้จะสร้างเซสชันใหม่และเริ่มต้น หากคุณมีคีย์สเปซอยู่แล้วคุณสามารถตั้งค่าเป็นคีย์สเปซที่มีอยู่ได้โดยส่งชื่อคีย์สเปซในรูปแบบสตริงไปยังเมธอดนี้ดังที่แสดงด้านล่าง
Session session = cluster.connect(“ Your keyspace name ”);
ที่นี่เรากำลังใช้ KeySpace ที่เรียกว่า tp. ดังนั้นให้สร้างวัตถุเซสชันดังที่แสดงด้านล่าง
Session session = cluster.connect(“tp”);
ขั้นตอนที่ 3: ดำเนินการสืบค้น
คุณสามารถดำเนินการสืบค้น CQL โดยใช้เมธอด execute () ของคลาส Session ส่งแบบสอบถามในรูปแบบสตริงหรือเป็นวัตถุคลาส Statement ไปยังเมธอด execute () สิ่งที่คุณส่งไปยังเมธอดนี้ในรูปแบบสตริงจะถูกดำเนินการบนไฟล์cqlsh.
ในตัวอย่างต่อไปนี้เรากำลังลบข้อมูลจากตารางชื่อ emp. คุณต้องจัดเก็บแบบสอบถามในตัวแปรสตริงและส่งต่อไปยังไฟล์ execute() วิธีการดังแสดงด้านล่าง
String query1 = ”DELETE FROM emp WHERE emp_id=3; ”;
session.execute(query);
ด้านล่างนี้เป็นโปรแกรมที่สมบูรณ์ในการลบข้อมูลจากตารางใน Cassandra โดยใช้ Java API
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
public class Delete_Data {
public static void main(String args[]){
//query
String query = "DELETE FROM emp WHERE emp_id=3;";
//Creating Cluster object
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
//Creating Session object
Session session = cluster.connect("tp");
//Executing the query
session.execute(query);
System.out.println("Data deleted");
}
}
บันทึกโปรแกรมข้างต้นด้วยชื่อคลาสตามด้วย. java เรียกดูตำแหน่งที่บันทึกไว้ คอมไพล์และรันโปรแกรมดังที่แสดงด้านล่าง
$javac Delete_Data.java
$java Delete_Data
ภายใต้สภาวะปกติควรให้ผลลัพธ์ดังต่อไปนี้ -
Data deleted