Các chức năng MySQL

MySQL – Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) phổ biến

Dễ sử dụng: MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ nổi tiếng với tính dễ sử dụng. Chỉ cần có kiến thức cơ bản về SQL, bạn có thể xây dựng và tương tác với MySQL bằng những câu lệnh đơn giản.

Bảo mật cao: MySQL cung cấp một lớp bảo mật mạnh mẽ để bảo vệ dữ liệu nhạy cảm, với các mật khẩu được mã hóa, giúp ngăn chặn sự xâm nhập từ bên ngoài.

Kiến trúc máy khách/máy chủ: MySQL hoạt động dựa trên kiến trúc máy khách/máy chủ, bao gồm một máy chủ cơ sở dữ liệu và nhiều máy khách. Các máy khách này giao tiếp với máy chủ để truy vấn dữ liệu, lưu thay đổi, và thực hiện các tác vụ khác.

Miễn phí và dễ dàng tải xuống: MySQL là phần mềm miễn phí, dễ dàng tải xuống từ trang web chính thức, phù hợp cho nhiều đối tượng người dùng.

Khả năng mở rộng: MySQL có khả năng xử lý một lượng lớn dữ liệu, lên đến 50 triệu hàng hoặc hơn. Giới hạn kích thước tệp mặc định là khoảng 4 GB, nhưng có thể tăng lên tối đa 8 TB.

Tương thích trên nhiều hệ điều hành: MySQL tương thích với nhiều hệ điều hành, bao gồm Windows, Linux, và các biến thể UNIX như Solaris, AIX, và FreeBSD. Ngoài ra, MySQL cho phép các máy khách chạy trên cùng hoặc khác máy tính với máy chủ thông qua mạng cục bộ hoặc Internet.

Hỗ trợ khôi phục dữ liệu: MySQL cho phép khôi phục giao dịch và cam kết các thay đổi, giúp phục hồi dữ liệu khi gặp sự cố.

Hiệu suất cao: Với kiến trúc công cụ lưu trữ độc đáo, MySQL mang lại hiệu suất cao, nhanh chóng, đáng tin cậy, và tiết kiệm chi phí.

Tính linh hoạt: MySQL hỗ trợ nhiều ứng dụng nhúng, mang lại tính linh hoạt cao cho người dùng.

Năng suất cao: MySQL sử dụng các trigger, thủ tục lưu trữ và chế độ xem, giúp các nhà phát triển nâng cao năng suất và hiệu quả công việc.

Nhược điểm / nhược điểm của MySQL

Phiên bản MySQL nhỏ hơn 5.0: Các phiên bản MySQL trước 5.0 không hỗ trợ các tính năng như ROLE, COMMIT và thủ tục lưu trữ, hạn chế khả năng quản lý và bảo mật của hệ thống.

Hỗ trợ kích thước cơ sở dữ liệu hạn chế: MySQL không tối ưu trong việc hỗ trợ kích thước cơ sở dữ liệu rất lớn, làm ảnh hưởng đến hiệu suất khi xử lý lượng dữ liệu khổng lồ.

Hiệu suất giao dịch: MySQL không xử lý giao dịch hiệu quả, dễ dẫn đến hỏng dữ liệu trong quá trình thực hiện, đặc biệt khi so sánh với các hệ thống cơ sở dữ liệu trả phí khác.

Thiếu công cụ phát triển và gỡ lỗi: So với các cơ sở dữ liệu trả phí, MySQL bị cho là thiếu một bộ công cụ phát triển và gỡ lỗi mạnh mẽ, khiến việc phát triển và duy trì ứng dụng trở nên khó khăn hơn.

Không hỗ trợ ràng buộc kiểm tra SQL: MySQL không hỗ trợ ràng buộc kiểm tra SQL, điều này có thể gây ra những hạn chế trong việc đảm bảo tính toàn vẹn của dữ liệu.

Kiểu dữ liệu trong MySQL

Việc xác định đúng kiểu dữ liệu cho các trường trong một bảng là yếu tố quan trọng để tối ưu hóa hiệu suất của cơ sở dữ liệu MySQL. Bạn nên chọn kiểu dữ liệu và kích thước trường phù hợp với nhu cầu thực tế để tránh lãng phí tài nguyên. Ví dụ, nếu bạn chỉ cần lưu trữ 2 ký tự, đừng định nghĩa trường với chiều rộng lên tới 10 ký tự. Sử dụng kích thước trường vừa đủ giúp cơ sở dữ liệu hoạt động hiệu quả hơn và cải thiện tốc độ truy vấn.

