Các khái niệm về hệ quản trị csdl



tải về 1.1 Mb.
trang13/15
Chuyển đổi dữ liệu17.08.2016
Kích1.1 Mb.
#20914
1   ...   7   8   9   10   11   12   13   14   15

Bảng 10.2: Bảng Hotels

2. Viết truy vấn hiển thị giá cho thuê phòng trung bình theo mỗi khách sạn?

3. Sửa lại truy vấn ở câu 2 và lưu tập kết quả gồm giá trị trung bình, tên khách sạn và số chi nhánh của mỗi khách sạn ở các thành phố khác nhau trong bảng HotelRankings. Hiển thị dữ liệu trong bảng HotelRankings theo thứ tự sắp xếp giảm dần?

4. Viết truy vấn hiển thị tổng số khách sạn trong mỗi thành phố mà thành phố đó phải có trên 3 khách sạn?

5. Một khách hàng cần tìm một khách sạn có phòng hạng sang giá từ 2000USD đến 3000USD. Viết truy vấn trả lại tất cả các khách sạn thỏa điều kiện trên.

6. Một hội thảo về răng diễn ra hằng năm cần đặt trước một số lượng lớn phòng. Thư ký hội thảo cần chọn hoặc một khách sạn ở New York hoặc ở New Jersey hoặc bất kỳ khách sạn nào có từ 30 đến 40 phòng. Viết một truy vấn thỏa điều kiện nêu trên.



CHƯƠNG 11

TẠO BẢNG VÀ SỬ DỤNG CÁC KIỂU DỮ LIỆU

Mục tiêu :


Kết thúc chương này, các bạn sẽ có thể:

  • Định nghĩa các kiểu dữ liệu và phân loại chúng trong SQL Server 2005.

  • Hướng dẫn cách tạo, hiệu chỉnh và xóa bảng trong một CSDL SQL Server.

  • Hướng dẫn cách thêm, hiệu chỉnh, và xóa các cột và các ràng buộc trong một bảng.

  • Mô tả cách làm việc với các typed và untyped XML.

  • Giải thích cách tạo, sử dụng và xem giản đồ XML.

  • Giải thích cách sử dụng XQuery để truy xuất dữ liệu XML.



    1. Giới thiệu:

Đối tượng quan trọng nhất trong SQL Server 2005 là bảng. Bảng trong SQL Server 2005 chứa các cột, mỗi cột có thể chứa dữ liệu và được chỉ định kiểu và kích thước. Trong bài học này, chúng ta sẽ tìm hiểu các kiểu dữ liệu khác nhau được cung cấp trong SQL Server 2005 và cách sử dụng chúng. Ngoài ra, chúng ta sẽ tìm hiểu cách tạo, hiệu chỉnh và di chuyển bảng. Bài học này giới thiệu kiểu dữ liệu XML mới và mô tả cách làm việc với dữ liệu XML trong SQL Server 2005. Giới thiệu ngắn gọn ngôn ngữ XQuery là ngôn ngữ được sử dụng để truy vấn dữ liệu XML.

    1. Các kiểu dữ liệu

Kiểu dữ liệu là một thuộc tính, nó chỉ định kiểu của dữ liệu và dung lượng có thể lưu trữ của một đối tượng, ví dụ như kiểu dữ liệu numeric, character, monetary … Mỗi một cột được định nghĩa để lưu trữ một kiểu dữ liệu riêng biệt, dữ liệu của kiểu khác không thể lưu trữ trong nó được. Theo cách này, kiểu dữ liệu đảm bảo ràng buộc dữ liệu. Giả sử một cột có tên là BasicSalarry trong bảng Employee, để bảo đảm rằng chỉ có kiểu dữ liệu số được phép nhập vào, chúng ta định nghĩa kiểu dữ diệu của nó là interger. Nếu chúng ta cố gắng nhập vào kiểu dữ liệu kí tự, nó sẽ báo không thành công.

  1. Các kiểu dữ liệu trong SQL Server 2005

Các đối tượng khác nhau trong SQL Server 2005 như cột, biến, các biểu thức đều được chỉ định kiểu dữ liệu. SQL Server 2005 hỗ trợ 3 loại kiểu dữ diệu sau:

  1. Kiểu dữ liệu hệ thống (System-defined data types).

Chúng được cung cấp bởi SQL Server 2005 .

Phân loại

Kiểu dữ liệu

Mô tả

Exact Numbers

Int

Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 4 byte trong bộ nhớ máy tính. Nó thường được sử dụng để lưu trữ giá trị số nguyên

smallint

Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 2 byte trong bộ nhớ máy tính. Nó có thể lưu trữ các số nguyên từ -32768 đến 32767.

bigint

Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 8 byte trong bộ nhớ máy tính. Nó có thể lưu trữ các số nguyên từ -2^63 (-9223372036854775807) đến 2^63-1 .

numeric

Một cột được khai báo kiểu dữ liệu này sẽ có độ chính xác cao và có thể co dãn kích thước lưu trữ trong bộ nhớ.

money

Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 8 byte trong bộ nhớ máy tính. Biểu diễn giá trị dữ liệu tiền tệ từ (-2^63/10000) đến (2^63-1).

Approximate numerics

float

Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 8 byte trong bộ nhớ máy tính. Biễu diễn các số chấm động từ -1.79E+308 đến 1.79E+308.

real

Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 4 byte trong bộ nhớ máy tính. Biễu diễn các số chấm động có độ chính xác từ -3.4E+38 đến 3.40E+38.

Date and time

datetime

