Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách sử dụng Chế độ xem trong Cơ sở dữ liệu MySQL

Đ xem trong MySQL là một truy vấn được đặt tên có thể được kích hoạt để hiển thị dữ liệu được lưu trữ trong các bảng khác. Nói cách khác, khung nhìn là các bảng ảo do người dùng định nghĩa. Chế độ xem có thể được sử dụng để:

  • Tăng cường bảo mật cơ sở dữ liệu. Nếu cơ sở dữ liệu của bạn chứa thông tin nhạy cảm cần được bảo mật, việc sử dụng dạng xem sẽ giúp bạn tách biệt dữ liệu. Chế độ xem có thể được tạo bằng tập hợp kết quả xác định trước và bạn chỉ có thể cấp cho người dùng quyền truy cập vào chế độ xem đó, thay vì bảng chứa thông tin nhạy cảm.
  • Di chuyển logic nghiệp vụ phức tạp sang máy chủ cơ sở dữ liệu. Thay vì viết mã logic phần mềm được sử dụng thường xuyên trong các máy khách khác nhau, một nhà phát triển có thể chuyển logic vào cấp cơ sở dữ liệu bằng cách sử dụng một dạng xem. Ví dụ:một chế độ xem có thể được tạo để hiển thị các phân loại khách hàng tùy thuộc vào tổng doanh số của họ.
  • Giảm thiểu sự phân tán dữ liệu. Một chế độ xem có thể kết hợp các kết quả từ các bảng khác nhau và chỉ hiển thị các cột có liên quan khi được gọi.

Trong hướng dẫn này, bạn sẽ học:

  • Cấu trúc tổng hợp của chế độ xem MySQL như thế nào.
  • Cách tạo chế độ xem MySQL.
  • Cách gọi một chế độ xem MySQL.
  • Cách tạo khung nhìn trong MySQL.

Trước khi bạn bắt đầu

Để làm theo hướng dẫn này, hãy đảm bảo bạn có những điều sau:

  1. Một Linode, mà bạn chạy phần mềm MySQL. Bạn có thể làm theo hướng dẫn Bắt đầu với Linode để cung cấp Linode.

  2. Phần mềm máy chủ MySQL (hoặc MariaDB) được cài đặt trên Linode của bạn. Vui lòng tham khảo phần MySQL, trong đó có các hướng dẫn mô tả cách cài đặt MySQL trên một số bản phân phối Linux.

Chuẩn bị Cơ sở dữ liệu

Trước khi bạn tạo dạng xem MySQL của mình, hãy tạo một cơ sở dữ liệu mẫu, xác định một vài bảng và điền chúng với một số dữ liệu trước:

  1. SSH cho Linode của bạn. Sau đó, nhập lệnh này để đăng nhập vào MySQL với tư cách người dùng gốc:

    mysql -u root -p
    

    Khi được nhắc, hãy nhập mật khẩu gốc của máy chủ MySQL của bạn và nhấn Enter để tiếp tục.

    Lưu ý

    Nếu mật khẩu của bạn không được chấp nhận, bạn có thể phải chạy lệnh trước đó với sudo :

    sudo mysql -u root -p
    
  2. Nếu mật khẩu của bạn được chấp nhận, bạn sẽ thấy lời nhắc MySQL:

    
    mysql >
    
    Lưu ý

    Nếu bạn đang sử dụng MariaDB, thay vào đó bạn có thể thấy một lời nhắc như sau:

    
    MariaDB [(none)]>
    
  3. Tiếp theo, chạy lệnh SQL này để tạo cơ sở dữ liệu mẫu có tên sample_database :

    CREATE DATABASE sample_database;
    

    Bạn sẽ thấy kết quả này, xác nhận rằng cơ sở dữ liệu đã được tạo thành công:

    
    Query OK, 1 row affected (0.02 sec)
    
  4. Chọn sample_database cơ sở dữ liệu:

    USE sample_database;
    

    Bạn sẽ thấy kết quả này:

    
    Database changed
    
  5. Chạy lệnh này để tạo customers bảng:

     CREATE TABLE customers
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     customer_name VARCHAR(50)
     ) ENGINE = InnoDB;
    

    Bạn sẽ thấy kết quả này:

    
    Query OK, 0 rows affected (0.07 sec)
    
  6. Tiếp theo, điền customers bảng với ba bản ghi. Chạy INSERT bên dưới từng lệnh một:

    INSERT INTO customers (customer_name) VALUES ('Leslie');
    INSERT INTO customers (customer_name) VALUES ('Andy');
    INSERT INTO customers (customer_name) VALUES ('Ben');
    

    Kết quả bên dưới được hiển thị sau khi mỗi bản ghi được chèn vào:

    
    Query OK, 1 row affected (0.08 sec)
    ...
    
  7. Đảm bảo các bản ghi mẫu đã được chèn vào cơ sở dữ liệu bằng cách chạy SELECT này lệnh:

    SELECT * FROM customers;
    

    Đầu ra này xuất hiện, xác nhận rằng dữ liệu đã được chèn thành công ở bước trước:

    
    +-------------+---------------+
    | customer_id | customer_name |
    +-------------+---------------+
    |           1 | Leslie        |
    |           2 | Andy          |
    |           3 | Ben           |
    +-------------+---------------+
    3 rows in set (0.01 sec)
    
  8. Tiếp theo, tạo sales bàn. Chạy lệnh này:

     CREATE TABLE sales
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     monthly_sales DECIMAL(17,2)
     ) ENGINE = InnoDB;
    

    Kết quả này xuất hiện:

    
    Query OK, 0 rows affected (0.07 sec)
    
  9. Sau đó, thêm một số dữ liệu vào sales bàn. Chạy lần lượt các lệnh này:

    INSERT INTO sales (customer_id, monthly_sales) VALUES ('1','500.27');
    INSERT INTO sales (customer_id, monthly_sales) VALUES ('2','7600.32');
    INSERT INTO sales (customer_id, monthly_sales) VALUES ('3', '25879.63');
    

    Sau khi chèn từng hồ sơ bán hàng, kết quả này sẽ xuất hiện:

    
    Query OK, 1 row affected (0.01 sec)
    ...
    
  10. Tiếp theo, chạy SELECT truy vấn để xác minh rằng dữ liệu bán hàng đã được chèn vào bảng:

    SELECT * FROM sales;
    

    Kết quả này xuất hiện, xác nhận rằng dữ liệu bán hàng đã được chèn thành công ở bước trước:

    
    
    
    
    +-------------+---------------+
    | customer_id | monthly_sales |
    +-------------+---------------+
    |           1 |        500.27 |
    |           2 |       7600.32 |
    |           3 |      25879.63 |
    +-------------+---------------+
    3 rows in set (0.00 sec)
    

Bạn đã xác định cơ sở dữ liệu và các bảng để làm việc. Phần tiếp theo mô tả cú pháp của dạng xem MySQL.

Cú pháp Chế độ xem MySQL

Đây là phiên bản đơn giản hóa của cú pháp chế độ xem MySQL:

    CREATE
    VIEW view_name
    AS select_statement
  • view_name :Tên của khung nhìn MySQL phải được xác định ở đây. Nên sử dụng tên mô tả để bạn có thể nhớ chức năng của khung nhìn sau này.

  • select_statement :Đây là truy vấn SQL được kết hợp với dạng xem đã xác định. Khi chế độ xem được gọi, MySQL chạy truy vấn này để trả về một tập bản ghi.

Tạo chế độ xem MySQL

Phần này trình bày một dạng xem MySQL ví dụ. Chế độ xem này được sử dụng để phân loại khách hàng từ cơ sở dữ liệu mẫu của bạn, tùy thuộc vào số lượng bán hàng hàng tháng của họ.

Đảm bảo bạn đã đăng nhập vào máy chủ MySQL của mình. Sau đó, chạy lệnh bên dưới để tạo customers_membership xem:

CREATE
VIEW customers_membership
AS SELECT sales.customer_id,
customer_name,
(IF(sales.monthly_sales >= 5000, 'PREMIUM', 'BASIC')) as membership
FROM sales
LEFT JOIN customers
ON sales.customer_id = customers.customer_id;

Nếu chế độ xem được tạo thành công, bạn sẽ thấy kết quả hiển thị bên dưới:


Query OK, 0 rows affected (0.01 sec)

Lệnh MySQL ở trên tạo một dạng xem có tên customers_membership tham gia vào customerssales bảng với PRIMARY KEY customer_id . IF(expression, value_if_true, value_if_false) logic câu lệnh được sử dụng để xác định tư cách thành viên của khách hàng từ doanh số hàng tháng của họ:

  • Nếu doanh số bán hàng của khách hàng bằng hoặc trên 5.000, chế độ xem sẽ phân loại khách hàng là PREMIUM thành viên.

  • Ngược lại (nếu doanh số dưới 5,000 ), khách hàng được phân loại là BASIC thành viên.

customers_membership chế độ xem hiện đã được lưu vào cơ sở dữ liệu. Phần tiếp theo trình bày cách gọi một dạng xem MySQL và hiển thị một tập bản ghi mà không cần truy vấn trực tiếp các bảng cơ sở.

Gọi một MySQL View

Phần này cho thấy cách gọi chế độ xem MySQL mà bạn đã tạo ở trên và xác nhận rằng nó hoạt động như mong đợi. Khi một dạng xem được tạo, nó sẽ hiển thị dưới dạng một đối tượng cơ sở dữ liệu và nó có thể được gọi bằng cách sử dụng SELECT tuyên bố.

  1. Để gọi customers_membership xem, chạy:

    SELECT * FROM customers_membership;
    

    Nếu chế độ xem đang hoạt động như mong đợi, bây giờ bạn sẽ thấy danh sách khách hàng có membership đã tạo của họ giá trị dựa trên doanh số bán hàng của họ. Kể từ khi Leslie Doanh số bán hàng của khách hàng dưới 5000 (500,27), chế độ xem xuất ra tư cách thành viên của khách hàng là BASIC . AndyBen Doanh số bán hàng của lần lượt là 7600,32 và 25879,63 và điều này khiến chúng trở thành PREMIUM thành viên:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    +-------------+---------------+------------+
    3 rows in set (0.00 sec)
    
  2. Sau khi dữ liệu bảng cơ sở được cập nhật và bạn gọi lại chế độ xem MySQL, bạn sẽ thấy thông tin mới nhất. Chế độ xem lấy thông tin từ các bảng cơ sở của chúng và chúng không lưu trữ dữ liệu. Để chứng minh cách một chế độ xem lấy thông tin cập nhật từ các bảng cơ sở, hãy thêm một khách hàng khác có tên Rajie cho customers bảng:

    INSERT INTO customers (customer_name) VALUES ('Rajie');
    

    Kết quả này xuất hiện:

    
    Query OK, 1 row affected (0.01 sec)
    
  3. Sau đó, thêm thông tin bán hàng hàng tháng của khách hàng vào bảng bán hàng:

    INSERT INTO sales (customer_id, monthly_sales) VALUES ('4', '147.41');
    

    Kết quả này xuất hiện:

    
    Query OK, 1 row affected (0.01 sec)
    
  4. Tiếp theo, gọi customers_membership xem lại:

    SELECT * FROM customers_membership;
    

    Kết quả bên dưới xuất hiện, xác nhận rằng chế độ xem có thể nhận các thay đổi và lấy thông tin khách hàng mới như mong đợi:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    |           4 | Rajie         | BASIC      |
    +-------------+---------------+------------+
    4 rows in set (0.00 sec)
    

    Như bạn có thể thấy trong tập bản ghi chế độ xem ở trên, bạn hiện có một khách hàng mới tên là Rajie với BASIC thành viên.

Bỏ qua chế độ xem MySQL

Cũng giống như các đối tượng cơ sở dữ liệu khác, bạn có thể xóa các dạng xem nếu không còn cần đến chúng nữa. Đây là cú pháp cơ bản để loại bỏ chế độ xem MySQL:

    DROP VIEW IF EXISTS view_name;
  1. Trước khi bỏ chế độ xem MySQL, trước tiên hãy xác định tên của nó bằng cách chạy lệnh bên dưới:

    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    

    Danh sách tất cả các dạng xem trong cơ sở dữ liệu hiện được chọn sẽ xuất hiện:

    
    +---------------------------+------------+
    | Tables_in_sample_database | Table_type |
    +---------------------------+------------+
    | customers_membership      | VIEW       |
    +---------------------------+------------+
    1 row in set (0.01 sec)
    
  2. Trong trường hợp này, tên của chế độ xem mà bạn muốn loại bỏ là customers_membership . Vì vậy, để xóa nó, hãy chạy:

    DROP VIEW IF EXISTS customers_membership;
    

    Đảm bảo đầu ra bên dưới được hiển thị sau khi chế độ xem bị xóa khỏi cơ sở dữ liệu:

    
    Query OK, 0 rows affected (0.01 sec)
    
    Lưu ý Xin lưu ý, nếu bạn cố gắng xóa chế độ xem MySQL không tồn tại mà không sử dụng IF EXISTS từ khóa, MySQL gặp lỗi.
  3. Khi lệnh từ bước 1 được chạy lại, bây giờ sẽ không có kết quả:

    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    
    
    Empty set (0.000 sec)
    

Thông tin khác

Bạn có thể muốn tham khảo các nguồn sau đây để biết thêm thông tin về chủ đề này. Mặc dù những điều này được cung cấp với hy vọng rằng chúng sẽ hữu ích, xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc kịp thời của các tài liệu được lưu trữ bên ngoài.

  • MySQL - Sử dụng Chế độ xem

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hỗ trợ giao dịch công cụ MyIsam

  2. Lệnh MySQL:Cheat Sheet của các truy vấn MySQL phổ biến

  3. Chuỗi truy vấn MySQL chứa

  4. Cài đặt nhiều phiên bản MySQL trên máy chủ Linux - sử dụng tệp cấu hình MySQL riêng biệt

  5. Làm thế nào để có được ngày hôm qua trong MySQL