Trong MySQL, dữ liệu có thể được chia thành ba nhóm chính:

  1. Numeric (Số học): Bao gồm các kiểu dữ liệu dùng để lưu trữ các giá trị số như INT, FLOAT, DOUBLE, và DECIMAL.
  2. Date and Time (Ngày và Giờ): Bao gồm các kiểu dữ liệu dùng để lưu trữ thông tin về ngày, giờ như DATE, TIME, DATETIME, và TIMESTAMP.
  3. String (Chuỗi): Bao gồm các kiểu dữ liệu dùng để lưu trữ chuỗi ký tự như CHAR, VARCHAR, TEXT, và BLOB.

Kiểu dữ liệu Numeric

MySQL sử dụng tất cả các loại dữ liệu số ANSI SQL tiêu chuẩn, vì vậy nếu bạn đã từng tiếp cận với một hệ thống cơ sở dữ liệu khác, kiểu dữ liệu numeric tương tự như vậy.

Danh sách sau đây cho thấy các loại dữ liệu số phổ biến và mô tả của chúng:

Kiểu dữ liệuMô tả
INTMột số nguyên với kích cỡ thông thường, có thể là signed hoặc unsigned. Nếu có dấu, thì dãy giá trị có thể là từ -2147483648 tới 2147483647, nếu không dấu thì dãy giá trị là từ 0 tới 4294967295. Bạn có thể xác định một độ rộng lên tới 11 chữ số.
TINYINTMột số nguyên với kích cỡ rất nhỏ, có thể là signed hoặc unsigned. Nếu có dấu, thì dãy giá trị có thể là từ -128 tới 127, nếu không dấu thì dãy giá trị là từ 0 tới 255. Bạn có thể xác định một độ rộng lên tới 4 chữ số.
MEDIUMINTMột số nguyên với kích cỡ trung bình, có thể là signed hoặc unsigned. Nếu có dấu, thì dãy giá trị có thể là từ -8388608 tới 8388607, nếu không dấu thì dãy giá trị là từ 0 tới 16777215. Bạn có thể xác định một độ rộng lên tới 9 chữ số.
BIGINTMột số nguyên với kích cỡ lớn, có thể là signed hoặc unsigned. Nếu có dấu, thì dãy giá trị có thể là từ -9223372036854775808 tới 9223372036854775807, nếu không dấu thì dãy giá trị là từ 0 tới 18446744073709551615. Bạn có thể xác định một độ rộng lên tới 20 chữ số.
FLOAT(M, D)Một số thực dấu chấm động không dấu. Bạn có thể định nghĩa độ dài hiển thị (M) và số vị trí sau dấy phảy (D). Điều này là không bắt buộc và sẽ có mặc định là 10,2: với 2 là số vị trí sau dấu phảy và 10 là số chữ số (bao gồm các phần thập phân). Phần thập phân có thể lên tới 24 vị trí sau dấu phảy đối với một số FLOAT.
DOUBLE(M, D)Một số thực dấu chấm động không dấu. Bạn có thể định nghĩa độ dài hiển thị (M) và số vị trí sau dấy phảy (D). Điều này là không bắt buộc và sẽ có mặc định là 16,4: với 4 là số vị trí sau dấu phảy và 16 là số chữ số (bao gồm các phần thập phân). Phần thập phân có thể lên tới 53 vị trí sau dấu phảy đối với một số DOUBLE. REAL là đồng nghĩa với DOUBLE.
DECIMAL(M, D)Một kiểu khác của dấu chấm động không dấu. Mỗi chữ số thập phân chiếm 1 byte. Việc định nghĩa độ dài hiển thị (M) và số vị trí sau dấy phảy (D) là bắt buộc. NUMERIC là một từ đồng nghĩa cho DECIMAL.

Kiểu dữ liệu Date và Time trong MySQL

Kiểu dữ liệu Date và Time được phân loại thành:

