-
column_name là tên của một cột trong bảng. Trong một bảng không được có các cột trùng tên nhau.
Giả sử, trong CSDL AdventureWorks, bảng Production.ProductPhoto chứa một cột ThumbNailPhoto, cột này có kiểu dữ liệu varbinary(max) và được dùng để lưu trữ các hình ngắn gọn. Ví dụ 2 chỉ ra cách tạo một bảng mới có tên là Production.ProductPhoto, bảng này có 2 cột PhoneID và Photo.
Ví dụ 2:
Trong phần tiếp theo, chúng ta tiếp tục tìm hiểu các đặc tính xuất hiện cùng với một bảng như cột được phép null, giá trị mặc định, các ràng buộc …
-
Cột được phép null – Column Nullability
Đặc trưng được phép null của một cột quyết định rằng các hàng trong bảng có thể chứa giá trị null đối với cột đó. Trong SQL Server, giá trị null không được coi là bằng 0, trống hoặc kiểu dữ liệu chuỗi có kích thước bằng 0 ( như “”). Ví dụ, giá trị null trong cột Color(màu) của bảng Production.ProductPhoto không có nghĩa rằng sản phẩm đó không có màu, mà nó có nghĩa là màu của sản phẩm đó chưa được biết hoặc không được thiết lập.
Đặc tính được phép null của cột có thể được định nghĩa trong lúc tạo bảng hoặc trong lúc chỉnh sửa bảng.
Từ khóa NULL được sử dụng để chỉ ra rằng giá trị null là được phép trong cột và NOT NULL được sử dụng để chỉ ra rằng giá trị null là không được phép.
Khi chèn một hàng, nếu không có giá trị được chèn vào cột được phép null, thì SQL Server sẽ tự động đưa 1 giá trị null vào cột, trừ trường hợp cột đó có định nghĩa giá trị mặc định. Ngoài ra, nó có thể nhập chính xác một giá trị null vào cột bất chấp kiểu dữ liệu của cột là gì hoặc có định nghĩa giá trị mặc định hay không. Việc một cột không được null đảm bảo toàn vẹn dữ liệu vì chắc chắn rằng cột đó phải chứa dữ liệu trong tất cả các hàng.
Đọan code trong ví dụ 3, câu lệnh CREATE TABLE có sử dụng các từ khóa NULL và NOT NULL .
Ví dụ 3:
-
Giá trị mặc định – DEFAULT
Tưởng tượng rằng trong bảng lưu trữ chi tiết về sản phẩm, tất cả các giá trị về chi tiết sản phẩm có khả năng không được biết tại thời điểm chèn dữ liệu. Tuy nhiên, để nhất quán dữ liệu và luật ràng buộc, các cột trong một bản ghi nên chứa một giá trị. Việc lưu trữ giá trị null vào trong cột nơi mà giá trị chính xác của dữ liệu chưa được biết là không thiết thực.
Như vậy, một định nghĩa DEFAULT có thể được đưa ra đối với cột để gán cho nó một giá trị mặc định. Ví dụ, thông thường giá trị zero(0) là giá trị mặc định cho các cột có kiểu dữ liệu là numeric và ‘N/A’ hoặc ‘Unknown’ cho các cột có kiểu dữ liệu là chuỗi khi không có giá trị nào chỉ định.
Một định nghĩa DEFAULT cho một cột có thể được tạo ra tại thời điểm tạo bảng hoặc được thêm vào sau. Khi một định nghĩa DEFAULT được thêm vào một cột đã tồn tại trong bảng, SQL Server sẽ chỉ áp dụng giá trị mặc định mới cho các hàng mới được thêm vào trong bảng.
Đoạn mã trong ví dụ 4, câu lệnh CREATE TABLE sử dụng từ khóa DEFAULT để định nghĩa giá trị mặc định cho cột Price.
Ví dụ 4:
Khi một hàng được chèn vào bảng bằng câu lệnh ở ví dụ 5, giá trị của cột Price sẽ không trống, nó sẽ có giá trị là 100.00.
Ví dụ 5:
DEFAULT không thể được tạo ra trên cột đã được định nghĩa với:
-
Cột có kiểu dữ liệu timestamp.
-
Thuộc tính IDENTITY hoặc ROWGUIDCOL
-
Có tồn tại sự định nghĩa mặc định hoặc đối tượng mặc định
-
Thuộc tính IDENTITY
Thuộc tính IDENTITY của SQL Server được sử dụng để tạo ra các cột định danh, chúng chứa các giá trị tự động phát sinh tuần tự để định danh duy nhất mỗi hàng trong một bảng. Ví dụ, một cột định danh có thể được tạo ra để phát sinh số đăng kí sinh viên duy nhất một cách tự động mỗi khi có một hàng được chèn vào trong bảng. Số định danh cho hàng đầu tiên được chèn vào trong bảng được gọi là giá trị khởi đầu (seed) và giá trị mức tăng được gọi là thuôc tính tăng định danh (Identity Increment). Khi một hàng mới được chèn vào bảng với cột định danh, giá trị định danh tiếp theo được tự động phát sinh bởi SQL Server bằng cách tăng giá trị khởi đầu. Cột định danh thường được sử dụng là khóa chính.
Các đặc trưng của thuộc tính IDENTITY:
-
Một cột được chỉ định thuộc tính IDENTITY phải được khai báo với các kiểu dữ liệu decimal, int, numeric, smallint, bigint, hoặc tinyint.
-
Một cột có thuộc tính IDENTITY không cần thiết phải chỉ định giá trị khởi đầu và giá trị mức tăng. Nếu không chỉ định, thì giá trị mặc định là 1 sẽ được sử dụng cho cả hai.
-
Một bảng không thể có nhiều hơn một cột với thuộc tính IDENTITY.
-
Cột chỉ định trong một bảng không cho phép null và không chứa giá trị mặc định hoặc đối tượng mặc định.
-
Cột được định nghĩa với thuộc tính IDENTITY không thể cập nhật cho nó.
-
Các giá trị có thể được chèn cụ thể vào trong cột định danh của một bảng nếu tùy chọn IDENTITY_INSERT được thiết lập lên trạng thái ON. Khi IDENTITY_INSERT là ON, câu lệnh INSERT phải cung cấp một giá trị.
Điểm thuận lợi của cột định danh là SQL Server có thể tự động cung cấp giá trị khóa, theo đó làm giảm chi phí và tăng hiệu suất. Sử dụng cột định danh làm đơn giản việc lập trình và giữ cho giá trị khóa chính ngắn nhất.
Một khi thuộc tính IDENTITY được thiết lập, việc truy xuất giá trị của cột định danh có thể được thực hiện bằng cách sử dụng từ khóa IDENTITYCOL với tên của bảng trong câu lệnh SELECT. Để biết một bảng có cột IDENTITY hay không, hàm OBJECTPROPERTY() được sử dụng. Để truy xuất tên của cột IDENTITY trong bảng, hàm COLUMNPROPERTY() được sử dụng.
Cú pháp:
CREATE TABLE (column_name data_type [ IDENTITY [(seed_value, increment_value)]] NOT NULL )
Trong đó:
-
seed_value là giá trị khởi đầu .
-
increment_value là giá trị mức tăng.
Đoạn mã ở ví dụ 6 sẽ minh họa cách sử dụng thuộc tính IDENTITY. Bảng ContactPhone được tạo với 2 cột, trong giản đồ Person và nằm trong CSDL AdventureWorks. Cột Person_ID là cột định danh. Giá trị khởi đầu là 500, giá trị tăng là 1.
Ví dụ 6:
Trong khi chèn các hàng vào trong bảng, nếu IDENTITY_INSERT không ở trạng thái ON, thì chúng ta không chèn vào giá trị cho cột định danh. Vì vậy, trong ví dụ 7, câu lệnh chèn khá đơn giản.
Kết quả được hiển thị trong hình 11.2
Hình 11.2 Cột định danh
-
Cột định danh duy nhất tổng thể – Globally Unique Identifiers
Để mở rộng thuộc tính IDENTITY, SQL Server ngoài ra còn hỗ trợ khóa duy nhất tổng quát. Thông thường, trong môi trường mạng, nhiều bảng có thể cần có một cột chứa một giá trị duy nhất tổng thể chung. Thử hình dung rằng, tại những nơi mà dữ liệu từ nhiều hệ thống CSDL, như CSDL ngân hàng, phải được hợp nhất tại một vị trí náo đó. Khi khối lượng dữ liệu lớn từ khắp nơi được sắp xếp tại site trung tâm để hợp nhất và báo cáo, việc sử dụng giá trị duy nhất tổng quát giúp ngăn ngừa các khách hàng trong các quốc gia khác nhau có cùng số tài khoản ngân hàng hoặc CustomerID. Để thỏa mãn điều này, SQL Server cung cấp cột định danh duy nhất tổng thể. Chúng có thể được tạo ra cho mỗi bảng chứa các giá trị, các giá trị đó là duy nhất trong tất cả các máy tính trong mạng. Chỉ có một cột là cột định danh duy nhất tổng thể trong mỗi bảng. Để tạo và làm việc với cột định danh duy nhất tổng thể, chúng ta phải sử dụng kết hợp từ khóa ROWGUIDCOL, kiểu dữ liệu uniqueidentifier và hàm NEWID.
Giá trị cho một cột định danh duy nhất tổng thể không được tự động sinh ra. Chúng ta phải tạo một giá trị DEFAULT với hàm NEWID() để cột định danh duy nhất tổng thể phát sinh một giá trị duy nhất. Hàm NEWID() tạo một số định danh duy nhất với độ dài 16-byte kiểu binary string. Cột này có thể được tham chiếu trong câu lệnh SELECT bằng cách sử dụng từ khóa ROWGUIDCOL.
Để nhận biết trong bảng có cột ROWGUIDCOL hay không, hàm OBJECTPROPERTY được sử dụng. Hàm COLUMNPROPERTY được sử dụng để truy xuất tên của cột ROWGUIDCOL.
Ví dụ 8:
Một hàng có thể được chèn vào bảng và bản ghi từ bảng có thể được hiển thị như trong ví dụ 9.
Ví dụ 9:
Kết quả:
Hình 11.3: Cột định danh duy nhất tổng thể
-
Ràng buộc – Constraint
Một trong những chức năng quan trọng của SQL Server là duy trì và đảm bảo toàn vẹn dữ liệu. Ở đây có một số phương tiện để thỏa mãn điều đó nhưng một trong những cách phổ biến nhất là sử dụng ràng buộc. Ràng buộc là thuộc tính được chỉ định cho một cột hoặc một tập hợp các cột trong bảng để ngăn ngừa các giá trị không nhất quán được nhập vào bảng. Ràng buộc được sử dụng để ứng dụng các luật logic tác nghiệp và bảo đảm ràng dữ liệu.
Ràng buộc có thể được tạo ra trong khi một bảng được tạo, sử dụng câu lệnh CREATE TABLE hoặc có thể được thêm vào sau bằng cách sử dụng lệnh ALTER TABLE. Các ràng buộc có thể được phân loại thành ràng buộc cột và ràng buộc bảng. Một ràng buộc cột được chỉ định trong phần định nghĩa cột và chỉ được áp dụng cho cột đó. Ràng buộc bảng có thể áp dụng cho nhiều cột trong một bảng và được khai báo độc lập với định nghĩa cột. Ràng buộc bảng phải được sử dụng khi có nhiều cột được tính đến trong một ràng buộc.
SQL Server 2005 hỗ trợ các loại ràng buộc sau:
-
PRIMARY KEY – Khóa chính
-
UNIQUE – Khóa duy nhất
-
FOREIGN KEY – Khóa ngoại
-
CHECK – Ràng buộc kiểm tra
-
NOT NULL – Không cho phép chứa giá trị null
-
PRIMARY KEY- Khóa chính
Một bảng tiêu biểu thông thường có một khóa chính, một cột hoặc là sự kết hợp từ nhiều cột trong bảng để xác định tính duy nhất của mỗi hàng. Ràng buộc PRIMARY KEY được sử dụng để tạo một khóa chính và đảm bảo toàn vẹn thực thể bảng. Chỉ duy nhất 1 khóa chính được tạo ra trên một bảng. Hai hàng trong một bảng không thể có cùng giá trị khóa chính và một cột khi được chỉ định là khóa chính thì không được chứa giá trị null. Vì thế khi một ràng buộc khóa chính được thêm vào cột đã tồn tại trong bảng, SQL Server 2005 kiểm tra để xem các qui tắc cho khóa chính có được biên dịch cùng không. Nếu các dữ liệu đã tồn tại trong cột không phù hợp với các qui tắc của ràng buộc khóa chính thì ràng buộc khóa chính đó sẽ không thể được thêm vào.
Cú pháp để thêm một khóa chính trong khi tạo bảng:
Đoạn mã trong ví dụ 10 tạo một bảng Person.ContactPhone để lưu trữ chi tiết số điện thoại liên lạc của mọi người. Cột Person_ID được chỉ định là khóa chính.
Ví dụ 10:
Một cách khác sử dụng từ khóa CONSTRAIN. Cú pháp như sau:
Bảng Person_ID đã có 1 khóa chính, câu lệnh để chèn một hàng vào trong bảng được minh họa trong ví dụ 11.
Ví dụ 11:
Câu lệnh đầu tiên trong ví dụ 11 được thực thi thành công nhưng câu INSERT tiếp theo sẽ bị lỗi bởi vì giá trị trong cột Person_ID bị trùng lặp.
-
UNIQUE – Khóa duy nhất
Ràng buộc khóa duy nhất được sử dụng để bảo đảm rằng chỉ các giá trị duy nhất được nhập vào trong cột hoặc một tập hợp các cột. Nó cho phép nhà phát triển chắc chắn rằng không có các giá trị trùng lặp được nhập vào. Khóa chính là hoàn toàn duy nhất. Ràng buộc khóa duy nhất đảm bảo ràng buộc thực thể bởi vì khi một ràng buộc được áp dụng, không có hai hàng trong bảng có thể có cùng một giá trị đối với cột đó. Ràng buộc UNIQUE cho phép null.
Một bảng đơn có thể có nhiều hơn một ràng buộc UNIQUE. Cú pháp để tạo ràng buộc UNIQUE như sau:
Ví dụ 12 mô tả cách tạo các cột MobileNumber và LandlineNumber là khóa duy nhất.
Ví dụ 12:
Ví dụ 13: Đoạn code chèn một hàng vào trong bảng.
Mặc dù một giá trị NULL được đưa vào cột LandlineNumber, câu lệnh này vẫn được thực hiện thành công bởi vì ràng buộc UNIQUE chỉ kiểm tra tính duy nhất của giá trị, nó không ngăn ngừa giá trị null. Khi một hàng được chèn thành công, nếu một hàng thứ hai cố gắng nhập với câu lệnh mà giá trị khóa chính được thay đổi nhưng giá trị trường mobileNumber trùng thì một lỗi sẽ xuất hiện.
-
FOREIGN KEY – Khóa ngoại
Một khóa ngoại trong một bảng là một cột, nó chỉ đến một khóa chính trong một bảng khác. Ràng buộc khóa ngoại được sử dụng để đảm bảo toàn vẹn tham chiếu.
Cú pháp:
Trong đó:
Table_name2 là tên của bảng chứa khóa chính tham chiếu.
là tên của cột khóa chính.
Ví dụ 14:
Một hàng được chèn vào bảng Person.PhoneExpenses thì số điện thoại được chèn phải tương ứng với một số điện thoại trong bảng Person.ContactPhone. Câu lệnh INSERT trong ví dụ 15 sẽ minh họa điều này.
Ví dụ 15:
Kết quả hiển thị trong hình 11.4
Hình 11.4: Khóa ngoại
Nếu trong bảng tham chiếu không có giá trị tương ứng với giá trị được nhập cho cột khóa ngoại thì câu lệnh INSERT sẽ lỗi. Tuy nhiên, có thể thêm giá trị NULL vào cột khóa ngoại.
-
CHECK – Ràng buộc kiểm tra
Ràng buộc kiểm tra giới hạn giá trị có thể được nhập vào trong cột. Ràng buộc kiểm tra đảm bảo toàn vẹn dữ liệu. Ví dụ, một ràng buộc kiểm tra có thể được đưa ra để kiểm tra nếu giá trị được nhập vào cho cột VoterAge là lớn hơn hoặc bằng 18 thì được chấp nhận, ngược lại lệnh nhập đó sẽ lỗi. Dữ liệu được nhập vào trong cột phải thõa mãn điều kiện của ràng buộc kiểm tra.
Ràng buộc kiểm tra hoạt động bằng cách chỉ định một điều kiện tìm kiếm, nó có thể đánh giá điều kiện là đúng (TRUE) hoặc sai (FALSE) hoặc chưa xác định (UNKNOWN). Các giá trị sai sẽ được loại bỏ. Có thể có nhiều ràng buộc kiểm tra được chỉ định trên một cột đơn. Một ràng buộc kiểm tra đơn ngoài ra còn có thể được áp dụng đến nhiều cột bằng cách tạo nó tại cấp bảng. Ví dụ 16 chỉ ra cách tạo ràng buộc kiểm tra để bảo đảm rằng giá trị được nhập vào cột Amount luôn luôn khác 0. Một giá trị NULL có thể được nhập vào nếu như chưa biết.
Ví dụ 16:
Một ràng buộc kiểm tra đã được định nghĩa, nếu câu lệnh INSERT được viết có dữ liệu không thõa mãn ràng buộc, nó sẽ bị lỗi.
-
NOT NULL – Không cho phép chứa giá trị null
Ràng buộc NOT NULL bảo đảm rằng không được phép nhập giá trị null vào cột này. Ràng buộc NOT NULL được sử dụng để bảo đảm toàn vẹn miền, tương tự như ràng buộc kiểm tra.
-
Thay đổi cấu trúc của bảng
Sau khi bảng được tạo ra trong CSDL, đôi lúc chúng ta muốn thay đổi hoặc chỉnh sửa các thuộc tính của bảng.
-
Thêm, sửa, và xóa cột
Chúng ta có thể thêm một cột, chỉnh sửa hoặc xóa cột vào một bảng đã tồn tại bằng cách sử dụng câu lệnh ALTER TABLE.
Cú pháp:
Ví dụ 17 thêm một cột mới có tên là RentalCharges, kiểu dữ liệu money, vào bảng Person.ContactPhone.
Cú pháp được sử dụng để chỉnh sửa một cột trong bảng:
Ví dụ 18:
Trước khi xóa các cột trong bảng, điều quan trong là chúng ta phải chắc chắn rằng các cột đó có thể bị xóa hay không. Nếu một cột được sử dụng trong các ràng buộc như ràng buộc kiểm tra, khóa ngoại, khóa duy nhất hoặc khóa chính, được kết hợp với một giá trị mặc định … thì cột đó không thể xóa được.
Cú pháp:
Ví dụ 19 minh họa các sử dụng cú pháp xóa cột.
Ví dụ 19:
-
Thêm, sửa, và xóa các ràng buộc
Các ràng buộc có thể được thêm vào, chỉnh sửa hoặc xóa từ một bảng sử dụng câu lệnh ALTER TABLE hoặc sử dụng SQL Server Management Studio. Cú pháp để thêm một ràng buộc như sau:
Cú pháp:
Ví dụ, một ràng buộc CHECK có thể được thêm vào để kiểm tra giá trị nhập vào cho của cột RentalCharges.
Ví dụ 20:
Khi các ràng buộc này không cần nữa, chúng có thể được loại bỏ bằng cách sử dụng câu lệnh ALTER TABLE. Cú pháp như sau:
Ví dụ 21:
-
Làm việc với XML
XML (eXtensible Markup Language) cho phép người lập trình phát triển một tập các thẻ của họ làm chúng có thể hiểu được trong các chương trình khác. XML được ưa thích vì nó giúp người lập trình lưu trữ, định dạng và quản lý dữ liệu trên web. Các ứng dụng ngày nay là sự kết hợp nhiều công nghệ như ASP, Microsoft.NET, XML và SQL Server 2005 cùng làm việc song hành. Trong một viễn cảnh như vậy, sẽ là tốt hơn khi lưu trữ dữ liệu XML bên trong SQL Server 2005.
Bản thân CSDL XML trong SQL Server 2005 có một số các ưu điểm như sau:
-
Dễ dàng quản lý và tìm kiếm dữ liệu: tất cả các dữ liệu XML được lưu trữ cục bộ ở một nơi, vì thế dễ dàng tìm kiếm và quản lý.
-
Sự thực thi tốt hơn: Các truy vấn từ một CSDL XML được thi hành tốt sẽ nhanh hơn các truy vấn bằng tài liệu đã lưu trữ trong hệ thống tập tin. Ngoài ra, về bản chất, CSDL sẽ phân tách mỗi tài liệu khi lưu trữ chúng.
-
Dễ dàng xử lý dữ liệu: các tài liệu lớn có thể được xử lý dễ dàng.
SQL Server 2005 hỗ trợ lưu trữ dữ liệu XML bằng cách sử dụng loại dữ liệu XML. Phần tiếp theo của bài học sẽ giải thích kiểu dữ liệu XML, cách làm việc với kiểu dữ liệu XML và untyped XML, cách lưu trữ chúng trong SQL Server 2005 và sử dụng XQuery để truy xuất dữ liệu từ các cột chứa dữ liệu XML.
-
Kiểu dữ liệu XML
Ngoài việc sử dụng các kiểu dữ liệu thông thường, SQL Server 2005 cung cấp một kiểu dữ liệu mới, kiểu dữ liệu XML. Kiểu dữ liệu XML được sử dụng để lưu trữ các phân đoạn và tài liệu XML trong một CSDL SQL Server, ở đây một phân đoạn XML là một thể hiện XML với các phần tử top-level bị thiếu trong cấu trúc của nó.
Cú pháp để tạo một bảng chứa các cột có kiểu dữ liệu XML như sau:
Ví dụ 22 tạo một bảng mới có tên là PhoneBilling chứa một cột thuộc kiểu dữ liệu XML.
Một cột thuộc kiểu XML có thể được thêm vào một bảng tại thời điểm tạo bảng hoặc sau khi tạo bảng. Cột thuộc kiểu XML có hỗ trợ giá trị mặc định và ràng buộc NOT NULL.
Dữ liệu có thể được chèn vào cột XML trong bảng như ví dụ 23.
Ví dụ 23:
Kết quả :
Hình 11.5: Dữ liệu XML trong cột
Câu lệnh DECLARE được sử dụng để tạo các biến có kiểu XML. Ví dụ 24 chỉ ra cách tạo một biến kiểu XML.
Ví dụ 24:
Cột có kiểu XML không thể được sử dụng làm khóa chính, khóa ngoại hay khóa duy nhất.
-
Typed và untyped XML
Có hai cách để lưu tài liệu XML trong cột có kiểu XML: XML được phân loại (Typed XML) và XML không được phân loại (Untyped XML).
Một thể hiện XML mà nó được kết hợp với một lược đồ được gọi là thể hiện XML được phân loại (Typed XML). Một lược đồ là phần đầu trang của một thể hiện hay tài liệu XML mà nó mô tả cấu trúc và giới hạn nội dung của tài liệu XML bằng cách kết hợp kiểu dữ liệu XML với các loại phần tử và các thuộc tính XML. Sự kết hợp các lược đồ XML với các thể hiện XML hoặc các tài liệu được khuyến khích bởi vì dữ liệu có thể được xác định tính hợp lệ trong khi nó được lưu trữ vào trong cột dữ liệu XML.
Một thể hiện XML không được phân loại (Untyped XML) không có sự kết hợp với một lược đồ XML. Trong trường hợp này, SQL Server không thực hiện việc kiểm tra tính hợp lệ của dữ liệu nhập vào trong cột. Tuy nhiên, nó bảo đảm rằng dữ liệu lưu trữ phải hợp khuôn dạng. Dữ liệu XML không được phân loại có thể được tạo và lưu trữ hoặc trong các cột của bảng hoặc trong các biến, nó phụ thuộc vào sự cần thiết và phạm vi của dữ liệu. Dữ liệu XML đã được sử dụng trong ví dụ 23 và 34 là dữ liệu XML không phân loại.
Bước đầu tiên sử dụng XML được phân loại là đăng kí một lược đồ. Câu lệnh CREATE XML SCHEMA COLLECTION được minh họa trong ví dụ 25.
Câu lệnh CREATE XML SCHEMA COLLECTION tạo ra một tập hợp của các lược đồ, một vài trong số đó có thể được sử dụng để kiểm tra tính hợp lệ dữ liệu Typed XML với tên của tập hợp đó. Đây là ví dụ chỉ ra một lược đồ có tên là CricketSchemaCollection được thêm vào trong CSDL. Lược đồ này nhập vào như là một giá trị chuỗi. Khi một lược đồ được đăng ký, lược đồ đó có thể được sử dụng trong các thể hiện mới của kiểu dữ liệu XML.
Ví dụ 26 tạo một bảng chứa một cột có kiểu XML và chỉ định một lược đồ cho cột.
Ví dụ 26:
Để tạo một hàng mới với kiểu dữ liệu XML, câu lệnh INSERT có thể được sử dụng như trong ví dụ 27.
Ví dụ 27:
Biến có kiểu XML có thể được tạo bằng cách chỉ định tên của tập hợp lược đồ. Cụ thể, trong ví dụ 28, một biến team được khai báo có kiểu XML với tên lược đồ là CricketSchemaCollection. Câu lệnh SET được sử dụng để gán một phân đoạn XML cho biến.
Ví dụ 28:
-
XQUERY
Sau khi dữ liệu XML được lưu trữ bằng cách sử dụng kiểu XML, chúng có thể được truy vấn và truy xuất sử dụng ngôn ngữ có tên là XQuery. XML Query hay XQuery là ngôn ngữ truy vấn mới, nó kết hợp các cú pháp quen thuộc với người lập trình, người làm việc với CSDL quan hệ, và ngôn ngữ Xpath, để chọn các đoạn hoặc các tập hợp riêng lẻ của các phần tử từ tài liệu XML. XQuery có thể truy vấn dữ liệu XML. Để truy vấn một thể hiện XML được lưu trong một biến hoặc cột kiểu XML, các phương thức kiểu XML được sử dụng. Ví dụ, một biến có kiểu XML được khai báo và truy vấn bằng cách sử dụng các phương thức thuộc kiểu dữ liệu XML. Người lập trình cần phải truy vấn tài liệu XML, và điều này bao gồm cả việc thay đổi tài liệu XML theo định dạng được yêu cầu. XQuery có thể thực hiện các truy vấn phức tạp dựa vào nguồn dữ liệu XML trên web.
Một số phương thức thuộc kiểu XML được sử dụng với XQuery :
Đây là phương thức được sử dụng để xác định nếu một hoặc nhiều nút được chỉ định xuất hiện trong tài liệu XML. Nó trả về 1 nếu biểu thức XQuery trả về ít nhất một nút, trả về 0 nếu biểu thức XQuery được đánh giá là kết quả trống và trả về NULL nếu biểu thức đó chứa giá trị NULL.
Ví dụ 29 minh học cách sử dụng phương thức exist(). Nó giả sử rằng các bản ghi đã được chèn vào trong bảng.
Ví dụ 29:
Đây sẽ là kết quả trả về, chỉ các giá trị TeamID nào mà có phần tử Team được chỉ định trong TeamInfo.
Hình 11.6 : Phương thức exist()
Phương thức query() có thể được sử dụng để truy xuất hoặc toàn bộ nội dung của tài liệu XML hoặc các đoạn có chọn lựa trong tài liệu. Ví dụ 30 chỉ cách sử dụng phương thức query().
Ví dụ 30:
Kết quả:
Hình 11.7 : Phương thức query()
Phương thức value() có thể được sử dụng để trích các giá trị vô hướng từ kiểu XML. Ví dụ 31 minh họa phương thức này.
Ví dụ 31:
Kết quả:
Hình 11.8: Phương thức value()
TÓM TẮT BÀI HỌC
-
Kiểu dữ liệu là một thuộc tính được sử dụng để chỉ định loại dữ liệu của một đối tượng và kích thước lưu trữ của nó.
-
SQL Server 2005 hỗ trợ 3 kiểu dữ liệu: kiểu dữ liệu hệ thống, kiểu dữ liệu người dùng và kiểu dữ liệu được định nghĩa trong ngôn ngữ lập trình.
-
Đặc tính cho phép NULL của một cột xác định rằng các hàng trong bảng có thể chứa giá trị null đối với cột đó. SQL Server sử dụng các từ khóa NULL và NOT NULL để mô tả về đặc tính này.
-
Từ khóa DEFAULT được sử dụng để chỉ định một giá trị mặc định cho một cột khi giá trị của cột đó chưa biết. Trong khi đó, thuộc tính IDENTITY được sử dụng để tạo ra một cột định danh, nó chứa các giá trị tuần tự được tự động phát sinh, và để nhận dạng tính duy nhất của mỗi hàng trong bảng.
-
Một ràng buộc là một luật mà nó được gán cho một hoặc tập hợp các cột trong bảng để đảm bảo tính toàn vẹn.
-
Kiểu dữ liệu XML được sử dụng để lưu trữ tài liệu và các phân đoạn XML trong CSDL SQL Server.
-
XQuery là ngôn ngữ được sử dụng để truy vấn dữ liệu XML được lưu trữ trong CSDL XML.
|
Chia sẻ với bạn bè của bạn: