Data Types (kiểu dữ liệu) trong MySQL
- 25-03-2023
- Toanngo92
- 0 Comments
Trong MySQL, kiểu dữ liệu đề cập đến loại dữ liệu có thể được lưu trữ trong một cột cụ thể của bảng. Nó ẹxác định phạm vi giá trị có thể được lưu trữ trong một cột và các thao tác có thể được thực hiện trên các giá trị đó. MySQL hỗ trợ nhiều kiểu dữ liệu khác nhau như kiểu dữ liệu số, chuỗi, ngày/giờ và không gian. Việc lựa chọn kiểu dữ liệu phụ thuộc vào bản chất của dữ liệu được lưu trữ và các thao tác cần được thực hiện trên đó. Chọn kiểu dữ liệu thích hợp có thể cải thiện hiệu suất và hiệu quả của cơ sở dữ liệu.
Danh sách các kiểu dữ liệu hệ thống MySQL
Mục lục
Kiểu dữ liệu số (Numeric Data Types)
Đây là kiểu dữ liệu tính toán được trong MySQL, có các kiểu dữ liệu như sau:
Kiểu dữ liệu | Mô tả |
BIT(size) | Một kiểu giá trị bit. Số lượng bit trên mỗi giá trị được chỉ định trong kích thước. elà 1. |
TINYINT(size) | Một số nguyên rất nhỏ. Phạm vi có dấu là từ -128 đến 127. Phạm vi unsiged (không dấu) là từ 0 đến 255. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255) |
BOOL | Giá trị 0 được coi là sai, giá trị khác 0 được coi là đúng. |
BOOLEAN | Tương tự bool |
SMALLINT(size) | Một số nguyên nhỏ. Phạm vi có dấu là từ -32768 đến 32767. Phạm vi không dấu là từ 0 đến 65535. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255) |
MEDIUMINT(size) | Một số nguyên trung bình. Phạm vi có dấu là từ -8388608 đến 8388607. Phạm vi không dấu là từ 0 đến 16777215. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255) |
INT(size) | Một số nguyên trung bình. Phạm vi có dấu là từ -2147483648 đến 2147483647. Phạm vi có dấu là từ 0 đến 4294967295. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255) |
INTEGER(size) | Tương tự INT(size) |
BIGINT(size) | Một số nguyên lớn. Phạm vi có dấu là từ -9223372036854775808 đến 9223372036854775807. Phạm vi không dấu là từ 0 đến 18446744073709551615. Tham số kích thước chỉ định chiều rộng hiển thị tối đa (là 255) |
FLOAT(size, d) | Một số thực. Tổng số chữ số được chỉ định trong kích thước. Số chữ số sau dấu thập phân được chỉ định trong tham số d. Cú pháp này không được dùng trong MySQL 8.0.17 và nó sẽ bị xóa trong các phiên bản MySQL trong tương lai |
FLOAT(p) | Một số thực. MySQL sử dụng giá trị p để xác định nên sử dụng FLOAT hay DOUBLE cho kiểu dữ liệu kết quả. Nếu p từ 0 đến 24, kiểu dữ liệu sẽ trở thành FLOAT(). Nếu p từ 25 đến 53, kiểu dữ liệu trở thành DOUBLE() |
DOUBLE(size, d) | Một số thực kích thước bình thường. Tổng số chữ số được chỉ định trong kích thước. Số chữ số sau dấu thập phân được chỉ định trong tham số d |
DECIMAL(size, d) | Một số điểm cố định (số đằng sau dâu phẩy động) chính xác. Tổng số chữ số được chỉ định trong kích thước. Số chữ số sau dấu thập phân được chỉ định trong tham số d. Số lượng tối đa cho kích thước là 65. Số lượng tối đa cho d là 30. Giá trị mặc định cho kích thước là 10. Giá trị mặc định cho d là 0. |
DEC(size, d) | Tương tự DECIMAL(size, d) |
Kiểu dữ liệu chuỗi (String Data Types)
Kiểu dữ liệu | Mô tả |
CHAR(size) | Một chuỗi độ dài CỐ ĐỊNH (có thể chứa các chữ cái, số và ký tự đặc biệt). Tham số kích thước chỉ định độ dài cột theo ký tự – có thể từ 0 đến 255. Mặc định là 1 |
VARCHAR(size) | Một chuỗi có độ dài BIẾN THIÊN (có thể chứa các chữ cái, số và ký tự đặc biệt). Tham số kích thước chỉ định độ dài chuỗi tối đa tính bằng ký tự – có thể từ 0 đến 65535 |
BINARY(size) | Bằng với CHAR(), nhưng lưu trữ các chuỗi byte nhị phân. Tham số kích thước chỉ định độ dài cột theo byte. Mặc định là 1 |
VARBINARY(size) | Bằng với VARCHAR(), nhưng lưu trữ các chuỗi byte nhị phân. Tham số kích thước chỉ định độ dài cột tối đa tính bằng byte. |
TINYBLOB | Dùng cho BLOB (Binary Large Objects). Độ dài tối đa: 255 byte |
TINYTEXT | Lưu trữ một chuỗi có độ dài tối đa 255 ký tự |
TEXT(size) | Lưu trữ một chuỗi có độ dài tối đa là 65.535 byte |
BLOB(size) | Dùng cho BLOB (Binary Large Objects). Độ dài tối đa 65.535 byte dữ liệu |
MEDIUMTEXT | Lưu trữ một chuỗi có độ dài tối đa 16.777.215 ký tự |
MEDIUMBLOB | Dùng cho BLOB (Binary Large Objects). Độ dài tối đa 16.777.215 byte dữ liệu |
LONGTEXT | Lưu trữ một chuỗi có độ dài tối đa 4.294.967.295 ký tự |
LONGBLOB | Dùng cho BLOB (Đối tượng lớn nhị phân). Độ dài tối đa 4.294.967.295 byte dữ liệu |
ENUM(val1, val2, val3, …) | Một đối tượng chuỗi chỉ có thể có một giá trị, được chọn từ danh sách các giá trị có thể. Bạn có thể liệt kê tối đa 65535 giá trị trong danh sách ENUM. Nếu một giá trị được chèn không có trong danh sách, một giá trị trống sẽ được chèn vào. Các giá trị được sắp xếp theo thứ tự bạn nhập chúng |
SET(val1, val2, val3, …) | Một đối tượng chuỗi có thể có 0 hoặc nhiều giá trị, được chọn từ danh sách các giá trị có thể. Bạn có thể liệt kê tối đa 64 giá trị trong danh sách SET |
Kiểu dữ liệu ngày tháng (Date and Date time Data Types)
MySQL cũng cung cấp các kiểu dữ liệu liên quan đến thời gian giúp lưu trữ và làm việc với ngày tháng và thời gian dễ dàng hơn. Khi lưu dữ liệu ở dạng này, chúng ta có thể truy vấn dữ liệu theo từng phần riêng lẻ như theo ngày, theo tháng và theo năm, hay thậm chi là truy vấn kết hơp cả ngày tháng năm.
Nếu muốn lưu trữ ngày, tháng và năm thì chọn kiểu Date, lưu trữ đầy đủ bao gồm giờ phút giây thì có thể sử dụng Datetime và chỉ lưu trữ chỉ giờ phút giây thì chọn time. Ngoài ra có thêm kiểu timestamp dùng lưu trữ thời gian theo dạng số tính từ năm 1970.
Kiểu dữ liệu | Mô tả |
DATE | Lưu trữ dữ liệu ngày. Định dạng: YYYY-MM-DD. Phạm vi được hỗ trợ là từ ‘1000-01-01’ đến ‘9999-12-31’ |
DATETIME | Lưu trữ kết hợp ngày và thời gian. Định dạng: YYYY-MM-DD hh:mm:ss. Phạm vi được hỗ trợ là từ ‘1000-01-01 00:00:00’ đến ‘9999-12-31 23:59:59’. Thêm DEFAULT và ON UPDATE trong định nghĩa cột để tự động khởi tạo và cập nhật ngày giờ hiện tại |
TIMESTAMP | Lưu trữ dấu thời gian (timestamp). Các giá trị timestamp được lưu trữ dưới dạng số giây kể từ Kỷ nguyên Unix (‘1970-01-01 00:00:00’ UTC). Định dạng: YYYY-MM-DD hh:mm:ss. Phạm vi được hỗ trợ là từ ‘1970-01-01 00:00:01’ UTC đến ‘2038-01-09 03:14:07’ UTC. Có thể chỉ định tự động khởi tạo và cập nhật ngày giờ hiện tại bằng cách sử dụng DEFAULT CURRENT_TIMESTAMP và ON UPDATE CURRENT_TIMESTAMP trong định nghĩa cột |
TIME | Lưu trữ giờ phút giây. Định dạng: hh:mm:ss. Phạm vi được hỗ trợ là từ ‘-838:59:59’ đến ‘838:59:59’ |
YEAR | Một năm ở định dạng bốn chữ số. Các giá trị được phép ở định dạng bốn chữ số: 1901 đến 2155 và 0000. MySQL 8.0 không hỗ trợ năm ở định dạng hai chữ số. |
Kiểu dữ liệu không gian (Spatial Data Types)
MySQL có hỗ trợ nhiều loại kiểu dữ liệu không gian liên quan đến đối tượng điểm, tọa độ và địa lý sau:
Kiểu dữ liệu | Mô tả |
GEOMETRY | Giá trị không gian của bất kì loại nào |
POINT | Một cặp điểm tọa độ X:Y |
LINESTRING | Một đường cong |
POLYGON | Một đa giác |
GEOMETRYCOLLECTION | Một danh sách các GEOMETRY |
MULTILINESTRING | Một danh sách các đường cong |
MULTIPOINT | Một danh sách các điểm tọa độ X:Y |
MULTIPOLYGON | Một danh sách các đa giác |