Biễu diễn ngày và giờ. Được lưu trữ như là 2 số integer, chiếm 8 byte.

smalldatetime

Biểu diễn ngày và time.

Character String

Char

Lưu trữ dữ liệu kí tự, nó được cố định kích thước và không hỗ trợ Unicode.

Varchar

Lưu trữ dữ liệu kí tự, độ dài có thể thay đổi và không hỗ trợ Unicode.

Text

Lưu trữ dữ liệu kí tự, độ dài có thể thay đổi và không hỗ trợ Unicode.

Unicode types

Nchar

Lưu trữ dữ liệu kí tự, nó được cố định kích thước và có hỗ trợ Unicode.

Nvarchar

Lưu trữ dữ liệu kí tự, độ dài có thể thay đổi và có hỗ trợ Unicode.

Các kiểu khác

timestamp

Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 8 byte trong bộ nhớ máy tính. Nó chứa các số binary tự động phát sinh (mỗi hàng là một số duy nhất).

Binary(n)

Lưu trữ dữ liệu binary có độ dài cố định với độ dài tối đa là 8000 byte.

Varbinary(n)

Lưu trữ dữ liệu binary có độ đài thay đổi với độ dài tối đa là 8000byte.

Image

Lưu trữ dữ liệu binary có độ đài thay đổi với độ dài tối đa là (2^30-1) byte.

uniqueidentifier

Một cột được khai báo kiểu dữ liệu này sẽ sử dụng 16 byte trong bộ nhớ máy tính. Ngoài ra, nó lưu trữ một GUID (Globally Unique Identifier)

Bảng 11.1 Các kiểu dữ liệu hệ thống trong SQL Server 2005

  1. Kiểu dữ liệu người dùng (Alias data types)

Là kiểu dữ liệu được tạo ra dựa trên kiểu dữ liệu hệ thống. Một ví dụ điển hình sử dụng kiểu dữ liệu người dùng đó là khi có nhiều bảng lưu trữ cùng kiểu dữ liệu trong một cột và có cùng đặc điểm cũng như cùng độ dài, có thể rỗng . Trong trường hợp đó, kiểu dữ liệu người dùng có thể được tạo ra và được sử dụng phổ biến trong tất cả các bảng.

Kiểu dữ liệu người dùng có thể được tạo bằng cách sử dụng câu lệnh CREATE TYPE.

Cú pháp như sau:

Trong đó:



  • schema_name là tên của giản đồ mà kiểu dữ liệu người dùng đang được tạo ra.

  • Type_name là tên kiểu dữ liệu người dùng.

  • Base_type là tên của kiểu dữ liệu hệ thống cơ sở.

  • Precisionscale chỉ ra độ chính xác và độ co dãn đối với kiểu dữ liệu numeric.

  • Null | not null qui định kiểu dữ liệu có cho phép chưa giá trị null hay không.

Ví dụ 1 chỉ ra cách tạo một kiểu dữ liệu người dung sử dụng CREATE TYPE.

Ví dụ 1:


Kết quả :





Hình 11.1: Tạo kiểu dữ liệu người dùng

  1. Kiểu dữ liệu được định nghĩa trong ngôn ngữ lập trình

Là các kiểu dữ liệu được tạo ra bằng cách sử dụng ngôn ngữ lập trình, chúng được hỗ trợ trong .Net Framework.

    1. Tạo bảng

Trong bài học này sẽ thảo luận cách tạo bảng, sử dụng kiểu dữ liệu hệ thống trong các cột ngay tại thời điểm bảng được tạo hoặc trong lúc chỉnh sửa bảng và các thuộc tính, đặc trưng khác nhau sử dụng với bảng.

  1. Câu lệnh CREATE TABLE

Câu lệnh CREATE TABLE được sử dụng để tạo bảng trong SQL Server 2005

Cú pháp:


Trong đó:



    • database_name là tên CSDL mà bảng được tạo ra.

    • schema_name là tên lược đồ, mà bảng mới được tạo ra thuộc về lược đồ đó.

    • table_name là tên bảng mới được tạo ra.

::=column_name

    • 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 …



  1. 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:




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

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

  1. 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ể

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

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


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



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



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


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

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

      1. 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:



      1. 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:





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

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



      1. 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:



      1. 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 :



  • exist()

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

  • query()

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

  • value()

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.




Каталог: files
files -> Sạt-đe rằng: Nầy là lời phán của Đấng có bảy vì thần Đức Chúa Trời và bảy ngôi sao
files -> HƯỚng dẫn càI ĐẶt và SỬ DỤng phần mềm tạo bài giảng e-learning
files -> VIỆn chăn nuôi trịnh hồng sơn khả NĂng sản xuất và giá trị giống của dòng lợN ĐỰc vcn03 luậN Án tiến sĩ NÔng nghiệp hà NỘI 2014
files -> ĐẠi học quốc gia hà NỘi trưỜng đẠi học khoa học tự nhiên nguyễn Thị Hương XÂy dựng quy trình quản lý CÁc công trìNH
files -> PHỤ LỤC 2 TỔng hợp danh mục tài liệu tham khảO
files -> BÁo cáo quy hoạch vùng sản xuất vải an toàn tỉnh bắc giang đẾn năM 2020 (Thuộc dự án nâng cao chất lượng, an toàn sản phẩm nông nghiệp và phát triển chương trình khí sinh học ) Cơ quan chủ trì
files -> BỘ TÀi nguyên và MÔi trưỜng
files -> 1. Mục tiêu đào tạo: Mục tiêu chung

tải về 1.1 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   7   8   9   10   11   12   13   14   15




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương