LOB, atau Large Object, ialah jenis data dalam sistem pengurusan pangkalan data (DBMS) yang digunakan untuk menyimpan sejumlah besar data tidak berstruktur seperti teks, imej dan video. Jenis data LOB berguna untuk menyimpan dan memanipulasi data yang tidak sesuai dengan struktur lajur baris tradisional, seperti dokumen, grafik atau fail audio.
Dalam artikel ini, kami akan meneroka operasi asas dan prinsip kerja jenis data LOB dalam DBMS dan SQL. Kami juga akan memberikan contoh cara menggunakan jenis data LOB dalam SQL untuk menyimpan dan memanipulasi sejumlah besar data tidak berstruktur.
Terdapat beberapa jenis data LOB, termasuk −
BLOB (Objek Besar Binari)− BLOB ialah set data binari, seperti imej, audio atau fail video. Data BLOB disimpan dalam urutan bait dan tidak mempunyai set aksara khusus.
CLOB (Objek Besar Aksara) - CLOB ialah koleksi data aksara, seperti teks Dokumen atau fail HTML. Data CLOB disimpan sebagai jujukan aksara dan mempunyai Set aksara tertentu, seperti UTF-8 atau ASCII
NCLOB (National Character Large Object) − NCLOB serupa dengan CLOB, tetapi digunakan untuk menyimpan data aksara menggunakan set aksara kebangsaan (seperti Cina, Jepun atau Korea).
Jenis data LOB disimpan di kawasan khas pangkalan data, dipanggil kawasan penyimpanan LOB. Ini membolehkan data LOB disimpan dan diakses secara berasingan daripada pangkalan data yang lain, meningkatkan prestasi dan kecekapan apabila memproses sejumlah besar data tidak berstruktur.
Data LOB diakses menggunakan penunjuk, yang merupakan rujukan kepada lokasi data LOB dalam kawasan storan LOB. Penunjuk disimpan dalam pangkalan data bersama-sama dengan data yang lain, tetapi data LOB sebenar disimpan dalam kawasan storan LOB. Ini membolehkan pangkalan data mengakses data LOB dengan cepat dan cekap tanpa perlu menyimpan keseluruhan LOB dalam pangkalan data itu sendiri.
Lajur LOB boleh berada di salah satu daripada tiga keadaan -
NULL − Lajur LOB tidak mengandungi sebarang data.
KOSONG - lajur LOB tidak mengandungi data dan mempunyai panjang sifar.
diisi - Lajur LOB mengandungi data dan mempunyai panjang lebih besar daripada sifar.
Status lajur LOB boleh ditentukan menggunakan predikat IS NULL dan IS EMPTY.
-- Check if a LOB column is NULL SELECT doc_id FROM documents WHERE doc_text IS NULL; -- Check if a LOB column is EMPTY SELECT doc_id FROM documents WHERE doc_text IS EMPTY; -- Check if a LOB column is populated SELECT doc_id FROM documents WHERE doc_text IS NOT NULL AND doc_text IS NOT EMPTY;
Adalah penting untuk ambil perhatian bahawa lajur LOB boleh berada dalam keadaan KOSONG walaupun panjangnya bukan sifar. Ini mungkin berlaku jika lajur LOB mengandungi hanya ruang atau aksara kawalan. Untuk menyemak ini, anda boleh menggunakan fungsi LENGTH untuk menentukan panjang sebenar data LOB.
-- Check if a LOB column is EMPTY but has a non-zero length SELECT doc_id FROM documents WHERE doc_text IS NOT NULL AND doc_text IS EMPTY AND LENGTH(doc_text) > 0;
Dalam SQL, beberapa operasi asas boleh dilakukan pada data LOB, termasuk -
Masukkan data LOB - Data LOB boleh dimasukkan ke dalam pangkalan data menggunakan pernyataan INSERT. Data LOB boleh ditentukan sebagai rentetan, fail atau pembolehubah program.
-- Insert a BLOB from a file INSERT INTO images (image_id, image) VALUES (1, BFILENAME('IMAGE_DIR', 'image1.jpg')); -- Insert a CLOB from a string literal INSERT INTO documents (doc_id, doc_text) VALUES (1, 'This is the text of the document.'); -- Insert a NCLOB from a program variable DECLARE doc_text CLOB; BEGIN doc_text := 'WELCOME'; INSERT INTO documents (doc_id, doc_text) VALUES (2, doc_text); END;
Kemas kini data LOB - Data LOB boleh dikemas kini menggunakan kenyataan UPDATE. Data LOB boleh ditentukan sebagai literal rentetan, fail atau pembolehubah program.
-- Update a BLOB with a file UPDATE images SET image = BFILENAME('IMAGE_DIR', 'image2.jpg') WHERE image_id = 1; -- Update a CLOB with a string literal UPDATE documents SET doc_text = 'This is the updated text of the document.' WHERE doc_id = 1; -- Update a NCLOB with a program variable DECLARE doc_text CLOB; BEGIN doc_text := 'WELCOME'; UPDATE documents SET doc_text = doc_text WHERE doc_id = 2; END;
Pilih data LOB - Data LOB boleh diambil dari pangkalan data menggunakan pernyataan "PILIH". Data LOB boleh dikembalikan sebagai rentetan atau ditulis ke fail.
-- Select a BLOB and write it to a file SELECT image INTO BFILENAME('IMAGE_DIR', 'image3.jpg') FROM images WHERE image_id = 1; -- Select a CLOB and return it as a string SELECT doc_text FROM documents WHERE doc_id = 1; -- Select a NCLOB and return it as a string SELECT doc_text FROM documents WHERE doc_id = 2;
Padam data LOB − Anda boleh menggunakan kenyataan DELETE untuk memadam data LOB daripada pangkalan data.
-- Delete LOB data DELETE FROM images WHERE image_id = 1; DELETE FROM documents WHERE doc_id = 1; DELETE FROM documents WHERE doc_id = 2;
Sebagai tambahan kepada operasi asas yang diterangkan di atas, beberapa operasi lanjutan boleh dilakukan pada data LOB dalam SQL.
LIKE boleh digunakan untuk mencari corak tertentu dalam data LOB. Pakej DBMS_LOB juga menyediakan beberapa fungsi untuk mencari dan memanipulasi data LOB.
-- Search a CLOB for a specific pattern SELECT doc_id FROM documents WHERE doc_text LIKE '%specific pattern%'; -- Use the INSTR function to search a CLOB SELECT doc_id FROM documents WHERE INSTR(doc_text, 'specific pattern') > 0; -- Use the SUBSTR function to extract a portion of a CLOB SELECT SUBSTR(doc_text, 1, 50) FROM documents WHERE doc_id = 1;
= boleh digunakan untuk membandingkan data LOB untuk kesamarataan. Pakej DBMS_LOB juga menyediakan fungsi COMPARE untuk membandingkan data LOB.
-- Compare LOB data for equality SELECT doc_id FROM documents WHERE doc_text = 'This is the text of the document.'; -- Use the COMPARE function to compare LOB data SELECT doc_id FROM documents WHERE COMPARE(doc_text, 'This is the text of the document.') = 0;
Pakej perisian DBMS_LOB menyediakan fungsi TRUNCATE untuk memotong data LOB kepada panjang yang ditentukan.
-- Truncate a CLOB to 50 characters UPDATE documents SET doc_text = TRUNCATE(doc_text, 50) WHERE doc_id = 1;
Pakej DBMS_LOB menyediakan fungsi COPY untuk menyalin data LOB dari satu LOB ke LOB yang lain.
-- Copy CLOB data from one row to another DECLARE source_doc CLOB; target_doc CLOB; BEGIN SELECT doc_text INTO source_doc FROM documents WHERE doc_id = 1; SELECT doc_text INTO target_doc FROM documents WHERE doc_id = 2; COPY(source_doc, target_doc); UPDATE documents SET doc_text = target_doc WHERE doc_id = 2; END;
Pakej DBMS_LOB menyediakan fungsi CONCATENATE untuk menyambungkan dua LOB bersama-sama.
-- Concatenate two CLOBs together DECLARE doc1 CLOB; doc2 CLOB; doc3 CLOB; BEGIN SELECT doc_text INTO doc1 FROM documents WHERE doc_id = 1; SELECT doc_text INTO doc2 FROM documents WHERE doc_id = 2; doc3 := CONCATENATE(doc1, doc2); INSERT INTO documents (doc_id, doc_text) VALUES (3, doc3); END;
Dalam artikel ini, kami meneroka operasi asas dan prinsip kerja jenis data LOB dalam DBMS dan SQL. Jenis data LOB sesuai untuk menyimpan dan memanipulasi sejumlah besar data tidak berstruktur, seperti teks, imej dan video. Kami juga menyediakan contoh cara menggunakan jenis data LOB dalam SQL untuk menyimpan, mengemas kini, memilih dan memadam sejumlah besar data tidak berstruktur, serta melaksanakan operasi lanjutan seperti mencari, membandingkan, memotong, menyalin dan menyertai data LOB.
Atas ialah kandungan terperinci Operasi asas dan kerja LOB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!