20
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: 1. Nguyễn Đăng Anh 0812519 2. Ngô Văn Hậu 0810282 3. Lê Quang Hoàng 0812570

BÁO CÁO MÔN XML

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

Page 1: BÁO CÁO MÔN XML

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

Page 2: BÁO CÁO MÔN XML

Nội dung báo cáo

Trình bầy nội dung chính2

Tổng quan31

Demo33

Page 3: BÁO CÁO MÔN XML

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.

Page 4: BÁO CÁO MÔN XML

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

Page 5: BÁO CÁO MÔN XML

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>’

Page 6: BÁO CÁO MÔN XML

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.

Page 7: BÁO CÁO MÔN 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.

Page 8: BÁO CÁO MÔN XML

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)

Page 9: BÁO CÁO MÔN XML

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))

Page 10: BÁO CÁO MÔN XML

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)

Page 11: BÁO CÁO MÔN XML

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.

Page 12: BÁO CÁO MÔN XML

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).

Page 13: BÁO CÁO MÔN XML

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

Page 14: BÁO CÁO MÔN XML

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.

Page 15: BÁO CÁO MÔN XML

Sử Dụng Mệnh Đề FORXML

Page 16: BÁO CÁO MÔN XML

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()

Page 17: BÁO CÁO MÔN XML

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.

Page 18: BÁO CÁO MÔN XML

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.

Page 19: BÁO CÁO MÔN XML

DEMO

Page 20: BÁO CÁO MÔN XML

CẢM ƠN THẦY & CÁC BẠN

THEO DÕI

Q&A