Oracle XML DB adalah seperangkat teknologi Oracle Database yang menyediakan kemampuan XML untuk administrator dan pengembang database. Ini memberikan dukungan XML asli dan fitur lainnya termasuk CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;1 asli dan CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;2 Show
CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;1 mewakili dokumen XML dalam database yang dapat diakses dari SQL. Ini mendukung standar seperti Skema XML, XPath, XQuery, XSLT, dan DOM CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;2 mendukung semua bentuk data XML dari yang sangat terstruktur hingga yang sepenuhnya tidak terstruktur Data XML dapat berbasis skema atau non-skema. XML berbasis skema mematuhi Definisi Skema XSD dan harus divalidasi. Data XML berbasis non-skema tidak memerlukan validasi Menurut dokumentasi Oracle, aspek yang harus Anda pertimbangkan saat menggunakan XML adalah
Fitur yang paling umum adalah
Model Penyimpanan — XML BinerJuga disebut persistensi pasca-parse, ini adalah model penyimpanan default untuk Oracle XML DB. Ini adalah format biner post-parse yang dirancang khusus untuk data XML. XML Biner adalah skema XML-sadar dan penyimpanannya sangat fleksibel Anda dapat menggunakannya untuk dokumen berbasis skema XML atau untuk dokumen yang tidak didasarkan pada skema XML. Anda dapat menggunakannya dengan skema XML yang memungkinkan variabilitas data tinggi atau yang berkembang pesat atau tidak terduga Model penyimpanan ini juga menyediakan pembaruan parsial yang efisien dan evaluasi kueri streaming Opsi penyimpanan lainnya adalah penyimpanan objek-relasional dan lebih efisien saat menggunakan XML sebagai data terstruktur dengan jumlah minimum perubahan dan kueri yang berbeda. Untuk informasi selengkapnya, lihat Panduan Pengembang Oracle XML DB Pengindeksan — indeks pencarian XML, XMLIndex dengan komponen terstrukturIndeks Pencarian XML menyediakan pencarian teks lengkap melalui data XML. Oracle merekomendasikan menyimpan data XMLType sebagai Binary XML dan menggunakan XQuery Full Text (XQFT) Jika Anda tidak menggunakan penyimpanan biner dan data Anda terstruktur XML, Anda dapat menggunakan indeks teks Oracle, menggunakan fungsi string biasa seperti berisi, atau menggunakan XPath CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;6 Jika Anda ingin menggunakan predikat seperti CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;7 dalam klausa CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;8 Anda, Anda harus membuat indeks pencarian XML ContohContoh berikut membuat objek direktori SQL, yang merupakan nama logika dalam database untuk direktori fisik di komputer host. Direktori ini berisi file XML. Contoh menyisipkan konten XML dari file ________0______9 ke dalam tabel pesanan Buat tabel XMLType CREATE TABLE orders OF XMLType; CREATE DIRECTORY xmldir AS path_to_folder_containing_XML_file; INSERT INTO orders VALUES (XMLType(BFILENAME('XMLDIR', 'purOrder.xml'),NLS_CHARSET_ID('AL32UTF8')));_ Buat tabel dengan kolom CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;_1 CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE); Buat tampilan CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;_1 CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p; Masukkan data ke dalam kolom CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;1 INSERT INTO xwarehouses VALUES(100, ' Po_1 John 1033, Main Street Sunnyvale CA ') Buat indeks pencarian XML dan kueri dengan XQuery
BEGIN CTX_DDL.create_section_group('secgroup', 'PATH_SECTION_GROUP'); CTX_DDL.set_sec_grp_attr('secgroup', 'XML_ENABLE', 'T'); CTX_DDL.create_preference('pref', 'BASIC_STORAGE'); CTX_DDL.set_attribute('pref','D_TABLE_CLAUSE', 'TABLESPACE ts_name LOB(DOC) STORE AS SECUREFILE(TABLESPACE ts_name COMPRESS MEDIUM CACHE)'); CTX_DDL.set_attribute('pref','I_TABLE_CLAUSE','TABLESPACE ts_name LOB(TOKEN_INFO) STORE AS SECUREFILE(TABLESPACE ts_name NOCOMPRESS CACHE)'); END; / CREATE INDEX po_ctx_idx ON po_binxml(OBJECT_VALUE) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS('storage pref section group secgroup'); Kueri menggunakan indeks sebelumnya di XQuery. XQuery adalah standar W3C untuk menghasilkan, membuat kueri, dan memperbarui XML, bahasa kueri alami untuk XML Cari di INSERT INTO xwarehouses VALUES(100, ' Po_1 John 1033, Main Street Sunnyvale CA ')_3 untuk nilai yang mengandung Besar dan Jalan lalu kembalikan tag Judulnya (hanya di pilih) SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]' CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;2 dengan komponen terstruktur digunakan untuk kueri yang memproyeksikan pulau terstruktur tetap dari konten XML, bahkan jika data di sekitarnya relatif tidak terstruktur. Komponen CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;2 terstruktur mengatur pulau-pulau tersebut dalam format relasional Pastikan Anda menentukan bagian data XML yang Anda telusuri dalam kueri. Ini berlaku untuk data berbasis skema XML dan non-skema Buat CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;_2 dengan komponen terstruktur
CREATE INDEX po_xmlindex_ix ON po_binxml (OBJECT_VALUE) INDEXTYPE IS XDB.XMLIndex PARAMETERS ('PATH TABLE path_tab'); BEGIN DBMS_XMLINDEX.registerParameter( 'myparam', 'ADD_GROUP GROUP po_item XMLTable po_idx_tab ''/PurchaseOrder'' COLUMNS reference VARCHAR2(30) PATH ''Reference'', requestor VARCHAR2(30) PATH ''Requestor'', username VARCHAR2(30) PATH ''User'', lineitem XMLType PATH ''LineItems/LineItem'' VIRTUAL XMLTable po_index_lineitem ''/LineItem'' PASSING lineitem COLUMNS itemno BINARY_DOUBLE PATH ''@ItemNumber'', description VARCHAR2(256) PATH ''Description'', partno VARCHAR2(14) PATH ''Part/@Id'', quantity BINARY_DOUBLE PATH ''Part/@Quantity'', unitprice BINARY_DOUBLE PATH ''Part/@UnitPrice'''); END; / ALTER INDEX po_xmlindex_ix PARAMETERS('PARAM myparam'); Untuk informasi lebih lanjut, lihat di dokumentasi Oracle Fungsi SQL/XMLOracle Database menyediakan dua grup utama SQL/XML
Fungsi Penerbitan SQL/XMLFungsi penerbitan SQL/XML adalah hasil SQL yang dihasilkan dari data XML. Mereka juga disebut fungsi generasi SQL/XML XMLQuery digunakan dalam klausa BEGIN CTX_DDL.create_section_group('secgroup', 'PATH_SECTION_GROUP'); CTX_DDL.set_sec_grp_attr('secgroup', 'XML_ENABLE', 'T'); CTX_DDL.create_preference('pref', 'BASIC_STORAGE'); CTX_DDL.set_attribute('pref','D_TABLE_CLAUSE', 'TABLESPACE ts_name LOB(DOC) STORE AS SECUREFILE(TABLESPACE ts_name COMPRESS MEDIUM CACHE)'); CTX_DDL.set_attribute('pref','I_TABLE_CLAUSE','TABLESPACE ts_name LOB(TOKEN_INFO) STORE AS SECUREFILE(TABLESPACE ts_name NOCOMPRESS CACHE)'); END; / CREATE INDEX po_ctx_idx ON po_binxml(OBJECT_VALUE) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS('storage pref section group secgroup');_4 untuk mengembalikan hasilnya sebagai data XMLType. Lihat contoh sebelumnya untuk membuat indeks pencarian XML XMLTable digunakan dalam klausa BEGIN CTX_DDL.create_section_group('secgroup', 'PATH_SECTION_GROUP'); CTX_DDL.set_sec_grp_attr('secgroup', 'XML_ENABLE', 'T'); CTX_DDL.create_preference('pref', 'BASIC_STORAGE'); CTX_DDL.set_attribute('pref','D_TABLE_CLAUSE', 'TABLESPACE ts_name LOB(DOC) STORE AS SECUREFILE(TABLESPACE ts_name COMPRESS MEDIUM CACHE)'); CTX_DDL.set_attribute('pref','I_TABLE_CLAUSE','TABLESPACE ts_name LOB(TOKEN_INFO) STORE AS SECUREFILE(TABLESPACE ts_name NOCOMPRESS CACHE)'); END; / CREATE INDEX po_ctx_idx ON po_binxml(OBJECT_VALUE) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS('storage pref section group secgroup');_5 untuk mendapatkan hasil menggunakan XQuery, dan menyisipkan hasilnya ke dalam tabel virtual. Fungsi ini dapat memasukkan data ke dalam tabel database yang ada SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li; CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;7 digunakan dalam klausa CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;8 untuk memeriksa apakah ekspresi XQuery mengembalikan urutan kueri yang tidak kosong. Jika ya, ia mengembalikan BEGIN CTX_DDL.create_section_group('secgroup', 'PATH_SECTION_GROUP'); CTX_DDL.set_sec_grp_attr('secgroup', 'XML_ENABLE', 'T'); CTX_DDL.create_preference('pref', 'BASIC_STORAGE'); CTX_DDL.set_attribute('pref','D_TABLE_CLAUSE', 'TABLESPACE ts_name LOB(DOC) STORE AS SECUREFILE(TABLESPACE ts_name COMPRESS MEDIUM CACHE)'); CTX_DDL.set_attribute('pref','I_TABLE_CLAUSE','TABLESPACE ts_name LOB(TOKEN_INFO) STORE AS SECUREFILE(TABLESPACE ts_name NOCOMPRESS CACHE)'); END; / CREATE INDEX po_ctx_idx ON po_binxml(OBJECT_VALUE) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS('storage pref section group secgroup');8. Jika tidak, ia mengembalikan BEGIN CTX_DDL.create_section_group('secgroup', 'PATH_SECTION_GROUP'); CTX_DDL.set_sec_grp_attr('secgroup', 'XML_ENABLE', 'T'); CTX_DDL.create_preference('pref', 'BASIC_STORAGE'); CTX_DDL.set_attribute('pref','D_TABLE_CLAUSE', 'TABLESPACE ts_name LOB(DOC) STORE AS SECUREFILE(TABLESPACE ts_name COMPRESS MEDIUM CACHE)'); CTX_DDL.set_attribute('pref','I_TABLE_CLAUSE','TABLESPACE ts_name LOB(TOKEN_INFO) STORE AS SECUREFILE(TABLESPACE ts_name NOCOMPRESS CACHE)'); END; / CREATE INDEX po_ctx_idx ON po_binxml(OBJECT_VALUE) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS('storage pref section group secgroup');_9. Dalam contoh berikut, kueri mencari tabel SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'0 untuk SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'1 yang mana tag SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'2 diatur ke SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'3 SELECT OBJECT_VALUE FROM purchaseorder WHERE XMLExists('/PurchaseOrder[SpecialInstructions="Expedite"]' PASSING OBJECT_VALUE); SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'4 digunakan dalam BEGIN CTX_DDL.create_section_group('secgroup', 'PATH_SECTION_GROUP'); CTX_DDL.set_sec_grp_attr('secgroup', 'XML_ENABLE', 'T'); CTX_DDL.create_preference('pref', 'BASIC_STORAGE'); CTX_DDL.set_attribute('pref','D_TABLE_CLAUSE', 'TABLESPACE ts_name LOB(DOC) STORE AS SECUREFILE(TABLESPACE ts_name COMPRESS MEDIUM CACHE)'); CTX_DDL.set_attribute('pref','I_TABLE_CLAUSE','TABLESPACE ts_name LOB(TOKEN_INFO) STORE AS SECUREFILE(TABLESPACE ts_name NOCOMPRESS CACHE)'); END; / CREATE INDEX po_ctx_idx ON po_binxml(OBJECT_VALUE) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS('storage pref section group secgroup');4 klausa untuk mengonversi nilai skalar yang dikembalikan dari XQuery ke SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'6, SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'7, SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'8, SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'9, CREATE INDEX po_xmlindex_ix ON po_binxml (OBJECT_VALUE) INDEXTYPE IS XDB.XMLIndex PARAMETERS ('PATH TABLE path_tab'); BEGIN DBMS_XMLINDEX.registerParameter( 'myparam', 'ADD_GROUP GROUP po_item XMLTable po_idx_tab ''/PurchaseOrder'' COLUMNS reference VARCHAR2(30) PATH ''Reference'', requestor VARCHAR2(30) PATH ''Requestor'', username VARCHAR2(30) PATH ''User'', lineitem XMLType PATH ''LineItems/LineItem'' VIRTUAL XMLTable po_index_lineitem ''/LineItem'' PASSING lineitem COLUMNS itemno BINARY_DOUBLE PATH ''@ItemNumber'', description VARCHAR2(256) PATH ''Description'', partno VARCHAR2(14) PATH ''Part/@Id'', quantity BINARY_DOUBLE PATH ''Part/@Quantity'', unitprice BINARY_DOUBLE PATH ''Part/@UnitPrice'''); END; / ALTER INDEX po_xmlindex_ix PARAMETERS('PARAM myparam');0, CREATE INDEX po_xmlindex_ix ON po_binxml (OBJECT_VALUE) INDEXTYPE IS XDB.XMLIndex PARAMETERS ('PATH TABLE path_tab'); BEGIN DBMS_XMLINDEX.registerParameter( 'myparam', 'ADD_GROUP GROUP po_item XMLTable po_idx_tab ''/PurchaseOrder'' COLUMNS reference VARCHAR2(30) PATH ''Reference'', requestor VARCHAR2(30) PATH ''Requestor'', username VARCHAR2(30) PATH ''User'', lineitem XMLType PATH ''LineItems/LineItem'' VIRTUAL XMLTable po_index_lineitem ''/LineItem'' PASSING lineitem COLUMNS itemno BINARY_DOUBLE PATH ''@ItemNumber'', description VARCHAR2(256) PATH ''Description'', partno VARCHAR2(14) PATH ''Part/@Id'', quantity BINARY_DOUBLE PATH ''Part/@Quantity'', unitprice BINARY_DOUBLE PATH ''Part/@UnitPrice'''); END; / ALTER INDEX po_xmlindex_ix PARAMETERS('PARAM myparam');1, atau ____1____0_____. Misalnya, setelah menemukan objek yang SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'2 diatur ke SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'3, SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'4 mengembalikan Referensi di setiap item sebagai CREATE INDEX po_xmlindex_ix ON po_binxml (OBJECT_VALUE) INDEXTYPE IS XDB.XMLIndex PARAMETERS ('PATH TABLE path_tab'); BEGIN DBMS_XMLINDEX.registerParameter( 'myparam', 'ADD_GROUP GROUP po_item XMLTable po_idx_tab ''/PurchaseOrder'' COLUMNS reference VARCHAR2(30) PATH ''Reference'', requestor VARCHAR2(30) PATH ''Requestor'', username VARCHAR2(30) PATH ''User'', lineitem XMLType PATH ''LineItems/LineItem'' VIRTUAL XMLTable po_index_lineitem ''/LineItem'' PASSING lineitem COLUMNS itemno BINARY_DOUBLE PATH ''@ItemNumber'', description VARCHAR2(256) PATH ''Description'', partno VARCHAR2(14) PATH ''Part/@Id'', quantity BINARY_DOUBLE PATH ''Part/@Quantity'', unitprice BINARY_DOUBLE PATH ''Part/@UnitPrice'''); END; / ALTER INDEX po_xmlindex_ix PARAMETERS('PARAM myparam');6 SELECT XMLCast(XMLQuery('/PurchaseOrder/Reference' PASSING OBJECT_VALUE RETURNING CONTENT) AS VARCHAR2(100)) "REFERENCE" FROM purchaseorder WHERE XMLExists('/PurchaseOrder[SpecialInstructions="Expedite"]' PASSING OBJECT_VALUE); Untuk informasi lebih lanjut, lihat di dokumentasi Oracle Permintaan SQL/XML dan Fungsi PembaruanFungsi kueri dan pembaruan SQL/XML digunakan untuk kueri dan memperbarui konten XML sebagai bagian dari operasi SQL reguler Untuk CREATE INDEX po_xmlindex_ix ON po_binxml (OBJECT_VALUE) INDEXTYPE IS XDB.XMLIndex PARAMETERS ('PATH TABLE path_tab'); BEGIN DBMS_XMLINDEX.registerParameter( 'myparam', 'ADD_GROUP GROUP po_item XMLTable po_idx_tab ''/PurchaseOrder'' COLUMNS reference VARCHAR2(30) PATH ''Reference'', requestor VARCHAR2(30) PATH ''Requestor'', username VARCHAR2(30) PATH ''User'', lineitem XMLType PATH ''LineItems/LineItem'' VIRTUAL XMLTable po_index_lineitem ''/LineItem'' PASSING lineitem COLUMNS itemno BINARY_DOUBLE PATH ''@ItemNumber'', description VARCHAR2(256) PATH ''Description'', partno VARCHAR2(14) PATH ''Part/@Id'', quantity BINARY_DOUBLE PATH ''Part/@Quantity'', unitprice BINARY_DOUBLE PATH ''Part/@UnitPrice'''); END; / ALTER INDEX po_xmlindex_ix PARAMETERS('PARAM myparam');_7, lihat contoh sebelumnya Dalam contoh berikut, setelah menemukan item yang relevan dengan CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;7 di klausa set, perintah menetapkan INSERT INTO xwarehouses VALUES(100, ' Po_1 John 1033, Main Street Sunnyvale CA ')9 ke file SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;0 baru yang terletak di direktori SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;1 CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_0 Untuk informasi lebih lanjut, lihat di dokumentasi Oracle SQL dan PL/SQLKonversi SQL dan PL/SQL tercakup dalam topik SQL dan PL/SQL Penggunaan MySQLDukungan Aurora MySQL untuk data tidak terstruktur adalah kebalikan dari Oracle. Ada dukungan minimal untuk XML, tetapi tipe data JSON asli dan lebih dari 25 fungsi JSON khusus Dukungan XMLAurora MySQL mendukung dua fungsi XML. SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;2 dan SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;3 SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;_2 menerima dokumen XML, atau fragmen, dan ekspresi XPATH. Fungsi mengembalikan data karakter anak atau elemen yang cocok dengan ekspresi SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;5. Jika ada lebih dari satu kecocokan, fungsi mengembalikan konten node anak sebagai string karakter yang dibatasi spasi. SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;2 hanya mengembalikan SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;7 dan tidak mengembalikan tag dan sub-tag yang terdapat dalam tag yang cocok atau kontennya Perhatikan contoh berikut CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_1 Untuk contoh sebelumnya, hasilnya terlihat seperti yang ditunjukkan berikut ini CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_2 Anda dapat menggunakan SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;_3 untuk mengganti fragmen XML dengan fragmen lain menggunakan SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;5 ekspresi yang mirip dengan SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;2. Jika kecocokan ditemukan, itu mengembalikan XML baru yang diperbarui. Jika tidak ada kecocokan, atau beberapa kecocokan, XML asli dikembalikan Perhatikan contoh berikut CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_3 Untuk contoh sebelumnya, hasilnya terlihat seperti yang ditunjukkan berikut ini CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_4 Aurora MySQL tidak mendukung sintaks MySQL SELECT OBJECT_VALUE FROM purchaseorder WHERE XMLExists('/PurchaseOrder[SpecialInstructions="Expedite"]' PASSING OBJECT_VALUE);1. Untuk informasi lebih lanjut, lihat Memuat data ke dalam klaster DB Amazon Aurora MySQL dari file teks dalam bucket Amazon S3 di Panduan Pengguna untuk Aurora RingkasanDeskripsiOracleAurora MySQL fungsi XML CREATE INDEX po_xmlindex_ix ON po_binxml (OBJECT_VALUE) INDEXTYPE IS XDB.XMLIndex PARAMETERS ('PATH TABLE path_tab'); BEGIN DBMS_XMLINDEX.registerParameter( 'myparam', 'ADD_GROUP GROUP po_item XMLTable po_idx_tab ''/PurchaseOrder'' COLUMNS reference VARCHAR2(30) PATH ''Reference'', requestor VARCHAR2(30) PATH ''Requestor'', username VARCHAR2(30) PATH ''User'', lineitem XMLType PATH ''LineItems/LineItem'' VIRTUAL XMLTable po_index_lineitem ''/LineItem'' PASSING lineitem COLUMNS itemno BINARY_DOUBLE PATH ''@ItemNumber'', description VARCHAR2(256) PATH ''Description'', partno VARCHAR2(14) PATH ''Part/@Id'', quantity BINARY_DOUBLE PATH ''Part/@Quantity'', unitprice BINARY_DOUBLE PATH ''Part/@UnitPrice'''); END; / ALTER INDEX po_xmlindex_ix PARAMETERS('PARAM myparam');7, SELECT OBJECT_VALUE FROM purchaseorder WHERE XMLExists('/PurchaseOrder[SpecialInstructions="Expedite"]' PASSING OBJECT_VALUE);3, SELECT OBJECT_VALUE FROM purchaseorder WHERE XMLExists('/PurchaseOrder[SpecialInstructions="Expedite"]' PASSING OBJECT_VALUE);4, CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p;7, dan SELECT XMLQuery('for $i in /PurchaseOrder/LineItems/LineItem/Description where $i[.contains text "Big" ftand "Street"] return {$i}' PASSING OBJECT_VALUE RETURNING CONTENT) FROM po_binxml WHERE XMLExists('/PurchaseOrder/LineItems/LineItem/Description [. contains text "Big" ftand "Street"]'4 SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;2 dan SELECT po.reference, li.* FROM po_binaryxml p, XMLTable('/PurchaseOrder' PASSING p.OBJECT_VALUE COLUMNS reference VARCHAR2(30) PATH 'Reference', lineitem XMLType PATH 'LineItems/LineItem') po, XMLTable('/LineItem' PASSING po.lineitem COLUMNS itemno NUMBER(38) PATH '@ItemNumber', description VARCHAR2(256) PATH 'Description', partno VARCHAR2(14) PATH 'Part/@Id', quantity NUMBER(12, 2) PATH 'Part/@Quantity', unitprice NUMBER(8, 4) PATH 'Part/@UnitPrice') li;3 Buat tabel dengan XML SELECT OBJECT_VALUE FROM purchaseorder WHERE XMLExists('/PurchaseOrder[SpecialInstructions="Expedite"]' PASSING OBJECT_VALUE);_9 atau SELECT XMLCast(XMLQuery('/PurchaseOrder/Reference' PASSING OBJECT_VALUE RETURNING CONTENT) AS VARCHAR2(100)) "REFERENCE" FROM purchaseorder WHERE XMLExists('/PurchaseOrder[SpecialInstructions="Expedite"]' PASSING OBJECT_VALUE);0 Tidak didukung Masukkan data ke dalam kolom xml CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_5 Data XML dapat dimuat ke dalam tabel reguler dari S3. Untuk informasi lebih lanjut, lihat Memuat data ke dalam klaster DB Amazon Aurora MySQL dari file teks dalam bucket Amazon S3 di Panduan Pengguna untuk Aurora Buat Indeks CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_6 Membutuhkan penambahan kolom yang dihitung dan bertahan yang selalu dihasilkan dengan ekspresi JSON dan mengindeksnya secara eksplisit. Pengoptimal hanya dapat menggunakan ekspresi JSON Buat indeks teks lengkap Setelah preferensi dan bagian dibuat di Oracle Text CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_7 T/A Kueri menggunakan XQuery CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_8 T/A Kueri menggunakan XPath CREATE TABLE xwarehouses (warehouse_id NUMBER, warehouse_spec XMLTYPE);_9 Karena tidak ada tipe data XML, doc menggunakan SELECT XMLCast(XMLQuery('/PurchaseOrder/Reference' PASSING OBJECT_VALUE RETURNING CONTENT) AS VARCHAR2(100)) "REFERENCE" FROM purchaseorder WHERE XMLExists('/PurchaseOrder[SpecialInstructions="Expedite"]' PASSING OBJECT_VALUE);1 untuk menyimpan konten XML [sumber] ---- pilih ExtractValue (doc,'//student//firstname') firstname from test; Apakah XML didukung di MySQL?Dukungan XML
. ExtractValue dan UpdateXML Aurora MySQL supports two XML functions: ExtractValue and UpdateXML . ExtractValue menerima dokumen XML, atau fragmen, dan ekspresi XPATH. Fungsi mengembalikan data karakter anak atau elemen yang cocok dengan ekspresi XPATH.
Bisakah Anda mengimpor XML ke MySQL?Untuk mengimpor data dari file XML ke dalam tabel MySQL, pilih tabel di Object Browser dan pilih Table -> Import -> Import XML Data Using Load Local. atau (Ctrl+Shift+X) . Tabel. Daftar semua tabel database aktif saat ini ditampilkan. Pilih Tabel dari kotak daftar.
Bisakah kita menyimpan XML dalam SQL?Dalam SQL Server, Anda biasanya menyimpan data XML dalam kolom yang dikonfigurasi dengan tipe data xml . Tipe data mendukung beberapa metode yang memungkinkan Anda membuat kueri dan memodifikasi elemen individual, atribut, dan nilainya secara langsung di dalam instance XML, daripada harus bekerja dengan instance tersebut secara keseluruhan.
Bisakah Anda menyimpan XML dalam database?Jumlah ruang yang ditempati dokumen XML dalam database DB2 ditentukan oleh ukuran awal dokumen dalam bentuk mentah dan sejumlah faktor lainnya. Meskipun Anda dapat menyimpan data string berseri XML dalam kolom bertipe biner atau karakter apa pun, kolom non-XML hanya boleh digunakan untuk pengarsipan data XML . |