intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

SQL Server 2000 : Bảng ảo (Virtual table - view) Phần 1

Chia sẻ: Pham Long | Ngày: | Loại File: DOC | Số trang:13

157
lượt xem
9
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nếu bạn là người lập trình đã từng làm việc quen thuộc với cơ sở dữ liệu Microsoft Access thì bạn đều biết đến đối tượng truy vấn chọn lựa (Select query) trong Microsoft Access. Loại truy vấn này cho phép bạn chọn ra dữ liệu từ một hoặc nhiều bảng dùng để hiển thị, thống kê hoặc cho phép người sử dụng có thể cập nhật dữ liệu trực tiếp vào bên dưới các bảng mà nội dung của truy vấn có tham chiếu đến. Giống như Microsoft Access, Microsoft SQL Server cũng có một đối tượng cho phép bạn có thể lựa chọn các cột, các...

Chủ đề:
Lưu

Nội dung Text: SQL Server 2000 : Bảng ảo (Virtual table - view) Phần 1

  1. SQL Server 2000 : Bảng ảo (Virtual table - view) - Phần 1 Nếu bạn là người lập trình đã từng làm vi ệc quen thu ộc với cơ sở dữ liệu Microsoft Access thì bạn đều biết đến đ ối tượng truy vấn chọn lựa (Select query) trong Microsoft Access. Loại truy vấn này cho phép bạn chọn ra dữ liệu từ một hoặc nhiều bảng dùng để hiển thị, thống kê ho ặc cho phép người sử dụng có thể cập nhật dữ liệu trực tiếp vào bên dưới các Tạo mới bảng ảo bảng mà nội dung của truy vấn có tham chiếu đến. Giống như Microsoft Access, Microsoft SQL Server cũng có m ột đ ối t ượng cho phép bạn có thể lựa chọn các cột, các dòng dữ liệu chính xác từ m ột ho ặc nhi ều b ảng và sau đó hiển thị ra cho người sử dụng xem hoặc cập nhật trên các dữ li ệu đó. Đ ối tượng này chính là đối tượng bảng ảo (view) mà bạn sẽ tìm hiểu trong phần này. 1/- Khái niệm về bảng ảo : Bảng ảo thực chất là một đối tượng mà bên trong nó ch ỉ lưu tr ữ duy nh ất m ột câu lệnh SELECT dùng để chỉ định các cột, các dòng dữ liệu bên dưới các bảng d ữ li ệu mà nó chọn lựa ra để hiển thị cho người sử dụng xem hoặc cập nhật. Với nguyên t ắc này, bạn có thể hiển thị ra đúng các thông tin tối thi ểu mà người sử d ụng c ần dùng, không cần thiết phải hiển thị ra tất cả các thông tin hiện đang được lưu tr ữ bên trong bảng (đáp ứng được tính bảo mật thông tin). Ngoài ra còn giúp nh ững ng ười s ử d ụng dễ dàng truy xuất đến các thông tin mà họ đang c ần, khi đó đ ơn gi ản s ẽ thông qua việc thực hiện các truy vấn trực tiếp đến các bảng ảo mà không c ần quan tâm các thông tin này đang được lưu trữ trong những bảng dữ liệu nào (đáp ứng đ ược tính d ễ sử dụng). Trong thực tế, bạn thường tạo ra các bảng ảo để lưu trữ các thông tin cho các loại báo cáo đơn giản hoặc dữ liệu của các màn hình nhập liệu phức tạo có liên kết dữ li ệu với nhiều bảng khác hoặc các màn hình tra cứu thông tin cho các người sử dụng. Lưu ý : bảng ảo hoàn toàn không lưu trữ dữ liệu một cách riêng l ẻ. Các d ữ li ệu đ ược hiển thị trong bảng ảo sẽ được lấy từ bên dưới dữ liệu c ủa các bảng c ơ s ở (underlying table) trong cơ sở dữ liệu hiện hành. Tuy nhiên bạn vẫn có th ể c ập nh ật (thêm, sửa, xóa) dữ liệu trong các bảng ảo như là đang c ập nhật dữ li ệu trong các bảng cơ sở. 2/- Tạo bảng ảo bằng tiện ích Enterprise Manager : Để tạo bảng ảo, bạn có thể sử dụng tiện ích Enterprise Manager. Các bước tạo bảng ảo như sau :
  2. Bước 1 : Khởi động tiện ích Enterprise Manager. Chọn chức năng New View … trong thực đơn tắt sau khi nhấn chuột phải trên đối tượng Views. Tạo mới bảng ảo trong Enterprise Manager Bước 2 : Trong màn hình thiết kế dữ liệu bảng ảo, nhấn vào biểu tượng Add Table trên thanh công cụ để đưa các bảng dữ liệu làm dữ liệu nguồn cho bảng ảo.
  3. Thiết kế dữ liệu bảng ảo Màn hình này có cách trình bày gần giống như màn hình tạo truy vấn bằng ví dụ ( QBE – Query by Example) trong Microsoft Access, nó sẽ giúp cho bạn phát sinh n ội dung của câu lệnh SELECT bằng các hành động kéo thả chuột của chính bạn trên màn hình này. Bước 3 : Trong màn hình chọn các dự liệu cho bảng ảo, bằng cách ch ọn vào ô ki ểm tra (check box) phía trước tên của các cột hoặc thao tác kéo thả (drag drop) để ch ọn các c ột muốn hiển thị dữ liệu trong bảng ảo. Sửa lại bí danh (alias) các cột để gợi nhớ.
  4. Chỉ định các cột hiển thị dữ liệu bên trong bảng ảo Bước 4 : Nhấn vào biểu tượng Save trên thanh công cụ và gõ vào tên của bảng ảo, nhấn OK để kết thúc quá trình tạo bảng ảo bằng tiện ích Enterprise Manager. Nhập tên bảng ảo muốn lưu lại Sau khi tạo xong bảng ảo, bạn cũng có thể quay lại để sửa đ ổi n ội dung câu l ệnh SELECT trong bảng ảo bằng cách chọn chức năng Design View để quay lại màn hình thiết kế dữ liệu bảng ảo trước đó hoặc chọn chức năng Properties để có thể sửa trực tiếp câu lệnh SELECT bên trong bảng ảo. Các chức năng này hiển thị trong thực đơn tắt sau khi nhấn chuột phải trên tên của bảng ảo cần sửa đổi.
  5. Hiển thị câu lệnh SELECT trong bảng ảo 3/- Xem và cập nhật dữ liệu bảng ảo : Sau khi tạo xong bảng ảo, bạn có thể xem dữ li ệu mà b ảng ảo ch ứa đ ựng có đúng theo mong muốn hay không bằng cách thực hiện chức năng Open View (Return all) trong thực đơn tắt sau khi nhấn chuột phải trên tên của bảng ảo cần xem dữ liệu. Hoặc thực hiện câu lệnh sau : Ví dụ : Để xem nội dung dữ liệu của bảng ảo vw_DONDH_NHACC vừa tạo ở trên, bạn thực hiện câu lệnh như sau : Việc cập nhật dữ liệu bảng ảo có thể được thực hiện bằng các l ệnh INSERT, UPDATE, DELETE thông qua việc tham chiếu đến tên các bảng ảo. Mặc dù dữ li ệu trong bảng ảo được lấy ra từ nhiều bảng khác nhau nhưng vi ệc c ập nh ật d ữ li ệu trên bảng ảo chỉ được phép tác động trên một và chỉ một bảng mà thôi. Tuy nhiên đ ối v ới bảng ảo có tính chất thống kê tổng hợp (sử dụng các hàm tính toán : MIN, MAX, SUM, COUNT, …) thì dữ liệu bên trong bảng ảo ch ỉ có tính ch ất đ ể xem (không cho phép cập nhật dữ liệu).
  6. Ví dụ : Để thêm thông tin của một số đơn đặt hàng mới trên bảng ảo vw_DONDH_NHACC, bạn thực hiện câu lệnh sau : Nhận xét thấy rằng các thông tin còn lại của bảng ảo như là : tên nhà cung c ấp, đi ện thoại và địa chỉ của nhà cung cấp không cần thi ết phải cung c ấp khi nh ập d ữ li ệu vào bởi vì dữ liệu chỉ được thêm trên bảng DONDH mà thôi. Ví dụ : Để sửa lại thông tin mã nhà cung cấp là C02 của số đơn đặt hàng D007, bạn thực hiện câu lệnh sau : 4/- Hủy bỏ bảng ảo : Giống như các đối tượng khác, bạn có cũng được phép hủy bỏ các b ảng ảo sau khi tạo ra chúng nếu không còn tiếp tục sử dụng nữa. Các bảng được tham chi ếu trong câu lệnh SELECT của bảng ảo sẽ không bị hủy bỏ. Để hủy bỏ bảng ảo, bạn chọn chức năng Delete trong thực đơn tắt sau khi nhấn chuột phải trên tên bảng ảo mu ốn hủy trong tiện ích Enterprise Manager. Sau đó chọn nút Drop All để đồng ý hủy bỏ.
  7. Hộp thoại xác nhận đồng ý hủy bỏ bảng ảo Hoặc có thể sử dụng lệnh DROP VIEW với cú pháp sau : Ví dụ : Để hủy bỏ bảng ảo vw_DONDH_NHACC, bạn thực hiện câu lệnh sau : Cẩn thận sử dụng lệnh này vì sau khi hủy bỏ bảng ảo, n ếu các lệnh trong truy vấn nào đó vẫn còn tham chiếu tên của bảng ảo thì khi nó thực hi ện, bạn sẽ nhận đ ược thông báo lỗi của hệ thống như bên dưới. SQL Server 2000 : Bảng ảo (Virtual table - view) - Phần cuối Nếu bạn là người lập trình đã từng làm vi ệc quen thu ộc với cơ sở dữ liệu Microsoft Access thì bạn đều biết đến đ ối tượng truy vấn chọn lựa (Select query) trong Microsoft Access.
  8. 5/- Tạo mới bảng ảo bằng lệnh CREATE VIEW : Cú pháp : Trong đó : • Tên bảng ảo : tên của bảng ảo muốn tạo mới. • Tên các cột : danh sách tên các cột sẽ được sử dụng về sau bên trong bảng ảo khi tham chiếu đến các cột trong bảng ảo. Thông thường được sử dụng trong bảng ảo có sử dụng các hàm tính toán, các biểu thức tính toán, ho ặc các c ột trùng tên trong các bảng khác nhau. • Từ khóa WITH ENCRYPTION : dùng để mã hóa nội dungc âu lệnh SELECT bên trong bảng ảo. Không ai có thể biết được nội dung c ủa câu lệnh SELECT trong bảng ảo là gì. • Câu lệnh SELECT : câu lệnh truy vấn chọn lựa dữ liệu từ một ho ặc nhi ều bảng có liên kết để hiển thị dữ liệu trong bảng ảo. Một số từ khóa có trong câu l ệnh SELECT chuẩn sẽ không được dùng kèm theo trong khi tạo bảng ảo như là : ORDER BY (dùng để sắp xếp dữ liệu), COMPUTE (thống kê dữ liệu cuối cùng), COMPUTE BY (thống kê dữ liệu theo từng nhóm), SELECT INFO (sao chép cấu trúc và dữ liệu sang bảng dữ liệu mới). Thông thường bạn nên thực hiện câu lệnh SELECT này trước để xem kết quả đúng như mong muốn hay không trước khi đưa nó lồng vào câu l ệnh CREATE VIEW. • Từ khóa WITH CHECK OPTION : dùng để ngăn cản các thao tác cập nhật dữ liệu (thêm, sửa) tác động trực tiếp vào bảng ảo có làm ảnh hưởng đến d ữ li ệu đ ối v ới các bảng ảo có sử dụng mệnh đề WHERE trong câu lệnh SELECT. Ví dụ : Để tạo bảng ảo đơn giản có tên là vw_DONDH_NHACC dùng để hiển thị thông tin tất cả các cột trong bảng DONDH (đơn đặt hàng) và hai c ột địa ch ỉ và tên nhà cung cấp trong bảng NHACC (nhà cung cấp), bạn thực hiện câu lệnh CREATE VIEW như sau :
  9. Khi muốn xem nội dung của câu lệnh SELECT bên trong bảng ảo, bạn có thể sử dụng thủ tục nội tại hệ thống có tên sp_helptext để xem. Cú pháp của nó khá đơn gi ản được minh họa trực tiếp bằng ví dụ bên dưới. Ví dụ : Để xem nội dung câu lệnh SELECT của bảng ảo vừa được tạo ở ví dụ trên, bạn gọi thực hiện thủ tục hệ thống sp_helptext như sau : Hoặc Kết quả trả về : Tuy nhiên khi bạn sử dụng từ khóa WITH ENCRYPTION bên trong câu lệnh CREATE VIEW lúc tạo ra bảng ảo thì khi đó nội dung c ủa câu lệnh SELECT sẽ được mã hóa và bạn không thể nào xem được nội dung c ủa câu l ệnh SELECT cho đến khi phải hủy bỏ và tạo lại bảng bảo bằng lệnh CREATE VIEW mà không sử dụng từ khóa WITH ENCRYPTION. Ví dụ :
  10. Để tạo bảng ảo có tên là vw_DONDH_NHACC giống ví dụ trên nh ưng có b ổ sung thêm cột điện thoại và từ khóa WITH ENCRYPTION để chủ động mã hóa nội dung câu lệnh SELECT bên trong bảng ảo, bạn thực hiện câu lệnh như sau : Sau đó thực hiện lại câu lệnh để xem nội dung câu lệnh SELECT bên trong bảng ảo. Kết quả trả về là một thông báo : "Nội dung đối tượng đã được mã hóa". Khi thực hiện các bảng ảo dùng để tính toán dữ liệu cho các th ống kê, bạn th ường s ử dụng các hàm tính toán SUM, MIN, MAX, COUNT, AVG đi kèm theo câu l ệnh SELECT. Tuy nhiên dữ liệu của các bảng ảo dạng này chỉ có tính chất th ống kê ho ặc hiển thị dữ liệu cho người sử dụng xem mà không cho phép các hành đ ộng c ập nh ật dữ liệu trực tiếp ngay trên bảng ảo. Để chỉ định đến các cột dữ li ệu tổng hợp này bạn có thể sử dụng hai cách : hoặc đặt tên các cột ngay sau lệnh CREATE VIEW hoặc sử dụng bí danh để chỉ tên cột trong câu lệnh SELECT. Ví dụ : Để tạo một bảng ảo có tên là vw_TINH_TONGSLDAT dùng để tính tổng số lượng đặt hàng của các vật tư. Dữ liệu hiển thị gồm các cột : mã vật t ư, tên vật t ư và t ổng số lượng đặt, bạn thực hiện câu lệnh CREATE VIEW để tạo bảng ảo như sau :
  11. Hoặc Để hiểu rõ về từ khóa WITH CHECK OPTION bên trong câu lệnh CREATE VIEW, bạn xem xét các ví dụ bên dưới : Ví dụ : Để tạo một bảng ảo có tên là vw_VATTU_TIVI gồm các c ột d ữ li ệu c ủa b ảng VATTU : mã vật tư, tên vật tư, đơn vị tính nhưng các dòng dữ li ệu ch ỉ lọc ra các lo ại hàng ti vi. Bạn thực hiện câu lệnh CREATE VIEW như sau : Kế tiếp bạn sử dụng lệnh INSERT để thêm một hàng hóa mới thuộc loại máy hát nhạc vào bảng ảo. Câu lệnh này được thực hiện thành công. Nhưng khi xem lại dữ liệu của bảng ảo bằng câu lệnh SELECT bên dưới bạn sẽ ngạc nhiên vì khi đó sẽ không thấy hiển thị của mẫu tin vừa thêm mới ở trên.
  12. Tuy nhiên khi xem dữ liệu của bảng VATTU, bạn vẫn thấy r ằng d ữ li ệu đã đ ược l ưu trữ bên dưới vảng VATTU. Điều này sẽ làm cho một số người sử dụng rất khó hi ểu. Lý do mà d ữ li ệu không được hiển thị bên trong bảng ảo bởi vì mẫu tin mà bạn thêm vào đã không th ỏa đi ều kiện lọc bên trong mệnh đề WHERE của câu lệnh SELECT trong bảng ảo. (mã của hàng hóa mới thêm vào không bắt đầu bằng chữ TV mà là chữ MH). Do đó để tránh những hành động có thể làm cho người sử dụng khó hi ểu, Microsoft SQL Server cho phép bạn ngăn cản các mẫu tin không th ỏa đi ều ki ện WHERE được cập nhật vào bảng ảo bằng mệnh đề WITH CHECK OPTION. Trở lại ví dụ trên nhưng bây giờ bạn có thêm từ khóa WITH CHECK OPTION trong câu lệnh tạo ra bảng ảo. Kế tiếp khi bạn sử dụng lệnh INSERT để thêm một hàng hóa mới thuộc thoại máy hát nhạc vào bảng ảo. Hoặc sửa đổi mã của hàng hóa ti vi Sony 14 inches thành "TI14’ b ằng câu l ệnh UPDATE như bên dưới.
  13. Mặc dù dữ liệu và cú pháp các câu lệnh này hoàn toàn đúng nhưng nó sẽ không đ ược thực hiện thành công bởi vì mã vật tư của nó đã vi phạm mệnh đ ề WHERE (không bắt đầu bằng chữ TV). Tóm lại khi sử dụng mệnh đề WITH CHECK OPTION trong câu lệnh CREATE VIEW dùng để ngăn cản các hành động cập nhật dữ li ệu trong b ảng ảo không th ỏa điều kiện trong mệnh đề WHERE của câu lệnh SELECT. 6/- Sửa đổi nội dung bảng ảo : Màn hình thuộc tính của bảng ảo cho phép bạn có thể sửa đ ổi n ội dung câu l ệnh SELECT trong bảng ảo. Bên cạnh đó bạn cũng có thể sửa đổi nội dung câu l ệnh SELECT trong bảng ảo bằng lệnh ALTER VIEW. Cú pháp của câu lệnh này có phần hoàn toàn giống như câu lệnh CREATE VIEW đã được trình bày trong bài trước. Cú pháp : Trong đó : • Tên bảng ảo, tên các cột : giống như câu lệnh CREATE VIEW. • Câu lệnh SELECT mới : nội dung câu lệnh truy vấn chọn lựa mới. Thay vì phải sử dụng lệnh ALTER VIEW, bạn có thể sử dụng lệnh DROP VIEW để hủy bỏ bảng ảo rồi sau đó tạo lại mới bằng lệnh CREATE VIEW. Tuy nhiên nếu làm cách này thì các quyền hạn đã gán trên đối tượng bảng ảo sẽ bị mất hết.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2