Kiểu dữ liệu trong MySQL cho biết loại dữ liệu mà cột lưu trữ, từ đó có thể truy vấn, tính toán theo giá trị của dữ liệu. MySQL có các loại (kiểu dữ liệu) cơ bản sau:

Kiểu dữ liệu số nguyên trong MySQL

Kiểu Độ dài (byte) Giá trị lưu trữ
TINYINT 1 -128 đên 128 (số nguyên có dấu) hoặc 0 ... 255 (số nguyên không dấu)
SMALLINT 2 -32768 ... 32767 (số nguyên có dấu) hoặc 0 ... 65535 (số nguyên không dấu)
MEDIUMINT 3 -8388608 ... 8388607 (số nguyên có dấu) hoặc 0 ... 16777215 (số nguyên không dấu)
INT 4 -2147483648 ... 2147483647 (số nguyên có dấu) hoặc 0 ... 4294967295 (số nguyên không dấu)
BIGINT 8 -9223372036854775808 ... 9223372036854775807 (số nguyên có dấu) hoặc 0 ... 18446744073709551615 (số nguyên không dấu)

Kiểu dữ liệu số thực dấu chấm động trong MySQL

Kiểu Độ dài (byte) Giá trị lưu trữ
FLOAT 4 -3.402823466E+38 ... -1.175494351E-38 (có dấu) hoặc 1.175494351E-38 ... 3.402823466E+38 (không dấu)
DOUBLE 8 -1.7976931348623157E+ 308 ... -2.2250738585072014E- 308(có dấu) hoặc 0 và 2.2250738585072014E-308 ... 1.7976931348623157E+ 308 (không dấu)

DOUBLE và FLOAT là kiểu biểu diễn số thực dấu chấm động (gần chính xác số thực), float dùng 4 byte còn double có độ chính xác gấp đôi (dùng 8 byte). Ngoài ra MySQL cho phép dùng cú pháp DOUBLE(M,D) và FLOAT(M,D) với M là phần số nguyên (số chữ số) và D là phần thập phân - số chữ số sau dấu chấm

Kiểu dữ liệu số thực dấu chấm cố định DECIMAL trong MySQL

DECIMAL : Số thực dấu chấm cố định đó là số thực nhưng số con số sau dấu chấm - phần thập phân là cố định, ví dụ các số có hai số phần thập phân, trong các phép toán nó không làm tròn (biểu diễn gần đúng) như float, double nên nó chính xác hơn (ví dụ nếu float thì 0.1 + 0.2 có thể là 0.300000001 còn với DECIMAL nó sẽ là 0.30). Trong MySQL các số dạng này biểu diễn bởi kiểu dữ liệu DECIMAL và NUMERIC, nó được biểu diễn cho các số chính xác như tiền tệ. MySQL cũng dùng cú pháp DECIMAL(M,D) để xác định rõ phần nguyên và thập phân.

Kiểu dữ liệu DATE, TIME, DATETIME, TIMESTAMP, YEAR trong MySQL

Kiểu Mô tả Định dạng hiện thị Giá trị lưu trữ
DATETIME Lưu trữ đủ thông tin năm-tháng-ngày-giờ-phút-giây YYYY-MM-DD HH:MM:SS '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'
DATE Lưu trữ đủ thông tin năm-tháng-ngày YYYY-MM-DD '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'
TIMESTAMP Lưu trữ thời gian (năm-tháng-ngày-giờ-phút-giây) của timezone hiện tại được convert về UTC. Khi truy vấn đọc thì tự động convert về timezone hiện tại(timezone hiện tại thường là timezone của Server). Như vậy cùng một giá trị TIMESTAMP, nhưng tùy thuộc vào timezone của server mà giá trị đọc được có thể khác nhau. YYYY-MM-DD HH:MM:SS '1970-01-01 00:00:01' UTC đến '2038-01-19 03:14:07' UTC
YEAR Sử dụng 1 byte để lưu trữ năm YYYY 1901 tới 2155 và giá trị 0000

Kiểu dữ liệu chuỗi ký tự trong MySQL

Lưu trữ dữ liệu chuỗi MySQL có các kiểu dữ liệu: CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, SET

Kiểu Mô tả
CHAR(n) Kiểu dữ liệu char trong MySQL lưu trữ chuỗi có chiều dài cố định (n ký tự từ 0 - 255, do bạn chỉ định khi tạo bảng, mặc định char thì dài 1), nó luôn sử dụng cùng một lượng bộ nhớ để lưu trữ cho mỗi chuỗi (kể cả ít ký tự hơn, nếu sử dụng ít hơn thì ở cuối là khoảng trắng), tuy vậy khi đọc khoảng trắng ở phần cuối tự loại bỏ.
VARCHAR(n) Kiểu dữ liệu varchar trong MySQL lưu trữ chuỗi có chiều dài tối đa n (n ký tự từ 0 - 65535, do bạn chỉ định khi tạo bảng, mặc định varchar thì dài 80), tùy thuộc vào độ dài lưu trữ của từng chuỗi thì nó sẽ sử dụng lượng bộ nhớ phù hợp để lưu trữ (khác char ở trên), chuỗi bạn lưu trữ thế nào thì đọc ra như thế (kể cả khoảng trắng ở cuối nếu có).
BINARY(n) Giống CHAR, nhưng chuỗi lưu trữ ở dạng nhị phân (các byte của chuỗi). Dữ liệu chuỗi muốn lưu trữ bạn phải chuyển thành mảng byte để lưu, hoặc chính là các byte của một file nhị phân.
VARBINARY(n) Giống VARCHAR, nhưng chuỗi lưu trữ ở dạng nhị phân.
BLOB Chứa các đối tượng nhị phân lớn (ví dụ file hình ảnh). Giá trị lưu trữ là chuỗi nhị phân. BLOB chia thành bốn kiểu theo khả năng lưu trữ tối đa gồm: TINYBLOB - 255 byte, BLOB - 65535 byte, MEDIUMBLOB - 16777215 byte, LONGBLOB - 4294967295 byte.
TEXT Chứa chuỗi dài. Giá trị lưu trữ là chuỗi theo bộ ký tự (bảng mã ASCII) giống char, varchar. Có bốn kiểu theo độ dài chuỗi lưu trữ tối đa: TINYTEXT - 255 ký tự; TEXT - 65535 ký tự; MEDIUMTEXT - 16777215 ký tự; LONGTEXT - 4294967295 ký tự.
ENUM Kiểu ENUM trong MySQL (liệt kê), nó lưu trữ giá trị là một chuỗi, nhưng giá trị chuỗi phải thuộc một danh sách cho phép được liệt kê khi tạo bảng. Ví dụ kiểu ENUM('NAM','NỮ') thì cột đó chỉ được lưu chuỗi có giá trị bằng 'NAM' hoặc 'NỮ'.
SET Giống ENUM, nhưng cột có thể không chứa giá trị nào, hoặc chứa nhiều chuỗi có trong SET.

Đăng ký nhận bài viết mới