Heim >Datenbank >MySQL-Tutorial >Grundlegende Operationen und Funktionsweise von LOB
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!