MySQL - Phiên Bản

Xin chào, những người đam mê cơ sở dữ liệu! Tôi rất vui mừng dẫn dắt các bạn vào thế giới thú vị của các phiên bản MySQL. Là một giáo viên máy tính gần gũi với nhiều năm kinh nghiệm, tôi sẽ đảm bảo rằng chúng ta sẽ khám phá chủ đề này một cách dễ dàng và vui vẻ. Vậy, hãy lấy sổ tay ảo của bạn và cùng nhau lặn sâu vào!

MySQL - Versions

Phiên Bản MySQL

MySQL, giống như một chai rượu ngon, ngày càng trở nên tốt hơn theo từng phiên bản. Kể từ khi ra đời vào năm 1995, nó đã trải qua nhiều bản cập nhật và cải tiến. Hãy cùng nhanh chóng回顾 qua một số phiên bản lớn:

MySQL 3.23 (2001)

Phiên bản này đã tạo ra bước ngoặt, giới thiệu các tính năng như:

  • Full-text indexing
  • Replication
  • Query cache

MySQL 4.0 (2003)

Phiên bản này mang lại một số tính năng thú vị:

  • Union queries
  • Subqueries
  • GIS functions

MySQL 5.0 (2005)

Một mốc son quan trọng, giới thiệu:

  • Stored procedures
  • Views
  • Triggers

MySQL 5.5 (2010)

Phiên bản này tập trung vào cải thiện hiệu suất:

  • InnoDB jako domyślny silnik magazynowania
  • Semi-synchronous replication

MySQL 5.6 (2013)

Cải thiện hiệu suất và khả năng mở rộng:

  • Online DDL operations
  • Improved replication performance

MySQL 5.7 (2015)

Phiên bản cập nhật quan trọng với:

  • JSON support
  • Enhanced security features
  • Performance schema improvements

MySQL 8.0 (2018)

Phiên bản lớn nhất gần đây, mà chúng ta sẽ khám phá chi tiết hơn ngay sau này!

Tính Năng Được Thêm Trong MySQL 8.0

MySQL 8.0 giống như siêu anh hùng của các phiên bản cơ sở dữ liệu, được trang bị nhiều sức mạnh và khả năng mới. Hãy cùng khám phá một số tính năng thú vị nhất:

1. Kho tài liệu

MySQL bây giờ hỗ trợ lưu trữ và truy vấn tài liệu JSON, làm cho nó trở thành cơ sở dữ liệu hỗn hợp quan hệ và tài liệu. Dưới đây là một ví dụ đơn giản:

CREATE TABLE products (
id INT PRIMARY KEY,
details JSON
);

INSERT INTO products VALUES (1, '{"name": "Laptop", "price": 999.99, "specs": {"RAM": "16GB", "CPU": "i7"}}');

SELECT JSON_EXTRACT(details, '$.name') AS product_name
FROM products
WHERE JSON_EXTRACT(details, '$.price') < 1000;

Mã này tạo một bảng với một cột JSON, chèn một sản phẩm với chi tiết được ghim, và sau đó truy vấn nó dựa trên một thuộc tính JSON.

2. Hàm cửa sổ

Hàm cửa sổ cho phép bạn thực hiện các phép toán trên một tập hợp các hàng liên quan đến hàng hiện tại. Dưới đây là một ví dụ:

SELECT
product_name,
category,
price,
AVG(price) OVER (PARTITION BY category) AS avg_category_price
FROM products;

Truy vấn này tính toán giá trung bình cho mỗi danh mục bên cạnh giá của từng sản phẩm.

3. Biểu thức bảng thông thường (CTEs)

CTEs làm cho các truy vấn phức tạp dễ đọc hơn. Dưới đây là một ví dụ đơn giản:

WITH high_value_customers AS (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 10000
)
SELECT c.name, c.email
FROM customers c
JOIN high_value_customers hvc ON c.id = hvc.customer_id;

Truy vấn này trước tiên xác định một CTE cho khách hàng có giá trị cao, sau đó sử dụng nó trong truy vấn chính.

4. Chỉ mục vô hình

Bây giờ bạn có thể làm cho các chỉ mục vô hình để kiểm tra:

ALTER TABLE customers ALTER INDEX idx_email INVISIBLE;

Điều này cho phép bạn kiểm tra tác động của một chỉ mục mà không cần xóa bỏ nó vật lý.

5. Cải thiện vai trò SQL

MySQL 8.0 giới thiệu một hệ thống kiểm soát truy cập dựa trên vai trò mạnh mẽ hơn:

CREATE ROLE 'app_developer', 'app_read', 'app_write';

GRANT SELECT ON app_db.* TO 'app_read';
GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';

GRANT 'app_read', 'app_write' TO 'app_developer';

CREATE USER 'jane'@'localhost' IDENTIFIED BY 'password123';
GRANT 'app_developer' TO 'jane'@'localhost';

Ví dụ này tạo các vai trò với các quyền khác nhau và gán chúng cho một người dùng.

Tính Năng Bị Hết Sử Dụng Trong MySQL 8.0

Như MySQL phát triển, một số tính năng trở nên lỗi thời. Đó giống như dọn tủ quần áo - đôi khi bạn cần tạo không gian cho những điều mới! Dưới đây là một số tính năng bị hết sử dụng trong MySQL 8.0:

Tính năng bị hết sử dụng Thay thế/Alterative
Tùy chọn --skip-symbolic-links --skip-symlink
Hàm ENCRYPT() Sử dụng AES_ENCRYPT()
Hàm DES_ENCRYPT()DES_DECRYPT() Sử dụng AES_ENCRYPT() và AES_DECRYPT()
Hàm FOUND_ROWS() Sử dụng SELECT với điều khoản LIMIT
SQL_CALC_FOUND_ROWS Sử dụng SELECT COUNT(*)

Nhớ rằng, "hết sử dụng" không có nghĩa là các tính năng này đã biến mất ngay lập tức. Nó giống như một lời cảnh báo thân thiện rằng chúng có thể không còn tồn tại trong các phiên bản tương lai, vì vậy tốt nhất là nên bắt đầu sử dụng các thay thế.

Cuối cùng, MySQL 8.0 giống như một cây kéo Thụy Sĩ cho quản lý cơ sở dữ liệu - đầy đủ các công cụ mạnh mẽ mới trong khi tinh chỉnh một số công cụ cũ. Khi bạn tiếp tục hành trình MySQL của mình, hãy nhớ rằng mỗi phiên bản mang lại những khả năng và cải tiến mới. Hãy luôn tò mò, tiếp tục thử nghiệm và quan trọng nhất, hãy vui vẻ với cơ sở dữ liệu của bạn!

Credits: Image by storyset