2010-07-27 30 views
11

Các chế độ xem trong MySQL là gì? Quan điểm của họ là gì và tần suất chúng được sử dụng trong thế giới thực.Các chế độ xem trong MySQL là gì?

Tôi là một lời giải thích của giáo dân, xin hãy làm ví dụ nếu có thể để giúp tôi hiểu!

Cảm ơn bạn trước ;-)

Trả lời

10

Bình thường xem là không có gì nhiều hơn thì queryable truy vấn.

Ví dụ:

Bạn có hai bảng, đơn đặt hàng và khách hàng, đơn đặt hàng có các lĩnh vực id, customer_id, performance_date và khách hàng có id, first_name, last_name.

Bây giờ cho phép nói rằng bạn muốn hiển thị thứ tự id, ngày hiệu suất và tên khách hàng lại với nhau thay vì phát hành truy vấn này:

SELECT o.id as order_id, c.first_name + ' ' + c.last_name as customer_name, 
      o.performance_date 
FROM  orders o inner join customers c 

bạn có thể tạo truy vấn như một cái nhìn và đặt tên là orders_with_customers, trong ứng dụng của bạn bây giờ bạn có thể đưa ra truy vấn

SELECT * 
FROM  orders_with_customer 

Một lợi ích là trừu tượng, bạn có thể thay đổi cách bạn lưu tên khách hàng, như in tên đệm và chỉ thay đổi truy vấn lượt xem. Tất cả các ứng dụng đã sử dụng chế độ xem tiếp tục làm như vậy nhưng bao gồm tên đệm ngay bây giờ.

0

Họ là một viết tắt cho bộ lọc thông thường.

Giả sử bạn có bảng hồ sơ với cột đã xóa. Thông thường, bạn sẽ không quan tâm đến các bản ghi đã xóa và do đó bạn có thể tạo một khung nhìn có tên là Records để lọc ra các bản ghi đã xóa khỏi bảng AllRecords.

Điều này sẽ làm cho mã của bạn được dọn sạch vì bạn không phải thêm/thêm deleted != 1 vào mọi tuyên bố.

SELECT * FROM Records 

sẽ trả về tất cả các bản ghi chưa xóa.

0

Nói cách đơn giản

Trong SQL, một cái nhìn là một bảng ảo dựa trên kết quả-set của một SQL tuyên bố.

Chế độ xem có chứa hàng và cột, chỉ như một bảng thực. Các trường trong chế độ xem là các trường từ một hoặc nhiều bảng thực trong cơ sở dữ liệu.

Bạn có thể thêm các hàm SQL, WHERE và JOIN vào một khung nhìn và hiển thị dữ liệu như thể dữ liệu đến từ một bảng duy nhất.

Source

Trong addtion vào đó, bạn có thể chèn các hàng trong một tiềm ẩn table từ một view với điều kiện chỉ có một bảng được giới thiệu bởi quan điểm và cột mà không được gọi trong giao diện cho phép null.

0

Chế độ xem là cách xác định trước các truy vấn nhất định. Nó có thể được truy vấn giống như một bảng, được định nghĩa bởi một truy vấn chứ không phải là một tập dữ liệu trên đĩa. Truy vấn nó cho phép bạn truy vấn kết quả của bảng.

Trong hầu hết các trường hợp, truy vấn xem có thể được xem là tương đương với việc sử dụng truy vấn xác định của khung nhìn dưới dạng truy vấn phụ trong truy vấn chính của bạn. Chế độ xem cho phép truy vấn ngắn hơn và mô đun hơn (vì các phần phổ biến được xác định riêng trong chế độ xem). Họ cũng cung cấp cơ hội tối ưu hóa (mặc dù không phải tất cả các cơ sở dữ liệu đều làm như vậy; tôi không chắc liệu MySQL có cung cấp bất kỳ tối ưu hóa nào để làm cho khung nhìn nhanh hơn hay không).

Nếu bạn cập nhật các bảng bên dưới, các truy vấn đối với chế độ xem sẽ tự động phản ánh những thay đổi đó.

2

Đơn giản: lượt xem là các bảng ảo.

Chế độ xem dựa trên các truy vấn SELECT trên bảng "thực", nhưng sự khác biệt là lượt xem không lưu trữ thông tin không giống như bảng thực. Một khung nhìn chỉ tham chiếu đến các bảng và kết hợp chúng theo cách mà SELECT nói chúng. Điều này làm cho các truy vấn thường được sử dụng đơn giản hơn rất nhiều.

Đây là một ví dụ đơn giản dành cho bạn. Giả sử bạn có một bảng nhân viên và một bảng các phòng ban, và bạn muốn xem mức lương của họ. Trước tiên, bạn có thể tạo chế độ xem cho mức lương.

CREATE VIEW SALARIES 
AS 
SELECT e.name, 
     e.salary, 
     d.name 
FROM employees AS e, deparments as d 
WHERE e.depid = d.depid 
ORDER BY e.salary DESC 

Truy vấn này liệt kê tên của nhân viên, tiền lương và bộ phận của họ và yêu cầu họ bằng tiền lương theo thứ tự giảm dần. Khi bạn đã làm điều này bạn có thể sử dụng các truy vấn như:

SELECT * from SALARIES 

Trên một quy mô lớn hơn, bạn có thể làm cho một cái nhìn mà tính toán mức lương trung bình của người lao động và danh sách những người có mức lương đó là ít hơn mức lương trung bình. Trong cuộc sống thực, các truy vấn này phức tạp hơn nhiều.

1

Bạn có thể coi chế độ xem là bảng được tạo trực tiếp. Trong truy vấn của bạn, nó hoạt động giống như một bảng bình thường nhưng thay vì được lưu trữ trên đĩa, nó được tạo khi đang cần thiết khi nó là cần thiết từ một câu lệnh SQL được định nghĩa khi tạo một khung nhìn.

Để tạo một cái nhìn, sử dụng:

CREATE VIEW first_names AS SELECT first_name FROM people WHERE surname='Smith' 

Sau đó bạn có thể sử dụng quan điểm này cũng giống như một bảng thông thường. Bí quyết là khi bạn cập nhật bảng, khung nhìn first_names cũng sẽ được cập nhật vì nó chỉ là kết quả từ câu lệnh SELECT.

truy vấn này:

SELECT * FROM first_names 

sẽ trả lại tất cả những cái tên đầu tiên của người có tên Smith trong người bảng. Nếu bạn cập nhật bảng người và chạy lại truy vấn, bạn sẽ thấy kết quả được cập nhật.

Về cơ bản, bạn có thể thay thế chế độ xem bằng câu lệnh SELECT lồng nhau. Tuy nhiên, quan điểm có một số ưu điểm:

  • ngắn truy vấn - lồng câu SELECT làm cho truy vấn còn
  • Cải thiện khả năng đọc - nếu xem có một cái tên hợp lý, truy vấn là dễ dàng hơn để hiểu
  • tốc độ tốt hơn - câu lệnh SELECT của khung nhìn được lưu trữ trong công cụ cơ sở dữ liệu và được phân tích cú pháp trước, do đó nó không cần phải được chuyển từ máy khách và được phân tích lặp đi lặp lại
  • Caching và tối ưu hóa - công cụ cơ sở dữ liệu có thể cache xem và thực hiện các tối ưu hóa khác
Các vấn đề liên quan