LOB oder Large Object ist ein Datentyp in einem Datenbankverwaltungssystem (DBMS), der zum Speichern großer Mengen unstrukturierter Daten wie Text, Bilder und Videos verwendet wird. Der LOB-Datentyp eignet sich zum Speichern und Bearbeiten von Daten, die nicht in eine herkömmliche Zeilen-Spalten-Struktur passen, z. B. Dokumente, Grafiken oder Audiodateien.
In diesem Artikel werden wir die grundlegenden Operationen und Arbeitsprinzipien von LOB-Datentypen in DBMS und SQL untersuchen. Wir werden auch Beispiele dafür bereitstellen, wie LOB-Datentypen in SQL verwendet werden, um große Mengen unstrukturierter Daten zu speichern und zu bearbeiten.
Es gibt verschiedene Arten von LOB-Daten, darunter −
BLOB (Binary Large Object)− Ein BLOB ist ein Satz binärer Daten, beispielsweise eine Bild-, Audio- oder Videodatei. BLOB-Daten werden in einer Bytefolge gespeichert und haben keinen bestimmten Zeichensatz.
CLOB (Character Large Object) – CLOB ist eine Sammlung von Zeichendaten, z. B. Text Dokument oder HTML-Datei. CLOB-Daten werden als Zeichenfolge gespeichert und haben Ein bestimmter Zeichensatz, z. B. UTF-8 oder ASCII
NCLOB (National Character Large Object) − NCLOB ähnelt CLOB, wird jedoch zum Speichern von Zeichendaten unter Verwendung nationaler Zeichensätze (z. B. Chinesisch, Japanisch oder Koreanisch) verwendet.
LOB-Datentypen werden in einem speziellen Bereich der Datenbank gespeichert, dem sogenannten LOB-Speicherbereich. Dadurch können LOB-Daten getrennt vom Rest der Datenbank gespeichert und abgerufen werden, was die Leistung und Effizienz bei der Verarbeitung großer Mengen unstrukturierter Daten verbessert.
Der Zugriff auf LOB-Daten erfolgt mithilfe von Zeigern, bei denen es sich um Verweise auf den Speicherort der LOB-Daten im LOB-Speicherbereich handelt. Die Zeiger werden zusammen mit den restlichen Daten in der Datenbank gespeichert, die eigentlichen LOB-Daten werden jedoch im LOB-Speicherbereich gespeichert. Dadurch kann die Datenbank schnell und effizient auf LOB-Daten zugreifen, ohne dass das gesamte LOB in der Datenbank selbst gespeichert werden muss.LOB-Spaltenstatus
NULL − LOB-Spalte enthält keine Daten.
EMPTY – LOB-Spalte enthält keine Daten und hat die Länge Null.
gefüllt – LOB-Spalte enthält Daten und hat eine Länge größer als Null.
-- 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;Es ist wichtig zu beachten, dass eine LOB-Spalte den Status „EMPTY“ haben kann, auch wenn ihre Länge ungleich Null ist. Dies kann auftreten, wenn die LOB-Spalte nur Leerzeichen oder Steuerzeichen enthält. Um dies zu überprüfen, können Sie mit der LENGTH-Funktion die tatsächliche Länge der LOB-Daten ermitteln.
-- 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;Grundlegende Operationen von LOB-Daten
LOB-Daten einfügen – LOB-Daten können mit der INSERT-Anweisung in die Datenbank eingefügt werden. LOB-Daten können als Zeichenfolgen, Dateien oder Programmvariablen angegeben werden.
-- 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;
LOB-Daten aktualisieren – LOB-Daten können mit der UPDATE-Anweisung aktualisiert werden. LOB-Daten können als Zeichenfolgenliterale, Dateien oder Programmvariablen angegeben werden.
-- 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;
LOB-Daten auswählen – LOB-Daten können mit der „SELECT“-Anweisung aus der Datenbank abgerufen werden. LOB-Daten können als String zurückgegeben oder in eine Datei geschrieben werden.
-- 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;
LOB-Daten löschen − Mit der DELETE-Anweisung können Sie LOB-Daten aus der Datenbank löschen.
-- Delete LOB data DELETE FROM images WHERE image_id = 1; DELETE FROM documents WHERE doc_id = 1; DELETE FROM documents WHERE doc_id = 2;Erweiterte Vorgänge für LOB-Daten
LOB-Daten durchsuchen
-- 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;Vergleichen Sie LOB-Daten
-- 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;LOB-Daten abschneiden
-- Truncate a CLOB to 50 characters UPDATE documents SET doc_text = TRUNCATE(doc_text, 50) WHERE doc_id = 1;LOB-Daten kopieren
-- 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;LOB-Daten verbinden
-- 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;Fazit
Das obige ist der detaillierte Inhalt vonGrundlegende Operationen und Funktionsweise von LOB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!