Upload
raven-booth
View
75
Download
2
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
BÁO CÁO MÔNXML
Đề 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:
1. Nguyễn Đăng Anh 0812519
2. Ngô Văn Hậu 0810282
3. Lê Quang Hoàng 0812570
Nội dung báo cáo
Trình bầy nội dung chính2
Tổng quan31
Demo33
Tổng Quan Về Xml Trong Sql Server
Tại sao lại sử dụng kiểu dữ liệu Xml trong Sql Server.?
Việc lư trữ dữ liệu xml trong cơ sở dữ liệu quan hệ.
Mang lại lợi ích cho việc quản lý và xử lý dữ liêu.
Dữ liệu xml có thể tương thích với dữ liệu quan hệ. Điều
này có nghĩa dữ liệu xml có thể được đưa vào hệ thống
những dữ liệu phát sinh mà không ảnh hưởng đến ứng dụng
đang chạy.
NỘI DUNG CHÍNH
Kiểu dữ liệu Xml trong SQL SERVER
Truy vấn và chỉnh sử dữ liệu Xml trong SQL SERVER
Sử dụng mệnh đề FOR XML trong Sql Server
Sử dụng hàm OPENXML() trong Sql Server
Kiểu Dữ Liệu XML
Kiểu dữ liệu XML được hỗ trợ từ Sql Server 2000. Giúp
cho việc lưu trữ dữ liệu Xml hay các phân đoạn Xml trong
cơ sở dữ liệu.
Có thể sử dụng kiểu Xml gần giống như những kiểu giữ
liệu thông thường khác.
Chúng ta có thể dùng như là :
Kiểu dữ liệu biến
DECLARE @SinhVien_Info xml SET @SinhVien_Info = ‘<SinhVien>
<Ho>Ngo</Ho><Ten>Van Hau</Ten></SinhVien>’
Kiểu Dữ Liệu XML Dùng để tạo cột như kiểu dữ liệu thông thường khác.
CREATE TABLE SinhVien ( MSSV varchar(7), ThongTinSV xml )
AFTER TABLE SinhVien ADD ThongTinSV xml
o Lưu ý khi tạo cột : Không thể dùng như khóa chính hay
khóa ngoại
Có thể tạo ràng buộc nhưng không thể dùng các phương thức của kiểu dữ liệu xml để tạo. Mà phải tự định nghĩa một chức năng bao bọc các phương thức của kiểu dữ liệ xml.
Kiểu Dữ Liệu XML
Tạo view chứa dữ liệu xml.
Dùng như tham số khi tạo proecdure hoặc function
Kiểu dữ liệu xml cũng có thể là kiểu trả về của hàm.
Kiểu dữ liệu xml cung cấp năm phương thức để ta có thể
truy vấn chỉnh sửa dữ liệu này: Query(), Value(), Exist(),
Nodes(), Modify(). Chúng ta sẽ tìm hiểu kỹ hơn trong phần
truy vấn dữ liệu Xml trong Sql Server.
Hạn chế khi sử dụng kiểu dữ liệu này.
Truy Vấn & Chỉnh Sửa Dữ Liệu Xml
Để truy vấn và chỉnh sửa dữ liệu xml ta trong Sql Server
ta quan tâm đến hai phần: Xquery và XML DML
Xquery : cho ta khả năng truy vấn dữ liệu xml kết hợp
với các phương thức mà kiểu dữ liệu xml cung cấ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)
Truy Vấn & Chỉnh Sửa Dữ Liệu Xml
Cú pháp : Query(‘XqueryExpression’).
XqueryExpression: là một path chỉ ra vị trí của phần dữ liệu cần lấy.
Value ( ‘XqueryExpression’, ‘SqlType’) : Dùng khi muốn lấy dữ liệu của một node hay một thuộc tính. ‘SqlType‘ là kiểu dữ liệu của gia trị muốn lấy về (int, varchar(n))
DECLARE @sinhvienInfo xmlSET @sinhvienInfo =
'<DSSinhVien><SinhVien MSSV="0810282">
<Ho>Ngo</Ho><Ten>Van Hau</Ten><NS>15-06-1990</NS></SinhVien></DSSinhVien>'SELECT @sinhvienInfo.query('/DSSinhVien/SinhVien‘)
SELECT @sinhvienInfo.value('/(DSSinhVien/SinhVien/@MSSV)[1]‘, varchar(7))
Truy Vấn & Chỉnh Sửa Dữ Liệu Xml
Exist(‘XqueryExpression’) : dùng khi ta cần kiểm tra một phần nào đó của tài liệu xml có tồn tạ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ùng khi muốn lấy một thành phần nào đó của dữ liệu xml và chuyển nó thành dữ liệu quan hệ.
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 RESULTFROM @sinhvienInfo.nodes('/DSSinhVien/SinhVien') DSSinhVien(SinhVien)
Truy Vấn & Chỉnh Sửa Dữ Liệu Xml
DML(Data Modify Language) Là ngôn ngữ dùng để chỉnh sửa
dữ liệu xml trong Sql Server. Với DML ta có thể xóa, cập nhật,
thêm một node vào tài liệu xml với các thao tác là
Insert
Delete
Replace value of
Để có thể chỉnh sửa dữ liệu xml ta dùng phương thức modify
kết hợp với ba câu lệnh trên.
Truy Vấn & Chỉnh Sửa Dữ Liệu Xml
Câu lệnh Insert cú pháp như sau :
Expression1: là một chuỗi với cú pháp xml, có thể là một node hoặc nhiều node cần chèn vào tài liệu xml.
Expression2: Là một biểu thức truy vấn Xquery dùng để chỉ ra vị trí cần chèn expression1 trong tài liệu xmlSET @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]');
INSERT Expression1(
(as first | Last) into | after | before
Expression2).
Truy Vấn & Chỉnh Sửa Dữ Liệu Xml Câu lệnh delete Cú pháp như sau:
delete expression. Epression là vị trí của node muốn xóa .
Câu lệnh replace value of
SET @s.modify ('delete (/DSSinhVien/SinhVien[ @MSSV = "0810282" ]/NS)[1]');
SET @s.modify ('replace value of (/DSSinhVien/SinhVien/@Oder)[1] With “BCD”');
Replace value ofExpression1WithExpression2
Sử Dụng Mệnh Đề FORXML Chúng ta có thể chuyển dữ liệu
quan hệ trong kết quả trả về của SELECT thành dữ liệu dạng xml nhờ mệnh đề FOR XML
SELECT [*,nameCollomn,…]FROM [nameTable,…][WHERE condition]FOR XML {RAW | AUTO | EXPLICIT} [, XMLDATA] [, ELEMENTS] [, BINARY BASE64]
Từ Khóa Mô tả
RAW Chỉ rõ mỗi hàng trong tập kết quả sẽ là một một phần tử <row>. Giá trị mỗi cột sẽ là một thuộc tính trong <row>
AUTO Như RAW. Nhưng tên của bảng trở thành tên của phần tử.
EXPLICIT Cho phép lấy về dữ liệu xml dạng cha con(có thẻ bao trùm)
XMLDATA Tự động tạo thêm một schema cho dữ liệu xml trả về.
ELEMENTS Giá trị ở mỗi cột trên một dòng sẽ được chứa trong một elelents
BINARY BASE 64
Bất kỳ kiểu dữ liệu nhị phân nào trả về đề được mã hóa dạng cơ sỏ 64.
Sử Dụng Mệnh Đề FORXML
Cho phép đọc dữ liệu xml như là dữ liệu nằm trên các row và
chèn bào bảng.
Khi sử dụng OPENXML() ta quan tâm đến hai thủ tục sau :
sp_xml_preparedocument() và sp_xml_removedocument()
idoc : là một giá trị tham chiếu đến tài liệu xml
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
OPENXML(idoc int [IN], RowPattern nvarchar [IN], [Flags byte[IN]]) [WITH (SchemaDeclaration | TableName)]
Sử Dụng Hàm OPENXML()
Sử Dụng Hàm OPENXML()
RowPattern : là một Xpath chỉ đến vị trí cần lấy dữ liệu
trong tài liệu xml.
Flags : Là các giá trị tùy chọn dưới bảng sau
Giá trị Mô tả
0 Lấy giá trị ở thuộc tính
1 Có thể lấy giá trị ở thuộc tính hoặc element, nhưng ưu tiên lấy thuộc tính trước.
8 Có thể kết hợp giữa XML_ATTRIBUTES or XML_ELEMENTS. Dữ liệu không được đặt vào cột
đã đầy dữ liệu.
Sử Dụng Hàm OPENXML()
SchemaDeclaration : chỉ tên các cột sẽ chứa dữ liệu
Có thể là tên bảng sẽ chứa dữ liệu.
DEMO
CẢM ƠN THẦY & CÁC BẠN
THEO DÕI
Q&A