Rumah >pangkalan data >tutorial mysql >Operasi asas dan kerja LOB

Operasi asas dan kerja LOB

WBOY
WBOYke hadapan
2023-09-02 19:25:11951semak imbas

Operasi asas dan kerja LOB

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.

jenis data LOB

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

Cara jenis data LOB berfungsi

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.

Status lajur LOB

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;

Operasi asas data LOB

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;

Operasi lanjutan pada data LOB

Sebagai tambahan kepada operasi asas yang diterangkan di atas, beberapa operasi lanjutan boleh dilakukan pada data LOB dalam SQL.

Cari data LOB

Pengendali

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;

Bandingkan data LOB

Operator

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

Potong data LOB

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;

Salin data LOB

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;

Sambungkan data LOB

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;

Kesimpulan

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam