Mục đích mysql

Trước tiên, nếu máy bạn chưa có Docker, hãy cài đặt theo hướng dẫn tại. https. // tài liệu. người đóng tàu. com/cài đặt/

Các bước cài đặt

  • Tạo Docker network
  • Khởi tạo Docker container từ Docker image của MySQL
  • Khởi tạo Docker container từ Docker image của phpMyAdmin

1. Tạo Docker network

Việc tạo Docker network giúp các Docker container trong cùng 1 network có thể giao tiếp với nhau thông qua container name

Run command after

docker network create mysql

Lệnh trên sẽ tạo một mạng Docker có tên là mysql. Chúng ta sẽ đặt 2 Docker container chạy MySQL và phpMyAdmin bên trong mạng mysql này

2. Khởi tạo Docker container từ Docker image của MySQL

Trước tiên, hãy tạo một thư mục dùng để lưu dữ liệu của Docker container, ví dụ:. /home/moe/mysql_data

Sau đó, chạy lệnh

docker run --name learn_mysql --network mysql -v /home/moe/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7

in which

  • --name learn_mysql. tên của vùng chứa. Tên này sẽ được sử dụng ở bước sau, khi chúng ta khởi tạo vùng chứa chạy phpMyAdmin
  • --mạng mysql. set this container in network mysql vừa được tạo ở bước 1
  • -v /home/moe/mysql_data. /var/lib/mysql. Tập dữ liệu từ vùng chứa ra bên ngoài thư mục mysql_data mà chúng ta vừa tạo
  • -e MYSQL_ROOT_PASSWORD=123. đặt mật khẩu cho người dùng root. Mỗi máy chủ MySQL khi được khởi động đều sẽ có một người dùng root ban đầu

3. Khởi tạo Docker container từ Docker image của phpMyAdmin

Run command after

docker run --name myadmin -d --network mysql -p 8081:80 -e PMA_HOST=learn_mysql phpmyadmin/phpmyadmin

in which

  • --name myadmin. tên vùng chứa
  • --mạng mysql. set this container into in network mysql. Lúc này 2 container chạy phpMyAdmin và MySQL đều ở trong cùng 1 network
  • -e PMA_HOST=learn_mysql. địa chỉ IP của máy chủ MySQL. Vì chúng ta đã đặt 2 container chạy phpMyAdmin và MySQL trong cùng 1 mạng (mysql) nên chúng ta có thể sử dụng tên container chạy MySQL (learn_mysql) cho biến môi trường này
  • -p 8081. 80. ánh xạ cổng 80 của container với cổng 8081 của máy chủ

Sau khi hoàn thành cả 3 bước trên, chúng ta truy cập vào địa chỉ. http. //máy chủ cục bộ. 8081/, xuất hiện màn hình

Mục đích mysql
Giao diện phpMyAdmin

 

Tại mục ngôn ngữ, bạn có thể chọn ngôn ngữ là Tiếng Việt hoặc Tiếng Anh

Tại mục Đăng nhập, bạn hãy sử dụng tài khoản root, mật khẩu chính là mật khẩu bạn đã đặt cho biến môi trường MYSQL_ROOT_PASSWORD khi khởi động tạo vùng chứa MySQL, như trong bài viết này thì mật khẩu tôi đặt là 123

Lần tới, nếu bạn muốn nhận thông tin tương tự bao gồm tên khách hàng, số séc, ngày thanh toán và số tiền, bạn cần thực hiện lại cùng một truy vấn

Một cách để làm điều này là lưu truy vấn trong một tệp, hoặc. txt hoặc. sql để sau này bạn có thể mở và thực thi nó từ MySQL Workbench hoặc bất kỳ công cụ máy khách MySQL nào khác

Cách tốt hơn để thực hiện việc này là lưu truy vấn trong máy chủ cơ sở dữ liệu và gán tên cho nó. Truy vấn được đặt tên này được gọi là dạng xem cơ sở dữ liệu hoặc đơn giản là dạng xem

Theo định nghĩa, một dạng xem là một truy vấn được đặt tên được lưu trữ trong danh mục cơ sở dữ liệu

Để tạo một view mới, bạn sử dụng câu lệnh

docker run --name learn_mysql --network mysql -v /home/moe/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7
8. Câu lệnh này tạo một chế độ xem

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
0 dựa trên truy vấn ở trên

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)

Khi bạn thực thi câu lệnh

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
1, MySQL sẽ tạo dạng xem và lưu trữ nó trong cơ sở dữ liệu

Giờ đây, bạn có thể tham chiếu dạng xem dưới dạng bảng trong các câu lệnh SQL. Ví dụ: bạn có thể truy vấn dữ liệu từ chế độ xem

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
0 bằng cách sử dụng câu lệnh

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
3

________số 8

Như bạn có thể thấy, cú pháp đơn giản hơn nhiều

Lưu ý rằng một chế độ xem không lưu trữ dữ liệu một cách vật lý. Khi bạn đưa ra câu lệnh

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
4 đối với chế độ xem, MySQL sẽ thực thi truy vấn cơ bản được chỉ định trong định nghĩa của chế độ xem và trả về tập kết quả. Vì lý do này, đôi khi, một dạng xem được gọi là một bảng ảo

MySQL cho phép bạn tạo chế độ xem dựa trên câu lệnh

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
3 truy xuất dữ liệu từ một hoặc nhiều bảng. Ảnh này minh họa chế độ xem dựa trên các cột của nhiều bảng

Mục đích mysql
Mục đích mysql

Ngoài ra, MySQL thậm chí còn cho phép bạn tạo một dạng xem không tham chiếu đến bất kỳ bảng nào. Nhưng bạn sẽ hiếm khi tìm thấy kiểu xem này trong thực tế

Ví dụ: bạn có thể tạo chế độ xem có tên là

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
6 trả về 7 ngày trong tuần bằng cách thực hiện truy vấn sau

docker run --name learn_mysql --network mysql -v /home/moe/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7
2

Và bạn có thể truy vấn dữ liệu từ chế độ xem

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
6 như sau

docker run --name learn_mysql --network mysql -v /home/moe/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7
4

Hình ảnh này cho thấy đầu ra

Mục đích mysql
Mục đích mysql

Ưu điểm của Chế độ xem MySQL

Chế độ xem MySQL mang lại những lợi thế sau

1) Đơn giản hóa truy vấn phức tạp

Chế độ xem giúp đơn giản hóa các truy vấn phức tạp. Nếu bạn có bất kỳ truy vấn phức tạp nào được sử dụng thường xuyên, bạn có thể tạo dạng xem dựa trên truy vấn đó để bạn có thể tham chiếu đến dạng xem đó bằng cách sử dụng câu lệnh

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
3 đơn giản thay vì nhập lại toàn bộ truy vấn

2) Làm cho logic kinh doanh nhất quán

Giả sử bạn phải viết đi viết lại cùng một công thức trong mọi truy vấn. Hoặc bạn có một truy vấn có logic nghiệp vụ phức tạp. Để làm cho logic này nhất quán giữa các truy vấn, bạn có thể sử dụng dạng xem để lưu trữ phép tính và ẩn độ phức tạp

3) Thêm các lớp bảo mật bổ sung

Một bảng có thể để lộ nhiều dữ liệu bao gồm dữ liệu nhạy cảm như thông tin cá nhân và thông tin ngân hàng

Bằng cách sử dụng chế độ xem và đặc quyền, bạn có thể giới hạn dữ liệu mà người dùng có thể truy cập bằng cách chỉ hiển thị dữ liệu cần thiết cho họ

Ví dụ: bảng

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
9 có thể chứa thông tin SSN và địa chỉ, chỉ bộ phận nhân sự mới có thể truy cập được

Để hiển thị thông tin chung như tên, họ và giới tính cho bộ phận Quản trị chung (GA), bạn có thể tạo chế độ xem dựa trên các cột này và cấp cho người dùng của bộ phận GA quyền xem chứ không phải toàn bộ bảng

CREATE VIEW customerPayments AS SELECT customerName, checkNumber, paymentDate, amount FROM customers INNER JOIN payments USING (customerNumber);

Code language: SQL (Structured Query Language) (sql)
9

4) Kích hoạt khả năng tương thích ngược

Trong các hệ thống cũ, chế độ xem có thể kích hoạt khả năng tương thích ngược

Giả sử, bạn muốn bình thường hóa một bảng lớn thành nhiều bảng nhỏ hơn. Và bạn không muốn tác động đến các ứng dụng hiện tại tham chiếu bảng

Trong trường hợp này, bạn có thể tạo một dạng xem có tên giống với tên của bảng dựa trên các bảng mới để tất cả các ứng dụng có thể tham chiếu dạng xem như thể đó là một bảng

Lưu ý rằng một dạng xem và bảng không thể có cùng tên, vì vậy bạn cần bỏ bảng trước khi tạo một dạng xem có cùng tên với bảng đã xóa