BÁO CÁO MÔN XML
210 likes | 399 Vues
BÁO CÁO MÔN XML. Đề Tài : SỬ DỤNG XML TRONG SQL SERVER. Giáo viên HD: KS. Nguyễn Văn Phúc Nhóm thực hiện : Nguyễn Đăng Anh 0812519 Ngô Văn Hậu 0810282 Lê Quang Hoàng 0812570. 3. 3. Tổng quan. Demo. 3. 1. Trình bầy nội dung chính. 2. Nội dung báo cáo.
BÁO CÁO MÔN XML
E N D
Presentation Transcript
BÁO CÁO MÔNXML Đề Tài : SỬ DỤNG XML TRONG SQL SERVER Giáoviên HD: KS. Nguyễn Văn Phúc Nhómthựchiện: NguyễnĐăngAnh 0812519 NgôVănHậu 0810282 LêQuangHoàng 0812570
3 3 Tổngquan Demo 3 1 Trìnhbầynội dung chính 2 Nội dung báocáo
TổngQuanVề Xml TrongSql Server Tạisaolạisửdụngkiểudữliệu Xml trongSql Server.? • Việclưtrữdữliệu xml trongcơsởdữliệuquanhệ. Manglạilợiíchchoviệcquảnlývàxửlýdữliêu. • Dữliệu xml cóthểtươngthíchvớidữliệuquanhệ. Điềunàycónghĩadữliệu xml cóthểđượcđưavàohệthốngnhữngdữliệuphátsinhmàkhôngảnhhưởngđếnứngdụngđangchạy.
NỘI DUNG CHÍNH • Kiểudữliệu Xml trong SQL SERVER • Truyvấnvàchỉnhsửdữliệu Xml trong SQL SERVER • Sửdụngmệnhđề FOR XML trongSql Server • Sửdụnghàm OPENXML() trongSql Server
KiểuDữLiệu XML • Kiểudữliệu XML đượchỗtrợtừSql Server 2000. Giúpchoviệclưutrữdữliệu Xml hay cácphânđoạn Xml trongcơsởdữliệu. • Cóthểsửdụngkiểu Xml gầngiốngnhưnhữngkiểugiữliệuthôngthườngkhác. • Chúngtacóthểdùngnhưlà : • Kiểudữliệubiến DECLARE @SinhVien_Infoxml SET @SinhVien_Info = ‘<SinhVien> • <Ho>Ngo</Ho> • <Ten>Van Hau</Ten> </SinhVien>’
KiểuDữLiệu XML • Dùng để tạo cột như kiểu dữ liệu thông thường khác. CREATE TABLESinhVien ( MSSV varchar(7),ThongTinSVxml ) AFTER TABLE SinhVienADDThongTinSVxml • Lưu ý khi tạo cột : • Khôngthểdùngnhưkhóachính hay khóangoại • Cóthểtạoràngbuộcnhưngkhôngthểdùngcácphươngthứccủakiểudữliệu xml đểtạo. Màphảitựđịnhnghĩamộtchứcnăngbaobọccácphươngthứccủakiểudữliệ xml.
KiểuDữLiệu XML • Tạo view chứadữliệu xml. • Dùngnhưthamsốkhitạoproecdurehoặcfunction • Kiểudữliệu xml cũngcóthểlàkiểutrảvềcủahàm. • Kiểudữliệu xml cungcấpnămphươngthứcđểtacóthểtruyvấnchỉnhsửadữliệunày: Query(), Value(), Exist(), Nodes(), Modify(). Chúngtasẽtìmhiểukỹhơntrongphầntruyvấndữliệu Xml trongSql Server. • Hạnchếkhisửdụngkiểudữliệunày.
TruyVấn & ChỉnhSửaDữLiệu Xml • Đểtruyvấnvàchỉnhsửadữliệu xml tatrongSql Server taquantâmđếnhaiphần: Xqueryvà XML DML • Xquery : chotakhảnăngtruyvấndữliệu xml kếthợpvớicácphươngthứcmàkiểudữliệu xml cungcấp. SELECT @sinhvienInfo.query('/DSSinhVien/SinhVien') • Các phương thưc dùng để truy vấn dữ liệu xml • Query() : Dùng khi muốn lấy về một phần hoặc một phân đoạn trong tài liệu xml (xml collumn, xml variable)
TruyVấn & ChỉnhSửaDữLiệu Xml Cú pháp : Query(‘XqueryExpression’). • DECLARE @sinhvienInfo xml • SET @sinhvienInfo = • '<DSSinhVien> • <SinhVien MSSV="0810282"> • <Ho>Ngo</Ho> • <Ten>Van Hau</Ten> • <NS>15-06-1990</NS> • </SinhVien> • </DSSinhVien>' • SELECT @sinhvienInfo.query('/DSSinhVien/SinhVien‘) • XqueryExpression: là một path chỉ ra vị trí của phần dữ liệu cần lấy. • Value ( ‘XqueryExpression’, ‘SqlType’) : Dùngkhimuốnlấydữliệucủamột node hay mộtthuộctính. ‘SqlType‘làkiểudữliệucủagiatrịmuốnlấyvề (int, varchar(n)) SELECT @sinhvienInfo.value('/(DSSinhVien/SinhVien/@MSSV)[1]‘, varchar(7))
TruyVấn & ChỉnhSửaDữLiệu Xml • Exist(‘XqueryExpression’) : dùngkhitacầnkiểmtramộtphầnnàođócủatàiliệu xml cótồntại hay không. • XqueryExpression: là một path chỉ ra vị trí của phần cần kiểm tra. • Nodes( ‘XqueryExpression’) : Dùngkhimuốnlấymộtthànhphầnnàođócủadữliệu xml vàchuyểnnóthànhdữliệuquanhệ. SELECT @sinhvienInfo.exist('/DSSinhVien/SinhVien[@MSSV eq xs:string("0810282")]') -- Resault = 1 SELECT DSSinhVien.SinhVien.value('(/DSSinhVien/SinhVien/Ten)[1]','varchar(50)') AS Ten, DSSinhVien.SinhVien.query('/DSSinhVien/SinhVien') AS RESULT FROM @sinhvienInfo.nodes('/DSSinhVien/SinhVien') DSSinhVien(SinhVien)
TruyVấn & ChỉnhSửaDữLiệu Xml • DML(Data Modify Language) Làngônngữdùngđểchỉnhsửadữliệu xml trongSql Server. Với DML tacóthểxóa, cậpnhật, thêmmột node vàotàiliệu xml vớicácthaotáclà • Insert • Delete • Replace value of Đểcóthểchỉnhsửadữliệu xml tadùngphươngthức modify kếthợpvớibacâulệnhtrên.
TruyVấn & ChỉnhSửaDữLiệu Xml • CâulệnhInsert cúphápnhưsau : • Expression1:làmộtchuỗivớicúpháp xml, cóthểlàmột node hoặcnhiều node cầnchènvàotàiliệu xml. • Expression2: LàmộtbiểuthứctruyvấnXquerydùngđểchỉravịtrícầnchènexpression1trongtàiliệu xml • INSERT Expression1 • ( • (as first | Last) into | after | before • Expression2 • ). SET @s.modify ('insert <Lop>CTK32</Lop> as last into(/DSSinhVien/SinhVien[ @MSSV = "0810282" ])[1]'); SET @s.modify ('insert attribute Sex{“Nam”} into(/DSSinhVien/SinhVien[ @MSSV = "0810282" ])[1]');
TruyVấn & ChỉnhSửaDữLiệu Xml • Câulệnhdelete Cúphápnhưsau: delete expression. Epressionlàvịtrícủa node muốnxóa . • Câulệnhreplace value of SET @s.modify ('delete (/DSSinhVien/SinhVien[ @MSSV = "0810282" ]/NS)[1]'); Replace value of Expression1 With Expression2 SET @s.modify ('replace value of (/DSSinhVien/SinhVien/@Oder)[1] With “BCD”');
SửDụngMệnhĐề FORXML SELECT [*,nameCollomn,…] FROM [nameTable,…] [WHERE condition] FOR XML {RAW | AUTO | EXPLICIT} [, XMLDATA] [, ELEMENTS] [, BINARY BASE64] • ChúngtacóthểchuyểndữliệuquanhệtrongkếtquảtrảvềcủaSELECT thànhdữliệudạng xml nhờmệnhđề FOR XML
Sử Dụng Hàm OPENXML() • Cho phépđọcdữliệu xml nhưlàdữliệunằmtrêncác row vàchènbàobảng. • Khisửdụng OPENXML() taquantâmđếnhaithủtụcsau : sp_xml_preparedocument()vàsp_xml_removedocument() • idoc: làmộtgiátrịthamchiếuđếntàiliệu xml EXEC sp_xml_preparedocument @idoc OUTPUT, @doc OPENXML(idocint [IN], RowPatternnvarchar [IN], [Flags byte[IN]]) [WITH (SchemaDeclaration | TableName)]
SửDụngHàm OPENXML() • RowPattern: làmộtXpathchỉđếnvịtrícầnlấydữliệutrongtàiliệu xml. • Flags : Làcácgiátrịtùychọndướibảngsau
SửDụngHàm OPENXML() • SchemaDeclaration: chỉtêncáccộtsẽchứadữliệu Cóthểlàtênbảngsẽchứadữliệu.
CẢM ƠN THẦY & CÁC BẠN THEO DÕI Q&A