Kiểu dữ liệuMô tả
DATEMột date trong định dạng YYYY-MM-DD, giữa 1000-01-01 và 9999-12-31. Ví dụ, ngày 25 tháng 12 năm 2015 sẽ được lưu ở dạng 2015-12-25.
DATETIMEMột tổ hợp Date và Time trong định dạng YYYY-MM-DD HH:MM:SS, giữa 1000-01-01 00:00:00 và 9999-12-31 23:59:59. Ví dụ, 3:30 chiều ngày 25 tháng 12, năm 2015 sẽ được lưu ở dạng 2015-12-25 15:30:00.
TIMESTAMPMột Timestamp từ giữa nửa đêm ngày 1/1/1970 và 2037. Trông khá giống với định dạng DATETIME trước, khác biệt ở chỗ không có dấu gạch nối giữa các số. Ví dụ, 3:30 chiều ngày 25 tháng 12, năm 2015 sẽ được lưu dưới dạng 20151225153000 ( YYYYMMDDHHMMSS ).
TIMELưu time trong định dạng HH:MM:SS.
YEAR(M)Lưu 1 năm trong định dạng 2 chữ số hoặc 4 chữ số. Nếu độ dài được xác định là 2 (ví dụ: YEAR(2)), YEAR có thể từ 1970 tới 2069 (70 tới 69). Nếu độ dài được xác định là 4, YEAR có thể từ 1901 tới 2155. Độ dài mặc định là 4.

Kiểu dữ liệu chuỗi trong MySQL

Ngoài các kiểu dữ liệu số hoặc kiểu dữ liệu date và time, thì còn một kiểu dữ liệu mà bạn thường sử dụng nhất trong  MySQL là kiểu dữ liệu chuỗi. Dưới đây liệt kê các kiểu dữ liệu chuỗi và phần miêu tả của chúng trong MySQL:

Kiểu dữ liệuMô tả
CHAR(M)Một chuỗi có độ dài cố định có độ dài từ 1 tới 255 ký tự (ví dụ CHAR(5)). Nếu giá trị thật của một trường kiểu Char không bằng với độ dài khai báo thì phần thiếu bên phải của nó sẽ được thêm bằng các kí tự trắng một cách tự động. Định nghĩa độ dài là không bắt buộc, giá trị mặc định là 1.
VARCHAR(M)Dữ liệu kiểu chuỗi có độ dài thay đổi, có độ dài từ 1 đến 255 kí tự (ví dụ Varchar(24)). Bạn phải định nghĩa độ dài khi tạo một trường VARCHAR.
DATE 
BLOB hoặc TEXTTrường kiểu này có độ dài tối đa 65535 kí tự. BLOBs là viết tắt của “Binary Large Objects”, và được sử dụng để lưu trữ một lượng lớn dữ liệu nhị phân như các bức ảnh hoặc các loại tập tin khác. Với TEXT, trường cũng lưu trữ được một lượng lớn dữ liệu. Điểm khác nhau giữa chúng là: khi sắp xếp và so sánh dữ liệu đã lưu trữ thì với BLOBs là phân biệt kiểu chữ, còn với TEXT là không phân biệt kiểu chữ. Bạn không phải xác định độ dài với BLOBs hoặc TEXT.
TINYBLOB hoặc TINYTEXTMột cột BLOB hoặc TEXT với độ dài tối đa là 255 ký tự. Bạn không cần xác định độ dài với TINYBLOB hoặc TINYTEXT.
MEDIUMBLOB hoặc MEDIUMTEXTMột cột BLOB hoặc TEXT với độ dài tối đa là 16777215 ký tự. Bạn không cần xác định độ dài với MEDIUMBLOB hoặc MEDIUMTEXT.
LONGBLOB hoặc LONGTEXTMột cột BLOB hoặc TEXT với độ dài tối đa là 4294967295 ký tự. Bạn không cần xác định độ dài với LONGBLOB hoặc LONGTEXT.
ENUMKhi định nghĩa một trường kiểu này, tức là, ta đã chỉ ra một danh sách các đối tượng mà trường phải nhận (có thể là Null). Ví dụ, nếu ta muốn một trường nào đó chỉ nhận một trong các giá trị “A” hoặc “B” hoặc “C” thì ta phải định nghĩa kiểu ENUM cho nó như sau: ENUM (‘A’, ‘B’, ‘C’). Và chỉ có các giá trị này (hoặc NULL) có thể xuất hiện trong trường đó.