1. Trang chủ
  2. » Tất cả

Btth 5 huong dan xpath xquery (sv)

6 17 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

Microsoft Word BTTH 5 Huong dan Xpath Xquery (SV) docx 1 Hướng dẫn bài tập môn Quản lý thông tin (tuần 5) Xpath là một ngôn ngữ được tạo ra dùng để truy vấn các thông tin trên các tài liệu XML Xpath s[.]

Hướng dẫn tập môn Quản lý thông tin (tuần 5) Xpath ngôn ngữ tạo dùng để truy vấn thông tin tài liệu XML Xpath truy vấn thông tin thông qua nút (node) - tức cặp thẻ đánh dấu tài liệu XML Xét Ví dụ 1, để tìm thơng tin người dùng 18 tuổi, ta dùng câu truy vấn Xpath sau: /user[age lt 18]/name/last/text() Kết trả là: Solis Một số cú pháp để làm việc với Xpath: nodename Chọn tất nút có tên nodename / Truy vấn từ nút gốc (root node) // Truy vấn từ nút tại, nút có tồn tài liệu XML Có thể truy vấn từ vị trí tài liệu, Chọn nút @ Chọn thuộc tính /a/b[1] Chọn nút b (trong trường hợp có nhiều nút b) /a/b[last()] Chọn nút b cuối (trong trường hợp có nhiều nút b) /a[@att] Chọn tất nút a có thuộc tính att /a[@att='val'] Chọn tất nút a có thuộc tính att 'val' /a/* Chọn tất nút từ nút a Để tăng cường tính logic giảm thiểu phức tạp truy vấn Xpath, biểu thức FLOWR tạo dùng để liên kết tiêu chí rút trích liệu chuyển đổi tập kết trả câu truy vấn Biểu thức FLWOR viết tắt từ for, let, where, order by return, bắt đầu biểu thức for let kết thúc biểu thức return Xét ví dụ 1, để tìm tên người dùng 18 tuổi, ta dùng truy vấn với biểu thức FLOWR sau: let $xml:= _XML from Ví dụ for $user in $xml//user[age lt 18] order by $user/name/last return $user/name/last/text() 10 Tạo liệu test sau: CREATE DATABASE TEST_XML GO USE TEST_XML GO CREATE TABLE KhoaHoc ( MaKhoaHoc INT IDENTITY(1,1)NOT NULL, TenKhoaHoc VARCHAR(200) NOT NULL, CONSTRAINT PK_KhoaHoc PRIMARY KEY(MaKhoaHoc) ) INSERT INTO KhoaHoc (TenKhoaHoc) SELECT 'Mang May Tinh Truyen Thong' INSERT INTO KhoaHoc (TenKhoaHoc) SELECT 'Khoa Hoc May Tinh' INSERT INTO KhoaHoc (TenKhoaHoc) SELECT 'Ky Thuat May Tinh' CREATE TABLE SinhVien ( MSSV BIGINT IDENTITY(1,1)NOT NULL CONSTRAINT PK_SinhVien PRIMARY KEY(MSSV), TenSV VARCHAR(200) NOT NULL, MaKhoaHoc INT NOT NULL CONSTRAINT FK_SinhVien_MaKhoaHoc FOREIGN KEY REFERENCES KhoaHoc(MaKhoaHoc) ) INSERT INTO SinhVien INSERT INTO SinhVien INSERT INTO SinhVien SELECT 'Sang',1 SELECT 'Duy',2 SELECT 'Sa', CREATE TABLE MonHoc ( MaMonHoc INT IDENTITY NOT NULL CONSTRAINT PK_MonHoc PRIMARY KEY(MaMonHoc), TenMonHoc VARCHAR(200) ) INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO MonHoc MonHoc MonHoc MonHoc MonHoc MonHoc MonHoc MonHoc MonHoc (TenMonHoc) (TenMonHoc) (TenMonHoc) (TenMonHoc) (TenMonHoc) (TenMonHoc) (TenMonHoc) (TenMonHoc) (TenMonHoc) SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT ('Co So Du Lieu') ('Cau Truc Du Lieu') ('Lap Trinh Di Dong') ('Toan Giai Tich') ('Lap Trinh Java') ('He Quan Tri CSDL') ('Anh Van') ('Thiet Ke Web ') ('An Toan Thong Tin') CREATE TABLE KhoaHocMonHoc ( MaKhoaHoc INT CONSTRAINT FK_KhoaHocMonHoc_MaKhoaHoc FOREIGN KEY REFERENCES KhoaHoc(MaKhoaHoc), MaMonHoc INT CONSTRAINT FK_KhoaHocMonHoc_MaMonHoc FOREIGN KEY REFERENCES MonHoc(MaMonHoc) ) INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO KhoaHocMonHoc KhoaHocMonHoc KhoaHocMonHoc KhoaHocMonHoc KhoaHocMonHoc KhoaHocMonHoc KhoaHocMonHoc KhoaHocMonHoc KhoaHocMonHoc (MaKhoaHoc,MaMonHoc) (MaKhoaHoc,MaMonHoc) (MaKhoaHoc,MaMonHoc) (MaKhoaHoc,MaMonHoc) (MaKhoaHoc,MaMonHoc) (MaKhoaHoc,MaMonHoc) (MaKhoaHoc,MaMonHoc) (MaKhoaHoc,MaMonHoc) (MaKhoaHoc,MaMonHoc) SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT 1,1 1,2 1,3 2,4 2,5 2,6 3,7 3,8 3,9 CREATE TABLE Diem ( MSSV BIGINT CONSTRAINT FK_Diem_MSSV FOREIGN KEY REFERENCES SinhVien(MSSV), MaMonHoc INT CONSTRAINT FK_Diem_MaMonHoc FOREIGN KEY REFERENCES MonHoc(MaMonHoc), Diem INT ) INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 1,1,75 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 1,2,80 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 1,3,70 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 2,4,80 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 2,5,80 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 2,6,90 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 3,7,80 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 3,8,80 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 3,9,90 CREATE TABLE QuanLySV (MSDH INT NOT NULL, TenDH VARCHAR(20), ChiTietSV XML) INSERT INTO QuanLySV VALUES (1,'DH CNTT',' ') INSERT INTO QuanLySV VALUES (2,'DH KHTN',' ') Hướng dẫn thực hành Để thực thay đổi CSDL XML, bạn dùng lệnh query() VD: Câu 1: Viết lệnh Xpath lấy Sinh viên có ID=10 Lệnh lấy sinh viên vị trí cuối trường CNTT SELECT ChiTietSV.query('//sinhvien[@ID = 10]') FROM QuanLySV; SELECT ChiTietSV.query('/THONGTINSV/sinhvien[last()]') FROM QuanLySV WHERE TenDH = 'DH CNTT'; Câu 2: Viết lệnh trả tất nút từ nút gốc THONGTINSV SELECT ChiTietSV.query('/THONGTINSV/*') FROM QuanLySV; Câu 3: Viết lệnh Xquery trả danh sách sinh viên có ID < 12 với MSDH = cách 1: dùng XPath SELECT ChiTietSV.query('//sinhvien[@ID < 12]') FROM QuanLySV WHERE MSDH = 1; cách 2: dùng XQuery SELECT ChiTietSV.query('for $i in /THONGTINSV/sinhvien let $j:= $i where ($j/@ID) < 12 return $j') FROM QuanLySV WHERE MSDH = 1; Ghi chú: Để lấy thông tin thuộc tính trả giá trị cụ thể, ta dùng lệnh value() Tuy nhiên, phải đảm bảo giá trị trả đơn trị, có kiểu liệu rõ ràng SELECT ChiTietSV.value('(//sinhvien[@ID=11]/@Ten)[1]', 'varchar(10)') FROM QuanLySV WHERE MSDH = 1; Để thực thay đổi CSDL XML, bạn dùng lệnh modify() VD: Câu 6: Viết lệnh xóa tên sinh viên trường DH KHTN UPDATE QuanLySV SET ChiTietSV.modify('delete(/THONGTINSV/sinhvien/@Ten)') WHERE TenDH = 'DH KHTN'; SELECT * FROM QuanLySV WHERE TenDH = 'DH KHTN'; Câu 8: Viết lệnh Xquery thay đổi tên sinh viên thứ thành tên ‘Binh’ trường CNTT UPDATE QuanLySV SET ChiTietSV.modify('replace value of (/THONGTINSV/sinhvien/@Ten)[2] with "Binh" ') WHERE TenDH = 'DH CNTT'; SELECT * from QuanLySV WHERE TenDH = 'DH CNTT'; Để thực kiểm tra tồn đối tượng XML, ta dùng lệnh exist() Ví dụ: kiểm tra xem có tồn sinh viên có ID 12 trường KHTN khơng? (Nếu có trả 1, khơng trả 0) SELECT ChiTietSV.exist('/THONGTINSV/sinhvien[@ID = 12]') FROM QuanLySV WHERE TenDH = 'DH KHTN' ... 3: Viết lệnh Xquery trả danh sách sinh viên có ID < 12 với MSDH = cách 1: dùng XPath SELECT ChiTietSV.query(''//sinhvien[@ID < 12]'') FROM QuanLySV WHERE MSDH = 1; cách 2: dùng XQuery SELECT... (MaKhoaHoc,MaMonHoc) SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT 1,1 1,2 1,3 2,4 2 ,5 2,6 3,7 3,8 3,9 CREATE TABLE Diem ( MSSV BIGINT CONSTRAINT FK_Diem_MSSV FOREIGN KEY REFERENCES... FOREIGN KEY REFERENCES MonHoc(MaMonHoc), Diem INT ) INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 1,1, 75 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT 1,2,80 INSERT INTO Diem (MSSV,MaMonHoc,Diem) SELECT

Ngày đăng: 25/02/2023, 17:51

TỪ KHÓA LIÊN QUAN

w